WO2008083277A9 - Portable multi-platform booting systems and architectures - Google Patents

Portable multi-platform booting systems and architectures Download PDF

Info

Publication number
WO2008083277A9
WO2008083277A9 PCT/US2007/089050 US2007089050W WO2008083277A9 WO 2008083277 A9 WO2008083277 A9 WO 2008083277A9 US 2007089050 W US2007089050 W US 2007089050W WO 2008083277 A9 WO2008083277 A9 WO 2008083277A9
Authority
WO
WIPO (PCT)
Prior art keywords
architectures
memory
architecture
computer
boot
Prior art date
Application number
PCT/US2007/089050
Other languages
French (fr)
Other versions
WO2008083277A1 (en
Inventor
Paul Mcavoy
Original Assignee
San Disk Corp
Paul Mcavoy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/618,872 external-priority patent/US7925875B2/en
Priority claimed from US11/618,870 external-priority patent/US20080162916A1/en
Application filed by San Disk Corp, Paul Mcavoy filed Critical San Disk Corp
Priority to CN200780044916.5A priority Critical patent/CN101548265B/en
Publication of WO2008083277A1 publication Critical patent/WO2008083277A1/en
Publication of WO2008083277A9 publication Critical patent/WO2008083277A9/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • G06F9/44542Retargetable

Definitions

  • the present application relates generally to the field of computer systems, and more particularly to a system and method for multi- architecture bootstrapping from a removable storage device.
  • a "bootstrap” (or “boot”) program is automatically launched, to permit the CPU to begin execution of other software.
  • the boot program uses data from the master boot record, which in a PC architecture is normally stored in sector 1 (a 512-byte area) of the drive where boot files are located. While executing, the master boot record loads the initial system files from disk into memory. After all operating system files have been loaded, the bootstrap program launches the operating system.
  • the bootstrap program launches the CPU on execution of the primary operating system software; depending on how the system has been set up, the boot software may direct program execution into Vista, OS/X, Unix, or another operating system. This is normally automatic and predetermined, but is manually user-selectable in some systems. At this point the bootstrap program's job is over. The operating system then performs whatever initialization steps it has been configured for, and eventually the computer becomes available for the user to launch whatever applications are desired.
  • the first personal computers would boot from a removable disk (floppy disk), but attempts have also been made to permit booting from a nonvolatile memory module. See U.S. application 07/901,645, which is hereby incorporated by reference.
  • Multi-platform booting is an even more difficult problem.
  • a bootstrap program has to know what files must be loaded into memory before launching the operating system, and will usually also have to know about constraints on file sequencing and memory locations. This varies widely depending on operating system and hardware environment. For example, as of 2006 an SD card can be inserted into a wide variety of systems, but a significant portion of those systems will not execute IA32 instructions. ARM and PowerPC systems are just two alternative architectures in wide use which are not IA32 compatible. Bootstrap type behavior on these systems cannot be achieved unless compatible binary files are provided for those platforms.
  • BIOS extension U.S. Patent No. 5,291,585, which is hereby incorporated by reference, describes a personal computer with BIOS extensions. These BIOS extensions are indexed by a self-describing feature table, which is also stored in the BIOS extension.
  • the present application discloses new approaches to multi-platform booting from a portable storage module.
  • the portable module carries a table (or other data structure) which redirect various architectures and operating systems to different locations, within the portable module, to access the appropriate binary files for booting.
  • the system's boot code preferably knows to look at the module's table, and branch appropriately.
  • the disclosed embodiments can also help prevent boot incompatibility, i.e. hanging or other bad results due to incorrect boot files.
  • a particular advantage of the embodiments which use SD cards is that the SD card spec is defined with a disk-like file structure - so that a PC-bootable module can be achieved easily by adding MBR (master boot record) elements into the SDcard's existing organization. • A further advantage is backward compatibility with existing PC architectures, while allowing many new applications to new architectures. This is particularly useful for applications where users will expect to shuttle their activities between a portable device and a computer.
  • Another advantage of the disclosed inventions is for easy and secure firmware update in mobile systems, or in devices (such as appliancesO with substantially no permanent storage.
  • Figure 1 is a block diagram of a computer system.
  • Figure 2 shows an example of a table for identifying memory locations of master boot records for different types of architectures.
  • Figure 3 is a flowchart illustrating a process for bootstrapping a computer system from a removable device capable of bootstrapping computer systems with different architectures.
  • Figure 4 shows a general exemplary block diagram of a removable storage device which includes a sample embodiment.
  • a removable nonvolatile memory includes a table stored in a predefined memory location in the removable nonvolatile memory, the table identifying a plurality of memory locations within the nonvolatile memory, and a plurality of bootstrap codes associated with a plurality of computer architectures stored in the plurality of memory locations associated with the table.
  • the predefined memory location is known by a basic input/output system (BIOS) of a computer system coupled to the removable nonvolatile memory and the table includes a plurality of identifiers each unique to the plurality of computer architectures and associated plurality of memory locations.
  • the identifiers can be indexes and the plurality of bootstrap code can comprise two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, and/or Sparc64.
  • the predefined memory location can be a first logical block address (LBA) and the predefined memory location can be where a master boot record would be located in accordance with a type of architecture of a computer system coupled to the removable nonvolatile memory.
  • the master boot record can be located in one of the plurality of memory locations within the removable nonvolatile memory.
  • a method executed on a computer system includes executing a basic input/output system (BIOS) to locate a predefined memory location in a removable nonvolatile memory coupled to the BIOS, the predefined memory location having a table that identifies a plurality of memory locations within the removable nonvolatile memory where a plurality of bootstrap code for a plurality of computer architectures are stored. Executing the BIOS to determine from the table a location of the bootstrap code associated with an identifier associated with a type of architecture of the computer system, and executing the BIOS to load the bootstrap code in to the computer system and execute the bootstrap code.
  • BIOS basic input/output system
  • the table preferably comprises a plurality of identifiers each unique to the plurality of computer architectures and associated plurality of memory locations and the identifiers can be indexes.
  • the BIOS code can be executed to copy the table to the computer system and search the table, while the removable nonvolatile memory can be a SD Memory Card, a Compact Flash, a Hard Drive, or an Optical Disk.
  • the plurality of bootstrap code can include two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, and/or Sparc64.
  • the predefined memory location can be a first logical block address (LBA) and the predefined memory location can be where a master boot record would be located in accordance with the type of architecture of the computer system.
  • the master boot record can be located in one of the plurality of memory locations within the removable nonvolatile memory.
  • a computer system includes a read only memory (ROM) having a basic input/output system (BIOS) code stored therein, where the BIOS code has knowledge of an identifier associated with a type of architecture of the computer system and knowledge of a predefined memory location having a table that identifies a plurality of memory locations within a removable storage device where a plurality of bootstrap code for a plurality of computer architectures are stored.
  • ROM read only memory
  • BIOS basic input/output system
  • An interface is coupled to the ROM and a processor coupled to the interface, the processor executes the BIOS code to detect the removable storage device and if detected, locates the predefined memory location, determines from the table a location of bootstrap code associated with the identifier, loads the bootstrap code in to the computer system and executes the bootstrap code.
  • the table includes a plurality of identifiers each unique to the plurality of computer architectures and associated plurality of memory locations, where the identifiers can be indexes.
  • the processor can execute the BIOS code to copy the table to the computer system and search the table and the removable storage device can be a SD Memory Card, a Compact Flash, a Hard Drive, or an Optical Disk.
  • the plurality of bootstrap code can include two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, and/or Sparc64.
  • the predefined memory location can be a first logical block address (LBA) and the predetermined memory location can be where a master boot record would be located in accordance with the type of architecture of the computer system.
  • the master boot record can be located in one of the plurality of memory locations within the removable storage device.
  • a removable nonvolatile memory includes a table stored in a predefined memory location in the removable nonvolatile memory, the table identifying a plurality of memory locations within the nonvolatile memory, and a plurality of applications associated with a plurality of computer architectures stored in the plurality of memory locations associated with the table.
  • the predefined memory location is known by the computer system coupled to the removable nonvolatile memory and the table includes a plurality of identifiers each unique to the plurality of application associated with the types of computer architectures.
  • the identifiers can be indexes.
  • the plurality of applications can include two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, Sparc64, Palm, Windows CE and and/or Windows.
  • the applications can be playback music applications of various types of computer architecture each of which is capable of executing data files stored on the removable nonvolatile memory. For example, music files.
  • a system and method enables a removable storage device to provide appropriate or compatible master boot records and bootstrap programs to bootstrap various computer systems having various types of architectures.
  • Figure 1 is a diagram of a hardware and operating environment in conjunction with which embodiments of the inventions may be practiced.
  • the description of Fig. 1 is intended to provide a general description of suitable computer hardware and a suitable computing environment in conjunction with which the inventions may be implemented.
  • Computer system 10 and removable storage device 35 embody the principles of the inventions where removable storage device 35 provides the appropriate bootstrap code for the particular type of architecture of computer system 10 (e.g. IA32, Intel® architecture) and for various other types of computer architectures, such as Arm®, Alpha® and Sparc®, to name a few.
  • the removable storage device 35 can be removed from computer system 10 and operatively coupled to other systems with different architectures, where removable storage device 35 can provide the compatible master boot records and bootstrap programs for the different types of computer architectures.
  • a master boot record includes bootstrap code, which is a boot loader or a program that initiates an operating system kernel. Both are programs, that when executed by a processor, load an operating system into system memory.
  • Example boot loaders are Grand Unified Boot Loader (GRUB) or System Commander.
  • the master boot record and bootstrap program are considered to be boot code.
  • the exemplary hardware and operating environment of Fig. 1 for implementing the inventions includes a programmable device in the form of a computer system 10, including a processor 15, a system memory 25, and a system bus 30 that operatively couples various system components including system memory 25 to processor 15.
  • a processor 15 There may be only one or there may be more than one processor 15, such that the processor of computer system 10 comprises a single central-processing unit (CPU), or a plurality of processing units, commonly referred to as a parallel processing environment.
  • the computer system 10 may be a conventional computer, or any other type of computer; the inventions are not so limited.
  • the system bus 30 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
  • the system memory 25 may also be referred to as simply the memory, and includes read only memory (ROM) 40 and random access memory (RAM) 45.
  • ROM read only memory
  • RAM random access memory
  • a basic input/output system (BIOS) program 50 is stored in ROM 40 and contains code comprising basic routines or programs that help to transfer information between elements within the computer system 10, such as during start-up, discussed in detail below.
  • the computer system 10 further includes a hard drive 55 and an optical drive 65, such as a CD ROM or other optical media.
  • the hard drive 55 and optical drive 65 are connected to the system bus 30 by a hard drive interface and an optical drive interface, respectively.
  • the drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for computer system 10. It should be realized that any type of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROMs), and the like, may be used in the exemplary operating environment.
  • a number of program modules may be stored on the hard drive 55, optical drive 65, ROM 40, or RAM 45, including an operating system 70, one or more application programs 75, other program modules 80, and program data 85.
  • removable storage device 35 is a hard drive conforming to the Logical Block Addressing (LBA) partitioning scheme for PC computers.
  • LBA Logical Block Addressing
  • included at sector 1 at offset (0x3E) of removable storage device 35 is a table 45, and at other block locations master boot records 60-1 to 60-y, where y is a number greater than 1.
  • Table 45 identifies various memory locations within removable storage device 35 where various master boot records 60-1 to 60-y compatible with various types of computer architectures (e.g. IA32, Alpha®, Sparc®, to name a few) are located.
  • the architecture type of computer system 10 is the Intel® platform - Windows® operating system.
  • At least one master boot record 60-1 to 60-y stored in removable storage device 35 is compatible with the Intel® - Windows® architecture.
  • the reaming master boot records are compatible with the types of computer architectures that removable storage device 35 is intended to support.
  • Figure 2 shows an exemplary table 45 identifying various memory locations within removable storage device 35 where various master boot records compatible with various types of computer architectures are located.
  • the BIOS program 50 stored in ROM 40 of computer system 10, and all other BIOS' stored in computers intended to interface with removable storage device 35, are compatible with table 45.
  • exemplary table 45 has two columns, an identifier column 205 and an architecture column 210.
  • Identifier column 205 enumerates each identifier (denoted 205-1 to 205 -x) for each type of computer system architecture, where x is a number greater than 1. In this particular example, x equals 17, because there are 17 different architectures that removable storage device 35 can support.
  • the identifiers function as indexes and consist of unique 8 byte entries that represents unique locations in identifier column 205.
  • Each type of computer system architecture is assigned a unique identifier that identifies the type of computer system architecture.
  • This identifier is stored, equipped or "burned" into the ROM of each computer system intending to interface with a removable storage device designed in accordance with the inventions.
  • the identifier is operable with the BIOS program of the computer system of which it resides. It is also used to identify the type of architecture of its computer system.
  • an exemplary identifier "8686” is assigned to the Intel® - Windows® architecture. Identifier "8686” is "burned” into ROM 40 and made part of the BIOS. It should be realized that all other computer systems having the Intel® - Windows® architecture will have the same identifier "8686” "burned” into their ROMs. Of course, a computer system with a different type of architecture, such as Alpha®, will have a different identifier, for example "2218,” “burned” into its ROM. As mentioned above, the identifier represents a particular type of computer architecture or platform. Thus, the type of architecture of the computer system can be determined from reading the identifier. Each identifier is also associated with a corresponding entry in an architecture column 210 of table 45.
  • the table (45) includes architecture column 210, which enumerates the memory locations (denoted 210-1 to 210-x) for the master boot records for the various computer architectures that removable storage device 35 supports. As mentioned above, x equals 17. It should be realized that although there is one identifier for each of the 17 different architectures, removable storage device 35 does not have to store nor make available 17 master boot records. Thus, table 45 may indicate an identifier "7999" assigned to Arm® architecture, but it may be desired that removable storage device 35 not have the compatible master boot record stored within, for example to save memory space, which is discussed in more detail later.
  • the memory location entries in architecture column 210-1 to 210- 17 are block addresses indicating where master boot records for the various types of architectures are located in removable storage device 35. Every entry in architecture column 210 is 6 bytes where the first four bytes specify a Logical Block Address (LBA) offset.
  • LBA Logical Block Address
  • the LBA offset indicates where the master boot record for a specific architecture resides in removable storage device 35.
  • the other 2 bytes specify the length of the binary as a number of LBA sectors.
  • Removable storage device 35 utilizes the Logical Block Address scheme, which among other things, includes translating logical block address locations to physical block addresses locations on the removable storage device.
  • identifiers are associated with memory locations (denoted 210-1 to 210-17) where master boot records and bootstrap programs are stored.
  • table 45 can be used to locate a compatible or corresponding master boot record and bootstrap program (e.g. boot loader) stored in removable storage device 35.
  • removable storage device 35 does not have to store nor make available 17 master boot records.
  • a NULL or "0" values are used to specify an empty entry in architecture column 210 corresponding to the identifier of the type of architecture that is not supported. For example, if it is desired that removable storage device 35 not support Cris® architecture, then its identifier "7853" would be associated with a NULL or "0" values in architecture column 210, rather than with a memory location. Further, removable storage device 35 would not store the compatible master boot record for the Cris® architecture, thus saving memory space.
  • Cris® architecture memory location (denoted 210-3) would have a "0000" entry.
  • the first entry in table 45 is an index "0" (denoted 220) which has a corresponding value x86 HLT (0xF4) (denoted 215).
  • the x86 HLT (0xF4) opcode is a halt instruction that prevents older Intel® architectures from erroneously executing any master boot records in removable storage device 35.
  • FIG. 3 shows a flowchart of a method performed by computer system 10 and removable storage device 35, according to an exemplary embodiment.
  • BIOS program 50 When computer system 10 is turned on, processor 15 goes to a memory location in ROM 40 and begins to execute BIOS program 50 (block 305).
  • BIOS program 50 conducts a power-on self-test (POST) and a search for a master boot record.
  • BIOS program 50 has an understanding of the devices connected to and part of computer system 10, for example optical drive 65, hard drive 55, and a Universal Serial Bus operatively coupled to interface 90.
  • BIOS program 50 is able to interact with and detect the devices. For example, interact with and detect removable storage device 35.
  • a BIOS program looks at the sector 1 (a 512-byte area), LBA#0 of a device where the master boot record is stored and at offset 0x3E (448 byte area) where bootstrap code is stored.
  • the BIOS program copies the master boot record into RAM and passes control to the master boot record.
  • the master boot record takes control of its computer system and loads code until it is no longer needed.
  • table 45 is stored in sector 1 of removable storage device 35, rather than the master boot record.
  • the master boot record and bootstrap code are relocated to one of the memory locations 60-1 to 60-y in removable device 35 in accordance with table 45, where y equals the number of master boot records stored in removable storage device 35.
  • the master boot record and bootstrap code are stored among other master boot records and bootstrap codes, each of which are compatible with different types of computer system architectures. Referring to Fig. 2, the memory location of the master boot record and bootstrap code for an Windows® architecture is XXX (denoted by 210-4).
  • BIOS program 50 reads table 45 located at sector 1 and uses the identifier "burned" into ROM 40 to find the location of the master boot record and bootstrap code compatible with the architecture of computer system 10. Further, BIOS program 50 is configured to select information and implement options from table 45. Alternatively, information and options in table 45 can be selected and implemented via a program stored in ROM 40 working with BIOS program 50.
  • BIOS program 50 identifies removable storage drive 35 and accesses table 45 located at a predefined memory location (block 310).
  • the predefined memory location is sector 1 (a 512-byte area) and more specifically offset 0x3E (a 448 byte area) of removable storage device 35.
  • BIOS program 50 locates identifier "8686" (denoted 205-4) in table 45 (block 315).
  • the identifier functions as an index.
  • BIOS program 50 is based on the Intel® - Windows® architecture, which was assigned an "8686" identifier.
  • BIOS program 50 reads the memory location entry in architecture column 210 associated with identifier "8686" (block 320).
  • the entry in architecture column 210 associated with identifier "8686” is XXXX (denoted 210-4), which specifies the memory location where the compatible master boot record is located in removable storage device 35.
  • removable storage device 35 translates the logical block address to a physical block address, which indicates where on the media the compatible master boot record is located.
  • BIOS program 50 accesses the memory location at LBA offset xxx and copies the master boot record to RAM 45 (block 325).
  • Computer system 10 executes the master boot record and passes control to the master boot record (block 330).
  • the master boot record takes control of computer system 10 and continues to loads code until it is no longer needed, which includes loading the computer system's operating system from hard drive 55 into RAM 45.
  • removable storage device 35 can be disconnected from computer system 10, operatively connected to a second computer system with a different architecture and bootstrap the second computer system.
  • FIG. 4 shows a general exemplary block diagram of removable storage device 35 in accordance with the method and system described above.
  • removable storage device 35 is operatively coupled to computer system 410 which includes the Intel® architecture.
  • computer system 410 When computer system 410 is turned on, its BIOS program accesses its identifier in table 45. From table 45, the BIOS program determines the location of its master boot record 430, copies the master boot record and stores it in RAM in computer system 410, where it is executed.
  • removable storage device 35 is operatively coupled to computer system 420 which includes the Alpha® architecture.
  • computer system 420 When computer system 420 is turned on, its BIOS program accesses its identifier in table 45. From table 45, the BIOS program determines the location of its master boot record 440, copies the master boot record and stores it in RAM in computer system 420, where it is executed.
  • the removable storage device can be memory, such as a SD Memory Card, Compact Flash Card, MultiMedia Card or other removable card or memory device and readily accommodate the principles of the inventions.
  • the BIOS program in ROM 40 locates table 45 stored in removable storage device 35 and loads table 45 into RAM 45.
  • the BIOS program iterates through the table searching for an identifier matching the identifier stored in ROM 40.
  • the identifiers represent the various types of computer architectures, but in this example the identifiers simply identify the different types of architectures, not function as indexes.
  • the BIOS program has to iterate through table 45 searching for the appropriate identifier, rather than going specifically to the appropriate identifier in table 45, as in the case with the identifier that functions as an index.
  • the BIOS program After the identifier is located in table 45, the BIOS program reads the memory location associated with the identifier and accesses the appropriate master boot record located in removable storage device 35. The BIOS program copies the master boot record from removable storage device 35 and loads it into RAM 45 where processor 15 executes the master boot record.
  • the identifiers in this embodiment do not function as indexes.
  • the table only stores identifiers that have master boot records stored in removable device 35, resulting in no empty entries in the table and a smaller table. For example, if there is no intention to use removable storage device 35 with a computer system having the Arm® architecture, then not only is there no Arm® compatible master boot record stored in removable storage device 35, there is no Arm® identifier or memory location in the table.
  • the BIOS program iterates through each identifier in the table to locate the identifier for the correct architecture.
  • a computer system is running and an operating system is already loaded.
  • multiple applications are stored on a removable storage device (e.g. SD Card).
  • a removable storage device e.g. SD Card
  • 3 playback music applications are stored on the removable storage device, each one compatible with a different computer architecture.
  • An auto-run program having knowledge of the identifier of the computer system and the table in the removable storage device, locates the memory location where the playback music application associated with the identifier is located. Subsequently, the auto-run program loads the compatible playback music application on the computer system, where the application can play the content (data files, music files) stored on the removable storage device.
  • Example computer system architectures are Palm®, Windows CE® and Windows®.
  • system is disclosed in a form in which various functions are performed by discrete functional blocks.
  • any one or more of these functions could equally be embodied in an arrangement in which the functions of any one or more of those blocks are realized by one or more appropriately programmed processing devices running software programs stored in various mediums or having functions programmed in firmware.
  • inventions may also be embodied in a configured computer program storage medium (e.g., CD-ROM, hard disk, RAM) which contains software to perform methods.
  • a configured computer program storage medium e.g., CD-ROM, hard disk, RAM
  • An electronic system comprising; at least one control processor; and a portable data module which is operatively connected to be accessible to said control processor; said portable data module containing boot codes for at least two mutually incompatible architectures; said portable data module also containing a data structure which indicates which of said incompatible architectures require which of said boot codes; whereby said control processor can look at said data structure, at boot, and continue the boot process using whichever of said boot codes is required by said control processor's architecture.
  • An electronic system comprising; at least one control processor; a portable data module which is temporarily connected, and thereby temporarily accessible to said control processor; said portable data module containing boot codes for at least two mutually incompatible architectures, and also a data structure which indicates which architectures require which of said boot codes; and a stored initial instruction sequence, which said control processor executes upon power-up, which allows said control processor to use said data structure to continue the boot process by using whichever of said boot codes is required by said control processor's architecture.
  • a computer system comprising: a read only memory (ROM) having a basic input/output system (BIOS) code stored therein, where the BIOS code has knowledge of an identifier associated with a type of architecture of the computer system and knowledge of a predefined memory location having a table that identifies a plurality of memory locations within a removable storage device where a plurality of bootstrap code for a plurality of computer architectures are stored; an interface coupled to the ROM; and a processor coupled to the interface, the processor executes the BIOS code to detect the removable storage device and if detected, locates the predefined memory location, determines from the table a location of bootstrap code associated with the identifier, loads the bootstrap code in to the computer system and executes the bootstrap code.
  • BIOS basic input/output system
  • a removable nonvolatile memory comprising: a table stored in a predefined memory location in the removable nonvolatile memory, the table identifying a plurality of memory locations within the nonvolatile memory; and a plurality of applications associated with a plurality of computer architectures stored in the plurality of memory locations associated with the table.
  • a method for operating a programmable system comprising the actions of: a) at startup, retrieving boot files for execution from a portable data module, at an address specified by a data structure which indicates different locations for different boot files, depending on the architecture type of the system; and b) using said boot files to automatically launch the system into operation.
  • a method for operating a programmable system comprising the actions of: powering up the system, using an initial instruction sequence stored in the host system; and under control of said initial instruction sequence, loading some but not others of multiple boot files, from a location in a portable data module specified by a data structure in the portable data module which specifies different locations for different boot files, depending on the architecture type of the system; and using said boot files to automatically launch the system into operation.
  • a method executed on a computer system comprising: executing a basic input/output system (BIOS) to locate a predefined memory location in a removable nonvolatile memory, the predefined memory location having a table that identifies a plurality of memory locations within the removable nonvolatile memory where a plurality of bootstrap code for a plurality of computer architectures are stored; executing the BIOS to determine from the table a location of the bootstrap code associated with an identifier associated with a type of architecture of the computer system; and executing the BIOS to load the bootstrap code into the computer system and execute the bootstrap code.
  • BIOS basic input/output system
  • Methods, systems, and architectures for multiplatform booting from a portable module with nonvolatile memory Preferably the portable module carries the correct binaries for booting multiple system architectures, together with a table from which the host, at power-up, can calculate the correct offset to load the appropriate binary.
  • the system which boots from the portable module does not have to be a computer in the strict sense of the word, but can also be a game machine, PDA, or other complex system capable of executing programs.
  • the portable module does not have to be an SD or MS memory unit, but can conform to any of a wide range of physical and electronic specifications for removable memory, including specifications which do not yet exist.
  • a different version of the table is included at a different location, in addition to or instead of the table location described above. It is also possible that booting from the portable module may be manually assisted. For example, a compact unit may allow a user interaction to set up a state which forces the loader program to allow booting from the location specified in the data table in an attached portable module, even though the normal boot sequence would not branch to the portable module.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Methods, systems, and architectures for multiplatform booting from a portable module with nonvolatile memory. Preferably the portable module carries the correct binaries for booting multiple system architectures, together with a table from which the host, at power-up, can calculate the correct offset to load the appropriate binary.

Description

Portable Multi-Platform Booting Systems and
Architectures
BACKGROUND
The present application relates generally to the field of computer systems, and more particularly to a system and method for multi- architecture bootstrapping from a removable storage device.
In order to mediate between application programs and the underlying hardware, several layers of software and firmware structure are used. When power is first applied to a computer, the various hardware elements (chips and subsystems) will each have their own internal procedures (reset procedures) to regain a stable and known state. However, at some point (if the hardware is intact), these reset procedures will have ended, and at this point the CPU performs various important overhead tasks. These include, for example, surveying the system configuration, performing sanity checks on system hardware, and permitting the user to branch into an NVRAM configuration program under software control. This phase of operation is generally referred to as "POST" (Power-On-Self-Test).
After POST, a "bootstrap" (or "boot") program is automatically launched, to permit the CPU to begin execution of other software. The boot program uses data from the master boot record, which in a PC architecture is normally stored in sector 1 (a 512-byte area) of the drive where boot files are located. While executing, the master boot record loads the initial system files from disk into memory. After all operating system files have been loaded, the bootstrap program launches the operating system. The bootstrap program launches the CPU on execution of the primary operating system software; depending on how the system has been set up, the boot software may direct program execution into Vista, OS/X, Unix, or another operating system. This is normally automatic and predetermined, but is manually user-selectable in some systems. At this point the bootstrap program's job is over. The operating system then performs whatever initialization steps it has been configured for, and eventually the computer becomes available for the user to launch whatever applications are desired.
The above description refers to the world of computers, but many low-power portable electronics systems present similar issues. As such systems become more common and more versatile, their architecture has some tendency to become more diverse. (The demands of very low power consumption and customized I/O tend to produce diversity.) Many of these devices have processor and/or memory specifications comparable to a personal computer of a decade or so previously, and some have much more. Many of these portable electronics designs are designed around one primary application, with other features added on. For example, PDA (personal digital assistant) phone designs may show some differences in design, depending on whether the product (or company) is based in phones or in PDAs. The combination of expensive compute power and battery energy is a powerful force for functional convergence, but many portable electronics market segments still show signs of their more specific origins. Various complex portable electronics functions include game machines, telephones, music and movie players, cameras and video recorders, PDAs, position sensing, cardiac monitors, hybrids of these, and possibly also such newer functions as image-understanding security monitors, face recognition software, and collision avoidance. Thus an extreme diversity of hardware will continue for the near future at least, even while the potential for convergence increases.
Many developments in portable electronics have been driven by content ownership. Music, videos, and games are frequently pirated, and the gap between the unit price paid by conscientious buyers and the average unit price received by copyright owners is a tax on development. Thus, extreme efforts have been made to develop nonvolatile memory modules which would be impossible to subvert. Advanced memory modules, such as those marketed by SanDisk, commonly contain a processor which can execute cryptographic algorithms invisibly to the host machine, so that the protected content cannot be accessed directly.
Even greater security could be provided by a controlled software environment in the host. This is not easily achieved by a program in a nonvolatile memory module, but could be achieved if the system is booted from the nonvolatile memory module. In this case the boot program can restrict loading of nonstandard operating system components, and/or load monitor processes in addition to the standard operating system components.
The first personal computers would boot from a removable disk (floppy disk), but attempts have also been made to permit booting from a nonvolatile memory module. See U.S. application 07/901,645, which is hereby incorporated by reference.
Multi-platform booting is an even more difficult problem. A bootstrap program has to know what files must be loaded into memory before launching the operating system, and will usually also have to know about constraints on file sequencing and memory locations. This varies widely depending on operating system and hardware environment. For example, as of 2006 an SD card can be inserted into a wide variety of systems, but a significant portion of those systems will not execute IA32 instructions. ARM and PowerPC systems are just two alternative architectures in wide use which are not IA32 compatible. Bootstrap type behavior on these systems cannot be achieved unless compatible binary files are provided for those platforms.
U.S. Patent No. 5,291,585, which is hereby incorporated by reference, describes a personal computer with BIOS extensions. These BIOS extensions are indexed by a self-describing feature table, which is also stored in the BIOS extension.
Summary
The present application discloses new approaches to multi-platform booting from a portable storage module. The portable module carries a table (or other data structure) which redirect various architectures and operating systems to different locations, within the portable module, to access the appropriate binary files for booting.
For full booting compatibility, the system's boot code preferably knows to look at the module's table, and branch appropriately. However, even if full booting compatibility is not achieved in all architectures, the disclosed embodiments can also help prevent boot incompatibility, i.e. hanging or other bad results due to incorrect boot files.
The disclosed innovations, in various embodiments, provide one or more of at least the following advantages:
• An even greater variety of applications can be based in portable data modules. The benefits of cross-platform compatibility will open many new markets for porting desired functions over to any platform desired by users.
• Even greater security can be assured for portable data modules which are compatible with many platforms, including complex electronic systems which are not configured as personal computers.
• A particular advantage of the embodiments which use SD cards is that the SD card spec is defined with a disk-like file structure - so that a PC-bootable module can be achieved easily by adding MBR (master boot record) elements into the SDcard's existing organization. • A further advantage is backward compatibility with existing PC architectures, while allowing many new applications to new architectures. This is particularly useful for applications where users will expect to shuttle their activities between a portable device and a computer.
• Another advantage of the disclosed inventions is for easy and secure firmware update in mobile systems, or in devices (such as appliancesO with substantially no permanent storage.
BRIEF DESCRIPTION OF THE DRAWINGS
The disclosed inventions will be described with reference to the accompanying drawings, which show important sample embodiments of the inventions and which are incorporated in the specification hereof by reference, wherein:
Figure 1 is a block diagram of a computer system.
Figure 2 shows an example of a table for identifying memory locations of master boot records for different types of architectures.
Figure 3 is a flowchart illustrating a process for bootstrapping a computer system from a removable device capable of bootstrapping computer systems with different architectures.
Figure 4 shows a general exemplary block diagram of a removable storage device which includes a sample embodiment.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
The numerous innovative teachings of the present application will be described with particular reference to presently preferred embodiments (by way of example, and not of limitation).
In accordance with a sample embodiment, a removable nonvolatile memory includes a table stored in a predefined memory location in the removable nonvolatile memory, the table identifying a plurality of memory locations within the nonvolatile memory, and a plurality of bootstrap codes associated with a plurality of computer architectures stored in the plurality of memory locations associated with the table.
The predefined memory location is known by a basic input/output system (BIOS) of a computer system coupled to the removable nonvolatile memory and the table includes a plurality of identifiers each unique to the plurality of computer architectures and associated plurality of memory locations. The identifiers can be indexes and the plurality of bootstrap code can comprise two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, and/or Sparc64. The predefined memory location can be a first logical block address (LBA) and the predefined memory location can be where a master boot record would be located in accordance with a type of architecture of a computer system coupled to the removable nonvolatile memory. The master boot record can be located in one of the plurality of memory locations within the removable nonvolatile memory.
In accordance with another class of embodiments, a method executed on a computer system includes executing a basic input/output system (BIOS) to locate a predefined memory location in a removable nonvolatile memory coupled to the BIOS, the predefined memory location having a table that identifies a plurality of memory locations within the removable nonvolatile memory where a plurality of bootstrap code for a plurality of computer architectures are stored. Executing the BIOS to determine from the table a location of the bootstrap code associated with an identifier associated with a type of architecture of the computer system, and executing the BIOS to load the bootstrap code in to the computer system and execute the bootstrap code.
The table preferably comprises a plurality of identifiers each unique to the plurality of computer architectures and associated plurality of memory locations and the identifiers can be indexes. The BIOS code can be executed to copy the table to the computer system and search the table, while the removable nonvolatile memory can be a SD Memory Card, a Compact Flash, a Hard Drive, or an Optical Disk. As above, the plurality of bootstrap code can include two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, and/or Sparc64. The predefined memory location can be a first logical block address (LBA) and the predefined memory location can be where a master boot record would be located in accordance with the type of architecture of the computer system. The master boot record can be located in one of the plurality of memory locations within the removable nonvolatile memory.
In accordance with another embodiment, a computer system includes a read only memory (ROM) having a basic input/output system (BIOS) code stored therein, where the BIOS code has knowledge of an identifier associated with a type of architecture of the computer system and knowledge of a predefined memory location having a table that identifies a plurality of memory locations within a removable storage device where a plurality of bootstrap code for a plurality of computer architectures are stored. An interface is coupled to the ROM and a processor coupled to the interface, the processor executes the BIOS code to detect the removable storage device and if detected, locates the predefined memory location, determines from the table a location of bootstrap code associated with the identifier, loads the bootstrap code in to the computer system and executes the bootstrap code.
The table includes a plurality of identifiers each unique to the plurality of computer architectures and associated plurality of memory locations, where the identifiers can be indexes. The processor can execute the BIOS code to copy the table to the computer system and search the table and the removable storage device can be a SD Memory Card, a Compact Flash, a Hard Drive, or an Optical Disk. Like above, the plurality of bootstrap code can include two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, and/or Sparc64. The predefined memory location can be a first logical block address (LBA) and the predetermined memory location can be where a master boot record would be located in accordance with the type of architecture of the computer system. The master boot record can be located in one of the plurality of memory locations within the removable storage device.
In yet another class of embodiments, a removable nonvolatile memory includes a table stored in a predefined memory location in the removable nonvolatile memory, the table identifying a plurality of memory locations within the nonvolatile memory, and a plurality of applications associated with a plurality of computer architectures stored in the plurality of memory locations associated with the table.
The predefined memory location is known by the computer system coupled to the removable nonvolatile memory and the table includes a plurality of identifiers each unique to the plurality of application associated with the types of computer architectures. The identifiers can be indexes. Like above, the plurality of applications can include two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, Sparc64, Palm, Windows CE and and/or Windows. The applications can be playback music applications of various types of computer architecture each of which is capable of executing data files stored on the removable nonvolatile memory. For example, music files.
In accordance with an embodiment of the present inventions, a system and method enables a removable storage device to provide appropriate or compatible master boot records and bootstrap programs to bootstrap various computer systems having various types of architectures.
Figure 1 is a diagram of a hardware and operating environment in conjunction with which embodiments of the inventions may be practiced. The description of Fig. 1 is intended to provide a general description of suitable computer hardware and a suitable computing environment in conjunction with which the inventions may be implemented.
Computer system 10 and removable storage device 35 embody the principles of the inventions where removable storage device 35 provides the appropriate bootstrap code for the particular type of architecture of computer system 10 (e.g. IA32, Intel® architecture) and for various other types of computer architectures, such as Arm®, Alpha® and Sparc®, to name a few. In accordance with the principles of the inventions, the removable storage device 35 can be removed from computer system 10 and operatively coupled to other systems with different architectures, where removable storage device 35 can provide the compatible master boot records and bootstrap programs for the different types of computer architectures. A master boot record includes bootstrap code, which is a boot loader or a program that initiates an operating system kernel. Both are programs, that when executed by a processor, load an operating system into system memory. Example boot loaders are Grand Unified Boot Loader (GRUB) or System Commander. The master boot record and bootstrap program are considered to be boot code.
The exemplary hardware and operating environment of Fig. 1 for implementing the inventions includes a programmable device in the form of a computer system 10, including a processor 15, a system memory 25, and a system bus 30 that operatively couples various system components including system memory 25 to processor 15. There may be only one or there may be more than one processor 15, such that the processor of computer system 10 comprises a single central-processing unit (CPU), or a plurality of processing units, commonly referred to as a parallel processing environment. The computer system 10 may be a conventional computer, or any other type of computer; the inventions are not so limited.
The system bus 30 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory 25 may also be referred to as simply the memory, and includes read only memory (ROM) 40 and random access memory (RAM) 45. A basic input/output system (BIOS) program 50 is stored in ROM 40 and contains code comprising basic routines or programs that help to transfer information between elements within the computer system 10, such as during start-up, discussed in detail below. The computer system 10 further includes a hard drive 55 and an optical drive 65, such as a CD ROM or other optical media. The hard drive 55 and optical drive 65 are connected to the system bus 30 by a hard drive interface and an optical drive interface, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for computer system 10. It should be realized that any type of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROMs), and the like, may be used in the exemplary operating environment. A number of program modules may be stored on the hard drive 55, optical drive 65, ROM 40, or RAM 45, including an operating system 70, one or more application programs 75, other program modules 80, and program data 85.
In an exemplary embodiment of the present inventions, removable storage device 35 is a hard drive conforming to the Logical Block Addressing (LBA) partitioning scheme for PC computers. In accordance with an embodiment of the present inventions, included at sector 1 at offset (0x3E) of removable storage device 35 is a table 45, and at other block locations master boot records 60-1 to 60-y, where y is a number greater than 1. Table 45 identifies various memory locations within removable storage device 35 where various master boot records 60-1 to 60-y compatible with various types of computer architectures (e.g. IA32, Alpha®, Sparc®, to name a few) are located. As mentioned above, in this particular embodiment of the inventions, the architecture type of computer system 10 is the Intel® platform - Windows® operating system. Thus, in order for computer system 10 to be bootstrapped by removable storage device 35, at least one master boot record 60-1 to 60-y stored in removable storage device 35 is compatible with the Intel® - Windows® architecture. The reaming master boot records are compatible with the types of computer architectures that removable storage device 35 is intended to support.
Figure 2 shows an exemplary table 45 identifying various memory locations within removable storage device 35 where various master boot records compatible with various types of computer architectures are located. The BIOS program 50, stored in ROM 40 of computer system 10, and all other BIOS' stored in computers intended to interface with removable storage device 35, are compatible with table 45. In the present embodiment of the inventions, exemplary table 45 has two columns, an identifier column 205 and an architecture column 210. Identifier column 205 enumerates each identifier (denoted 205-1 to 205 -x) for each type of computer system architecture, where x is a number greater than 1. In this particular example, x equals 17, because there are 17 different architectures that removable storage device 35 can support. The identifiers function as indexes and consist of unique 8 byte entries that represents unique locations in identifier column 205.
Each type of computer system architecture is assigned a unique identifier that identifies the type of computer system architecture. This identifier is stored, equipped or "burned" into the ROM of each computer system intending to interface with a removable storage device designed in accordance with the inventions. The identifier is operable with the BIOS program of the computer system of which it resides. It is also used to identify the type of architecture of its computer system.
In this embodiment of the present inventions, an exemplary identifier "8686" is assigned to the Intel® - Windows® architecture. Identifier "8686" is "burned" into ROM 40 and made part of the BIOS. It should be realized that all other computer systems having the Intel® - Windows® architecture will have the same identifier "8686" "burned" into their ROMs. Of course, a computer system with a different type of architecture, such as Alpha®, will have a different identifier, for example "2218," "burned" into its ROM. As mentioned above, the identifier represents a particular type of computer architecture or platform. Thus, the type of architecture of the computer system can be determined from reading the identifier. Each identifier is also associated with a corresponding entry in an architecture column 210 of table 45.
The table (45) includes architecture column 210, which enumerates the memory locations (denoted 210-1 to 210-x) for the master boot records for the various computer architectures that removable storage device 35 supports. As mentioned above, x equals 17. It should be realized that although there is one identifier for each of the 17 different architectures, removable storage device 35 does not have to store nor make available 17 master boot records. Thus, table 45 may indicate an identifier "7999" assigned to Arm® architecture, but it may be desired that removable storage device 35 not have the compatible master boot record stored within, for example to save memory space, which is discussed in more detail later.
The memory location entries in architecture column 210-1 to 210- 17 are block addresses indicating where master boot records for the various types of architectures are located in removable storage device 35. Every entry in architecture column 210 is 6 bytes where the first four bytes specify a Logical Block Address (LBA) offset. The LBA offset indicates where the master boot record for a specific architecture resides in removable storage device 35. The other 2 bytes specify the length of the binary as a number of LBA sectors. Removable storage device 35 utilizes the Logical Block Address scheme, which among other things, includes translating logical block address locations to physical block addresses locations on the removable storage device.
To summarize, identifiers (denoted 205-1 to 205-17) are associated with memory locations (denoted 210-1 to 210-17) where master boot records and bootstrap programs are stored. Thus, if an identifier of a particular type of computer architecture is known, table 45 can be used to locate a compatible or corresponding master boot record and bootstrap program (e.g. boot loader) stored in removable storage device 35.
As mentioned above, although in table 45 there is one identifier for each of the 17 different architectures, removable storage device 35 does not have to store nor make available 17 master boot records. In situations where it is desired to not include a master boot record for a particular type of architecture, a NULL or "0" values are used to specify an empty entry in architecture column 210 corresponding to the identifier of the type of architecture that is not supported. For example, if it is desired that removable storage device 35 not support Cris® architecture, then its identifier "7853" would be associated with a NULL or "0" values in architecture column 210, rather than with a memory location. Further, removable storage device 35 would not store the compatible master boot record for the Cris® architecture, thus saving memory space. Referring to table 45, Cris® architecture memory location (denoted 210-3) would have a "0000" entry. The first entry in table 45 is an index "0" (denoted 220) which has a corresponding value x86 HLT (0xF4) (denoted 215). The x86 HLT (0xF4) opcode is a halt instruction that prevents older Intel® architectures from erroneously executing any master boot records in removable storage device 35.
Figure 3 shows a flowchart of a method performed by computer system 10 and removable storage device 35, according to an exemplary embodiment. When computer system 10 is turned on, processor 15 goes to a memory location in ROM 40 and begins to execute BIOS program 50 (block 305). As with any Intel® - Windows® architecture, BIOS program 50 conducts a power-on self-test (POST) and a search for a master boot record. BIOS program 50 has an understanding of the devices connected to and part of computer system 10, for example optical drive 65, hard drive 55, and a Universal Serial Bus operatively coupled to interface 90. Thus, BIOS program 50 is able to interact with and detect the devices. For example, interact with and detect removable storage device 35.
In prior art systems, having identified the drive where the master boot record is located, a BIOS program looks at the sector 1 (a 512-byte area), LBA#0 of a device where the master boot record is stored and at offset 0x3E (448 byte area) where bootstrap code is stored. The BIOS program copies the master boot record into RAM and passes control to the master boot record. The master boot record takes control of its computer system and loads code until it is no longer needed.
In accordance with an embodiment of the present inventions, table 45 is stored in sector 1 of removable storage device 35, rather than the master boot record. The master boot record and bootstrap code are relocated to one of the memory locations 60-1 to 60-y in removable device 35 in accordance with table 45, where y equals the number of master boot records stored in removable storage device 35. Also in accordance with the embodiment of the present inventions, the master boot record and bootstrap code are stored among other master boot records and bootstrap codes, each of which are compatible with different types of computer system architectures. Referring to Fig. 2, the memory location of the master boot record and bootstrap code for an Windows® architecture is XXX (denoted by 210-4). Thus, BIOS program 50 reads table 45 located at sector 1 and uses the identifier "burned" into ROM 40 to find the location of the master boot record and bootstrap code compatible with the architecture of computer system 10. Further, BIOS program 50 is configured to select information and implement options from table 45. Alternatively, information and options in table 45 can be selected and implemented via a program stored in ROM 40 working with BIOS program 50.
Referring back to Fig. 3, processor 15 continues to execute BIOS program 50, which identifies removable storage drive 35 and accesses table 45 located at a predefined memory location (block 310). In this example, the predefined memory location is sector 1 (a 512-byte area) and more specifically offset 0x3E (a 448 byte area) of removable storage device 35. Having knowledge of the identifier for computer system 10, BIOS program 50 locates identifier "8686" (denoted 205-4) in table 45 (block 315). As mentioned above, in accordance with the present embodiment of the inventions, the identifier functions as an index. Thus, allowing BIOS program 50 to find its specific location in table 45 without having to iterate through the table. As mentioned above, in this example, computer system 10 is based on the Intel® - Windows® architecture, which was assigned an "8686" identifier.
Subsequently, BIOS program 50 reads the memory location entry in architecture column 210 associated with identifier "8686" (block 320). In this example, the entry in architecture column 210 associated with identifier "8686" is XXXX (denoted 210-4), which specifies the memory location where the compatible master boot record is located in removable storage device 35. Following the LBA scheme, removable storage device 35 translates the logical block address to a physical block address, which indicates where on the media the compatible master boot record is located. BIOS program 50 accesses the memory location at LBA offset xxx and copies the master boot record to RAM 45 (block 325). Computer system 10 executes the master boot record and passes control to the master boot record (block 330). The master boot record takes control of computer system 10 and continues to loads code until it is no longer needed, which includes loading the computer system's operating system from hard drive 55 into RAM 45.
As mentioned above, in accordance with the embodiment of the present inventions, removable storage device 35 can be disconnected from computer system 10, operatively connected to a second computer system with a different architecture and bootstrap the second computer system.
For example, Fig. 4 shows a general exemplary block diagram of removable storage device 35 in accordance with the method and system described above. In a first exemplary embodiment, removable storage device 35 is operatively coupled to computer system 410 which includes the Intel® architecture. When computer system 410 is turned on, its BIOS program accesses its identifier in table 45. From table 45, the BIOS program determines the location of its master boot record 430, copies the master boot record and stores it in RAM in computer system 410, where it is executed.
In a second exemplary embodiment, removable storage device 35 is operatively coupled to computer system 420 which includes the Alpha® architecture. When computer system 420 is turned on, its BIOS program accesses its identifier in table 45. From table 45, the BIOS program determines the location of its master boot record 440, copies the master boot record and stores it in RAM in computer system 420, where it is executed.
The foregoing merely illustrates the principles of the inventions. It will thus be appreciated that those skilled in the art will be able to devise numerous other arrangements which embody the principles of the inventions and are thus within its sprit and scope.
For example, based on the above disclosure, it is apparent that the removable storage device can be memory, such as a SD Memory Card, Compact Flash Card, MultiMedia Card or other removable card or memory device and readily accommodate the principles of the inventions.
In addition, based on the disclosure, it is apparent that the principles of the inventions can readily accommodate a table that is loaded into RAM 45 of computer system 10. In this exemplary embodiment of the present inventions, the BIOS program in ROM 40 locates table 45 stored in removable storage device 35 and loads table 45 into RAM 45. The BIOS program iterates through the table searching for an identifier matching the identifier stored in ROM 40. Like in the above exemplary embodiments, the identifiers represent the various types of computer architectures, but in this example the identifiers simply identify the different types of architectures, not function as indexes. Thus, the BIOS program has to iterate through table 45 searching for the appropriate identifier, rather than going specifically to the appropriate identifier in table 45, as in the case with the identifier that functions as an index.
After the identifier is located in table 45, the BIOS program reads the memory location associated with the identifier and accesses the appropriate master boot record located in removable storage device 35. The BIOS program copies the master boot record from removable storage device 35 and loads it into RAM 45 where processor 15 executes the master boot record.
In this embodiment of the present inventions, there are no empty entries (e.g. NULL or "0" values) in the architecture column of the table because the identifiers in this embodiment do not function as indexes. The table only stores identifiers that have master boot records stored in removable device 35, resulting in no empty entries in the table and a smaller table. For example, if there is no intention to use removable storage device 35 with a computer system having the Arm® architecture, then not only is there no Arm® compatible master boot record stored in removable storage device 35, there is no Arm® identifier or memory location in the table. Of course, because the identifier is not acting as an index, the BIOS program iterates through each identifier in the table to locate the identifier for the correct architecture.
In another embodiment of the present inventions, a computer system is running and an operating system is already loaded. In this embodiment of the present inventions, multiple applications are stored on a removable storage device (e.g. SD Card). For example, 3 playback music applications are stored on the removable storage device, each one compatible with a different computer architecture. When the removable storage device is operatively coupled to a computer system, the removable storage device is recognized. An auto-run program, having knowledge of the identifier of the computer system and the table in the removable storage device, locates the memory location where the playback music application associated with the identifier is located. Subsequently, the auto-run program loads the compatible playback music application on the computer system, where the application can play the content (data files, music files) stored on the removable storage device. Example computer system architectures are Palm®, Windows CE® and Windows®.
Further, the system is disclosed in a form in which various functions are performed by discrete functional blocks. However, any one or more of these functions could equally be embodied in an arrangement in which the functions of any one or more of those blocks are realized by one or more appropriately programmed processing devices running software programs stored in various mediums or having functions programmed in firmware.
Moreover, those skilled in the art will appreciate that the inventions may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like.
Finally, the inventions may also be embodied in a configured computer program storage medium (e.g., CD-ROM, hard disk, RAM) which contains software to perform methods.
According to various disclosed embodiments, there is provided: An electronic system, comprising; at least one control processor; and a portable data module which is operatively connected to be accessible to said control processor; said portable data module containing boot codes for at least two mutually incompatible architectures; said portable data module also containing a data structure which indicates which of said incompatible architectures require which of said boot codes; whereby said control processor can look at said data structure, at boot, and continue the boot process using whichever of said boot codes is required by said control processor's architecture.
According to various disclosed embodiments, there is provided: An electronic system, comprising; at least one control processor; a portable data module which is temporarily connected, and thereby temporarily accessible to said control processor; said portable data module containing boot codes for at least two mutually incompatible architectures, and also a data structure which indicates which architectures require which of said boot codes; and a stored initial instruction sequence, which said control processor executes upon power-up, which allows said control processor to use said data structure to continue the boot process by using whichever of said boot codes is required by said control processor's architecture.
According to various disclosed embodiments, there is provided: A computer system comprising: a read only memory (ROM) having a basic input/output system (BIOS) code stored therein, where the BIOS code has knowledge of an identifier associated with a type of architecture of the computer system and knowledge of a predefined memory location having a table that identifies a plurality of memory locations within a removable storage device where a plurality of bootstrap code for a plurality of computer architectures are stored; an interface coupled to the ROM; and a processor coupled to the interface, the processor executes the BIOS code to detect the removable storage device and if detected, locates the predefined memory location, determines from the table a location of bootstrap code associated with the identifier, loads the bootstrap code in to the computer system and executes the bootstrap code.
According to various disclosed embodiments, there is provided: A removable nonvolatile memory comprising: a table stored in a predefined memory location in the removable nonvolatile memory, the table identifying a plurality of memory locations within the nonvolatile memory; and a plurality of applications associated with a plurality of computer architectures stored in the plurality of memory locations associated with the table.
According to various disclosed embodiments, there is provided: A method for operating a programmable system, comprising the actions of: a) at startup, retrieving boot files for execution from a portable data module, at an address specified by a data structure which indicates different locations for different boot files, depending on the architecture type of the system; and b) using said boot files to automatically launch the system into operation.
According to various disclosed embodiments, there is provided: A method for operating a programmable system, comprising the actions of: powering up the system, using an initial instruction sequence stored in the host system; and under control of said initial instruction sequence, loading some but not others of multiple boot files, from a location in a portable data module specified by a data structure in the portable data module which specifies different locations for different boot files, depending on the architecture type of the system; and using said boot files to automatically launch the system into operation.
According to various disclosed embodiments, there is provided: A method executed on a computer system comprising: executing a basic input/output system (BIOS) to locate a predefined memory location in a removable nonvolatile memory, the predefined memory location having a table that identifies a plurality of memory locations within the removable nonvolatile memory where a plurality of bootstrap code for a plurality of computer architectures are stored; executing the BIOS to determine from the table a location of the bootstrap code associated with an identifier associated with a type of architecture of the computer system; and executing the BIOS to load the bootstrap code into the computer system and execute the bootstrap code.
According to various disclosed embodiments, there are provided: Methods, systems, and architectures for multiplatform booting from a portable module with nonvolatile memory. Preferably the portable module carries the correct binaries for booting multiple system architectures, together with a table from which the host, at power-up, can calculate the correct offset to load the appropriate binary. Modifications and Variations
As will be recognized by those skilled in the art, the innovative concepts described in the present application can be modified and varied over a tremendous range of applications, and accordingly the scope of patented subject matter is not limited by any of the specific exemplary teachings given. It is intended to embrace all such alternatives, modifications and variations that fall within the spirit and broad scope of the appended claims.
The system which boots from the portable module does not have to be a computer in the strict sense of the word, but can also be a game machine, PDA, or other complex system capable of executing programs.
The portable module does not have to be an SD or MS memory unit, but can conform to any of a wide range of physical and electronic specifications for removable memory, including specifications which do not yet exist.
The various operating systems and hardware architectures mentioned above are merely examples - the disclosed inventions are applicable to a very wide range of contexts, including once which may appear in the future.
The table format and coding does not have to be that described in the foregoing embodiments, but can of course be widely varied, as will be well understood by those of ordinary skill.
The table location too does not have to be that described in the foregoing embodiments. In one optional alternative, a different version of the table is included at a different location, in addition to or instead of the table location described above. It is also possible that booting from the portable module may be manually assisted. For example, a compact unit may allow a user interaction to set up a state which forces the loader program to allow booting from the location specified in the data table in an attached portable module, even though the normal boot sequence would not branch to the portable module.
None of the description in the present application should be read as implying that any particular element, step, or function is an essential element which must be included in the claim scope: THE SCOPE OF PATENTED SUBJECT MATTER IS DEFINED ONLY BY THE ALLOWED CLAIMS. Moreover, none of these claims are intended to invoke paragraph six of 35 USC section 112 unless the exact words "means for" are followed by a participle.
The claims as filed are intended to be as comprehensive as possible, and NO subject matter is intentionally relinquished, dedicated, or abandoned.

Claims

CLAIMSWhat is claimed is:
1. An electronic system, comprising; at least one control processor; and a portable data module which is operatively connected to be accessible to said control processor; said portable data module containing boot codes for at least two mutually incompatible architectures; said portable data module also containing a data structure which indicates which of said incompatible architectures require which of said boot codes; whereby said control processor can look at said data structure, at boot, and continue the boot process using whichever of said boot codes is required by said control processor's architecture.
2. The system of Claim 1, wherein said control processor is a computer's
CPU.
3. The system of Claim 1, wherein said portable data module contains boot codes for at least four mutually incompatible architectures.
4. The system of Claim 1, wherein said data structure is a table.
5. The system of Claim 1, wherein said portable data module also contains a cryptographic engine, and also contains memory space which is accessible only through said cryptographic engine.
6. The system of Claim 1, wherein said module contains boot files for
ARM and PPC architectures, in addition to one or desktop computer architectures.
7. The system of Claim 1, wherein said data structure is stored at a predetermined location in said module.
8. The system of Claim 1, wherein said system includes telephone functionality.
9. An electronic system, comprising; at least one control processor; a portable data module which is temporarily connected, and thereby temporarily accessible to said control processor; said portable data module containing boot codes for at least two mutually incompatible architectures, and also a data structure which indicates which architectures require which of said boot codes; and a stored initial instruction sequence, which said control processor executes upon power-up, which allows said control processor to use said data structure to continue the boot process by using whichever of said boot codes is required by said control processor's architecture.
10. The system of Claim 9, wherein said control processor is a computer's CPU.
11. The system of Claim 9, wherein said portable data module contains boot codes for at least four mutually incompatible architectures.
12. The system of Claim 9, wherein said data structure is a table.
13. The system of Claim 9, wherein said portable data module also contains a cryptographic engine, and also contains memory space which is accessible only through said cryptographic engine.
14. The system of Claim 9, wherein said module contains boot files for
ARM and PPC architectures, in addition to one or desktop computer architectures.
15. The system of Claim 9, wherein said data structure is stored at a predetermined location in said module.
16. The system of Claim 9, wherein said control processor is a microcontroller.
17. The system of Claim 9, wherein said system includes telephone functionality.
18. A computer system comprising: a read only memory (ROM) having a basic input/output system (BIOS) code stored therein, where the BIOS code has knowledge of an identifier associated with a type of architecture of the computer system and knowledge of a predefined memory location having a table that identifies a plurality of memory locations within a removable storage device where a plurality of bootstrap code for a plurality of computer architectures are stored; an interface coupled to the ROM; and a processor coupled to the interface, the processor executes the BIOS code to detect the removable storage device and if detected, locates the predefined memory location, determines from the table a location of bootstrap code associated with the identifier, loads the bootstrap code in to the computer system and executes the bootstrap code.
19. The system of claim 18 wherein the table comprises a plurality of identifiers each unique to the plurality of computer architectures and associated plurality of memory locations.
20. The system of claim 18 wherein the identifiers are indexes.
21. The system of claim 18 wherein the processor executes the BIOS code to copy the table to the computer system and search the table.
22. The system of claim 18 wherein the removable storage device is a SD
Memory Card, a Compact Flash, a Hard Drive, or an Optical Disk.
23. The system of claim 18 wherein the plurality of bootstrap code comprise two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, and/or Sρarc64.
24. The system of claim 18 wherein the predefined memory location is a first logical block address (LBA).
25. The system of claim 18 wherein the predetermined memory location is where a master boot record would be located in accordance with the type of architecture of the computer system.
26. The system of claim 25 wherein the master boot record is located in one of the plurality of memory locations within the removable storage device.
27. A removable nonvolatile memory comprising: a table stored in a predefined memory location in the removable nonvolatile memory, the table identifying a plurality of memory locations within the nonvolatile memory; and a plurality of applications associated with a plurality of computer architectures stored in the plurality of memory locations associated with the table.
28. The removable nonvolatile memory of claim 27 wherein the predefined memory location is known by a computer system coupled to the removable nonvolatile memory.
29. The removable nonvolatile memory of claim 27 wherein the table comprises a plurality of identifiers each unique to the plurality of application associated with the types of computer architectures.
30. The removable nonvolatile memory of claim 29 wherein the identifiers are indexes.
31. The removable nonvolatile memory of claim 27 wherein the plurality of applications comprise two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, Sparc64, Palm, Windows CE and and/or Windows.
32. The removable nonvolatile memory of claim 27 wherein the applications are playback music applications of various types of computer architecture.
33. The removable nonvolatile memory of claim 27 wherein each of the applications is capable of executing data files stored on the removable nonvolatile memory.
34. The removable storage device of claim 33, wherein the data files are music files.
35. A method for operating a programmable system, comprising the actions of: a) at startup, retrieving boot files for execution from a portable data module, at an address specified by a data structure which indicates different locations for different boot files, depending on the architecture type of the system; and b) using said boot files to automatically launch the system into operation.
36. The method of Claim 35, wherein said data structure is a table.
37. The method of Claim 35, wherein said data structure references more than three mutually incompatible architecture types.
38. The method of Claim 35, wherein said portable data module also contains a cryptographic engine, and also contains memory space which is accessible only through said cryptographic engine.
39. The method of Claim 35, wherein said module contains boot files for
ARM and PPC architectures, in addition to one or desktop computer architectures.
40. The method of Claim 35, wherein said data structure is stored at a predetermined location in said module.
41. The method of Claim 35, wherein said system includes telephone functionality.
42. A method for operating a programmable system, comprising the actions of: powering up the system, using an initial instruction sequence stored in the host system; and under control of said initial instruction sequence, loading some but not others of multiple boot files, from a location in a portable data module specified by a data structure in the portable data module which specifies different locations for different boot files, depending on the architecture type of the system; and using said boot files to automatically launch the system into operation.
43. The method of Claim 42, wherein said data structure is stored at a predetermined address.
44. The method of Claim 42, wherein said data structure references more than three mutually incompatible architecture types.
45. The method of Claim 42, wherein said portable data module also contains a cryptographic engine, and also contains memory space which is accessible only through said cryptographic engine.
46. The method of Claim 42, wherein said module contains boot files for
ARM and PPC architectures, in addition to one or desktop computer architectures.
47. The method of Claim 42, wherein said module contains boot files for at least two of ARM, PPC, and IAx architectures.
48. A method executed on a computer system comprising: executing a basic input/output system (BIOS) to locate a predefined memory location in a removable nonvolatile memory, the predefined memory location having a table that identifies a plurality of memory locations within the removable nonvolatile memory where a plurality of bootstrap code for a plurality of computer architectures are stored; executing the BIOS to determine from the table a location of the bootstrap code associated with an identifier associated with a type of architecture of the computer system; and executing the BIOS to load the bootstrap code into the computer system and execute the bootstrap code.
49. The method of Claim 48, wherein the table comprises a plurality of identifiers each unique to the plurality of computer architectures and associated plurality of memory locations.
50. The method of Claim 48, comprising executing the BIOS code to copy the table to the computer system and search the table.
51. The method of Claim 48, wherein the removable nonvolatile memory is a SD Memory Card, a Compact Flash, a Hard Drive, or an Optical Disk.
52. The method of Claim 48, wherein the plurality of bootstrap code comprise two or more of the following architecture types: IA32, Alpha, Arm, Cris, IA64, M64k, Mips, Mips64, Parisc, Ppc, Ppc64, S390, S390x, Sh, Sh64, Sparc, and/or Sparc64.
53. The method of Claim 48, wherein the predefined memory location is a first logical block address (LBA).
54. The method of Claim 48, wherein the predefined memory location is where a master boot record would be located in accordance with the type of architecture of the computer system.
PCT/US2007/089050 2006-12-31 2007-12-28 Portable multi-platform booting systems and architectures WO2008083277A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200780044916.5A CN101548265B (en) 2006-12-31 2007-12-28 Portable multi-platform booting systems and framework

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/618,872 2006-12-31
US11/618,872 US7925875B2 (en) 2006-12-31 2006-12-31 Systems and methods for identifying and booting a computer architecture
US11/618,870 US20080162916A1 (en) 2006-12-31 2006-12-31 Portable Multi-Platform Booting
US11/618,870 2006-12-31

Publications (2)

Publication Number Publication Date
WO2008083277A1 WO2008083277A1 (en) 2008-07-10
WO2008083277A9 true WO2008083277A9 (en) 2008-12-31

Family

ID=39588994

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2007/089050 WO2008083277A1 (en) 2006-12-31 2007-12-28 Portable multi-platform booting systems and architectures

Country Status (3)

Country Link
KR (1) KR101120956B1 (en)
TW (1) TWI441077B (en)
WO (1) WO2008083277A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100247952B1 (en) * 1997-04-11 2000-03-15 윤종용 Booting control apparatus and method of pda
ATE322717T1 (en) * 2002-06-28 2006-04-15 Hewlett Packard Co OPERATING SYSTEM SELECTOR AND DISK STORAGE
SG138439A1 (en) * 2003-04-02 2008-01-28 Trek 2000 Int Ltd Portable operating system and method to load the same
US7664836B2 (en) * 2004-02-17 2010-02-16 Zhe Khi Pak Device and method for booting an operation system for a computer from a passive directly attached network device
KR100677327B1 (en) * 2004-06-16 2007-02-02 엘지전자 주식회사 Mobile communication terminal with dual operating system
US7490318B2 (en) * 2005-02-25 2009-02-10 Inventec Corporation Computer platform operating system compatibility management method and system

Also Published As

Publication number Publication date
KR101120956B1 (en) 2012-03-05
KR20090097171A (en) 2009-09-15
TWI441077B (en) 2014-06-11
WO2008083277A1 (en) 2008-07-10
TW200844850A (en) 2008-11-16

Similar Documents

Publication Publication Date Title
US7925875B2 (en) Systems and methods for identifying and booting a computer architecture
US20080162916A1 (en) Portable Multi-Platform Booting
US7073013B2 (en) Mass storage device with boot code
US8090938B2 (en) Methods and systems for running multiple operating systems in a single mobile device
US8352721B1 (en) Initiating an operating system boot from firmware
US8407396B2 (en) Providing block data access for an operating system using solid-state memory
US9430250B2 (en) Bootability with multiple logical unit numbers
KR950002945B1 (en) Apparatus and method for loading a system reference diskette image from a system partition in a personal computer system
US20090094447A1 (en) Universal serial bus flash drive for booting computer and method for loading programs to the flash drive
US7680643B2 (en) Method for carrying multiple suspended runtime images
US7689802B2 (en) Controlling memory access in a multi-booting system
US7305544B2 (en) Interleaved boot block to support multiple processor architectures and method of use
US9239725B2 (en) System and method for installing an OS via a network card supporting PXE
US20080010446A1 (en) Portable apparatus supporting multiple operating systems and supporting method therefor
US11314523B2 (en) Master boot record (MBR)/global unique identifer (GUID) partition table (GPT) hybrid disk that includes GPT bootstrap code
US6934833B2 (en) Operating system selector and data storage drive
JPH0391838A (en) Personal computer system
EP1485797B1 (en) Boot process
US20080098381A1 (en) Systems and methods for firmware update in a data processing device
US20080104380A1 (en) Method and system to dynamically boot to a non-visible partition
KR101120956B1 (en) Portable multi-platform booting systems and architectures
US8533447B2 (en) Method and device for modular configuration deployment at run time
EP1914628B1 (en) Method for changing booting sources of computer system and related backup/restore method thereof
JP2002024024A (en) Method and system for performing adapater configuration routine by using different operation mode
CN117707431A (en) BIOS-based software RAID data reading method and device

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200780044916.5

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07866089

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 1020097013739

Country of ref document: KR

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07866089

Country of ref document: EP

Kind code of ref document: A1