US20090089570A1 - Method, system and apparatus for providing a boot loader of an embedded system - Google Patents

Method, system and apparatus for providing a boot loader of an embedded system Download PDF

Info

Publication number
US20090089570A1
US20090089570A1 US11/902,989 US90298907A US2009089570A1 US 20090089570 A1 US20090089570 A1 US 20090089570A1 US 90298907 A US90298907 A US 90298907A US 2009089570 A1 US2009089570 A1 US 2009089570A1
Authority
US
United States
Prior art keywords
boot loader
loader code
sector
code
younger
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
US11/902,989
Other versions
US7925877B2 (en
Inventor
Vitaly Andrianov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Priority to US11/902,989 priority Critical patent/US7925877B2/en
Assigned to TEXAS INSTRUMENTS INCORPORATED reassignment TEXAS INSTRUMENTS INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ANDRIANOV, VITALY
Priority to PCT/US2008/077479 priority patent/WO2009042658A2/en
Publication of US20090089570A1 publication Critical patent/US20090089570A1/en
Application granted granted Critical
Publication of US7925877B2 publication Critical patent/US7925877B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • 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

Definitions

  • FIG. 1 is a block diagram of exemplary portions of an exemplary embedded system
  • each of the sectors ( 0 , 1 . . . N ⁇ 1) has a sector size of 64K.
  • the boot loader A 404 stored in the sector 0 (first sector) has a size that is less than 64K.
  • the boot loader B 406 stored in sectors 1 and 2 which is younger than boot loader A 404 , has a size of 80K.
  • the flash sector size can be determined by sampling configuration bits and the size of boot loader B 406 can be determined based upon the DW length in the header.

Abstract

A method, system and apparatus for executing a boot loader for an embedded system including a system-on-chip (SOC) processor coupled to a memory including first boot loader code for implementing a first boot loader stored in a first sector and second boot loader code for implementing a second boot loader stored in a second sector determines which of the first boot loader code and second boot loader code is younger; if the second boot loader code is determined to be younger than the first boot loader code, a swapping operation is performed so that the second boot loader code is associated with the first sector and the first boot loader code is associated with a different sector, and the boot loader code associated with the first sector is executed.

Description

    TECHNICAL FIELD
  • The technical field relates generally to firmware of an embedded system and, more particularly, to firmware for providing a boot loader.
  • BACKGROUND
  • A conventional embedded system includes a system-on-chip (SOC) processor, a memory such as flash memory and/or static random access memory (SRAM), and limited peripherals. System firmware stored in the memory can be upgraded after the system has been deployed to a customer. It is preferably more cost effective to perform such system firmware upgrades remotely via a network connection.
  • However, performing a remote upgrade on sensitive system firmware such as the boot loader can be dangerous due to the structured relationship between the core CPU of the SOC processor and the boot loader. Particularly, because the core CPU always boots from a hardware defined address, the boot loader is required to be in a predetermined sector of the flash memory, which is generally the first sector of the main flash memory. The CPU can select the boot loader by a Flash Chip Select (CS) signal. However, when upgrading the boot loader, an erase-upgrade sequence has to be performed. If a power fault occurs during this sequence before completion, the system will not be able to be restored without being brought directly to the system manufacturer.
  • Therefore, what is needed is a method, system or apparatus for providing a boot loader in an embedded system that can be upgraded remotely via a network having a reduced risk of system failure.
  • SUMMARY
  • Accordingly, an embedded system includes a SOC processor and a flash memory coupled to the SOC processor via an addressing bus. The flash memory includes a first boot loader code stored in a first sector and a second boot loader code stored in a second sector. The SOC processor includes a CPU and a memory coupled to the CPU, the memory for storing instructions for configuring the CPU.
  • The CPU is configured to: determine which of the first boot loader code and second boot loader code is younger; and execute the second boot loader code if the second boot loader code is determined to be younger than the first boot loader code.
  • The embedded system can further include: an external memory interface (EMI) for selecting an address of one of the first and second sectors in the flash memory; and a swap register coupled to the CPU for controlling the EMI.
  • The CPU can be further configured to: activate the swap register to set the EMI so that an address of the second boot loader code is swapped with an address of the first sector if the second boot loader code is determined to be younger than the first boot loader code; and execute the boot loader code associated with the first sector. That is, after the swap, the address of the second boot loader code will be of the first sector if the second boot loader code is determined to be younger. Thus, the boot loader code associated with the first sector becomes the second boot loader code.
  • The CPU can be further configured to: compare a first header of the first boot loader code with a second header of the second boot loader code to determine which is younger; if the second boot loader code is determined to be younger than the first boot loader code, compute a checksum for the second boot loader code and compare the computed checksum with a checksum in the second header; and activate the swap register to set the EMI only if the second boot loader code is determined to be younger than the first boot loader code and the computed second checksum is equal to the checksum in the second header.
  • In an embedded system including a system-on-chip (SOC) processor and a memory including a first sector and a second sector, the memory including a first boot loader code for implementing a first boot loader stored in the first sector and a second boot loader code for implementing a second boot loader stored in the second sector, a method of executing a boot loader includes: determining which of the first boot loader code and second boot loader code is younger; if the second boot loader code is determined to be younger than the first boot loader code, performing a swapping operation so that the second boot loader code is associated with the first sector and the first boot loader code is associated with a different sector; and executing the boot loader code associated with the first sector.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The accompanying figures, in which like reference numerals refer to identical or functionally similar elements, together with the detailed description below are incorporated in and form part of the specification and serve to further illustrate various exemplary embodiments and explain various principles and advantages in accordance with the present invention.
  • FIG. 1 is a block diagram of exemplary portions of an exemplary embedded system;
  • FIG. 2 is an illustration of an exemplary header for boot loader code;
  • FIG. 3 is a flow diagram illustrating an exemplary procedure for executing the boot loader; and
  • FIGS. 4A-4B are exemplary logical representations of a flash memory.
  • DETAILED DESCRIPTION
  • In overview, the present disclosure concerns an embedded system, a central processing unit (CPU), a memory associated with the CPU, and computer readable instructions stored in the memory for configuring the CPU. More particularly, various inventive concepts and principles are embodied in systems, apparatuses, and methods for providing a boot loader.
  • The instant disclosure is provided to further explain in an enabling fashion the best modes of performing one or more embodiments of the present invention. The use of relational terms such as first and second, and the like, if any, are used solely to distinguish one from another entity, item, or action without necessarily requiring or implying any actual such relationship or order between such entities, items or actions. It is noted that some embodiments may include a plurality of processes or steps, which can be performed in any order, unless expressly and necessarily limited to a particular order; i.e., processes or steps that are not so limited may be performed in any order.
  • Much of the inventive functionality and many of the inventive principles when implemented, are best supported with or in computer instructions (software) or integrated circuits (ICs), and/or application specific ICs. It is expected that one of ordinary skill, notwithstanding possibly significant effort and many design choices motivated by, for example, available time, current technology, and economic considerations, when guided by the concepts and principles disclosed herein will be readily capable of generating such software instructions or ICs with minimal experimentation. Therefore, in the interest of brevity and minimization of any risk of obscuring the principles and concepts according to the present invention, further discussion of such software and ICs, if any, will be limited to the essentials with respect to the principles and concepts used by the exemplary embodiments.
  • As discussed above, performing a remote update on sensitive system firmware such as the boot loader can be dangerous due to the risk of a power fault occurring during the erase-upgrade sequence. One approach for safely performing a remote upgrade to the system firmware implementing the boot loader would be to upload the boot loader onto another sector of the flash memory, and then finish the operation only after the previous boot loader has been completely erased. However, this approach is not possible for a conventional embedded system because the CPU always expects the boot loader to be in the same location of the flash memory.
  • Referring to FIG. 1, a block diagram of portions of an exemplary embedded system 100 in which the boot loader can be upgraded from an alternative section of the flash memory will now be discussed. The embedded system 100 includes a system-on-chip (SOC) processor 102 and a flash memory 112. The SOC processor 102 includes a CPU 104, a Boot Read Only Memory (ROM) 106, an External Memory Interface (EMI) 108, and a swap register (REG) 110. The SOC processor 102 can be coupled to the flash memory 112 via an address bus and a flash chip select, illustrated here solely by the bus 114.
  • The EMI 108 is for addressing the various sectors of the flash memory 112. Particularly, the EMI 108 can generate a flash chip select signal to select one or more addressed sectors of the main flash memory 112. The swap REG 110 is for controlling the EMI 108 in accordance with swap REG control instructions discussed below.
  • The flash memory 112 includes a plurality of sectors 0, 1, 2 . . . N−1. In the present case, the first sector (Sector 0) is reserved for storing a boot loader program (the first boot loader code), and the second sector (Sector 1) is used for storing a boot loader program upgrade. The upgrade (second boot loader code) can be completely different from the boot loader code of Sector 0, or it can include merely a patch to correct a few lines of code from the first boot loader code. Further, the second boot loader code can be installed remotely via a network connection (not shown).
  • The Boot ROM 106 can include instructions for configuring the CPU 104, such as instructions to search for devices eligible to participate in the boot process, and boot instructions to load a program from the boot sector (in this case the first sector: sector 0) of the main flash memory 112. The Boot ROM 106 can also include various instructions such as sector comparison instructions, swap REG control instructions, checksum computation and comparison instructions, and sector size adjustment instructions for configuring the CPU 104, each of which will be discussed more fully below.
  • The sector comparison instructions configure the CPU 104 to determine which of the first boot loader code and second boot loader code is younger by, for example, comparing a first header of the first boot loader code with a second header of the second boot loader code. An exemplary header 200 is shown in FIG. 2. The header 200 includes a boot loader version identification parameter shown as “DW VersionID” which can be compared with a boot loader version identification parameter specified by a header of the second boot loader code to determine which of the first boot loader code and second boot loader code is younger.
  • The swap REG control instructions configure the CPU 104 to activate the swap register 110 to set the EMI 108 so that the second boot loader code is associated with an address of the first sector and an address of the first boot loader code is associated with a different sector if the second boot loader code is determined to be younger than the first boot loader code. The address of the first boot loader code after the swap will depend upon a determination performed in accordance with the sector size adjustment instructions discussed below.
  • The checksum computation and comparison instructions configure the CPU 104 to validate the headers by computing a checksum for the first and second boot loader codes and comparing the computed checksums with checksums in the headers. The exemplary header 200 includes a checksum shown as “DW CSUM.” The checksum can be computed according to conventional techniques. If the second boot loader code is determined to be younger than the first boot loader code, the swap register 110 will be activated to perform the swap operation only if the computed second checksum is equal to the checksum in the second header. If none of the headers are validated, then the CPU 104 can execute the first boot loader code stored in the first sector by default.
  • The sector size adjustment instructions configure the CPU 104 to sample configuration bits of the flash memory 112 to determine a flash sector size of each of the first and second sectors of the flash memory 112, and to determine a size of the first boot loader code and the second boot loader code. If the second boot loader code is determined to be younger than the first boot loader code and if the flash sector size of the first sector is less than a size of the younger boot loader code, a new first sector having a size greater than or equal to the size of the younger boot loader code can be configured by combining the first sector with one or more additional sectors to form a new first sector.
  • The swap REG control instructions can further configure the CPU 104 to assign an address of the first sector as the address of the second sector and assign a new address for the first sector that is offset from the address of the second sector by the size of the younger boot loader code. As a result, when the CPU 104 generates a control signal to the EMI 108 to execute the boot code in sector 0 (the default sector for boot loading program), the EMI 108 will select the boot code in sector 1.
  • Referring to FIG. 3 an exemplary procedure 300 for executing a boot loader for the embedded system 200 will be discussed. The procedure 300 can begin, for example, when the embedded system 200 is powered on after receiving a remote upgrade which stored a new boot loader program (second boot loader) in the second sector. It should be noted that the second boot loader can also be stored in additional sectors as well as the second sector if the size of the second boot loader is greater than a size of the second sector.
  • Upon being powered on, at 305 the CPU reads the headers of the first boot loader code and the second boot loader code and samples flash configuration bits to determine a sector size of the first and second sectors. Referring to the exemplary header 200, the headers include the parameters DW VersionID and DW CSUM discussed above, and a branch instruction shown as “Jmp Start” and a length (size) of the boot loader length shown as “DW Length.” At 310, the CPU can compare the checksum of the headers with a computed checksum to check the validity of each of the headers.
  • At 315, the CPU determines if no header can be validated. That is, the CPU determines if no computed checksum for a boot loader code is equal to the checksum in its corresponding header. If no header can be validated (YES at 315), then at 350 the CPU executes the boot loader code stored in the first sector by default. However, if a header is validated (NO at 315), then at 320 the CPU determines which of the first boot loader code and second boot loader code is younger based upon, for example, a comparison of the boot loader version identification parameter (DW VersionID) stored in the header of the first boot loader code with a boot loader version identification parameter stored in the header of the second boot loader code.
  • If, at 325, the second boot loader code is determined not to be younger than the first boot loader code (NO at 325), then at 350 the CPU executes the boot loader code stored in the first sector. If, at 325, the second boot loader code is determined to be younger than the first boot loader code (YES at 325), then at 330 the CPU performs a swapping operation so that the second boot loader code is associated with the first sector and the first boot loader code is associated with the second sector. Particularly, here the EMI can be set by the swap register to logically switch a first sector address associated with the first sector with a second sector address associated with the second sector. Thereby, when the CPU selects the first sector, the EMI will set the address of the second sector.
  • At 335, the CPU can determine the size of the second boot loader code (if it is determined to be youngest). If the size of the second boot loader code is determined to be greater than the sector size of the first sector (YES at 335), then at 340 the first sector can be combined (logically) with one or more additional sectors to have a flash sector size greater than or equal to the size of the younger boot loader code. At 345, the address of the second sector is logically offset from the first sector address by the size of the new combined sector, which should be at least the size of the younger boot loader code. Thereby, when the CPU selects the second sector, the EMI will set an address offset from the (new) first sector. If the size of the second boot loader code is determined not to be greater than the sector size of the first sector (NO at 335), then the boot loader code in the first sector is executed.
  • Referring to FIGS. 4A-4B, an exemplary swapping and sector size adjustment operation will be discussed. Here, a logical representation of the flash memory 402 before the swapping operation is shown in FIG. 4A and after the swapping and sector size adjustment operation in FIG. 4B.
  • In this example, each of the sectors (0, 1 . . . N−1) has a sector size of 64K. The boot loader A 404 stored in the sector 0 (first sector) has a size that is less than 64K. However, the boot loader B 406 stored in sectors 1 and 2, which is younger than boot loader A 404, has a size of 80K. As discussed above, the flash sector size can be determined by sampling configuration bits and the size of boot loader B 406 can be determined based upon the DW length in the header.
  • As shown in FIG. 4B, because boot loader B 406 is younger than boot loader A 404, the address (64) of boot loader B 406 is swapped with the address (0) of boot loader A 404, so that boot loader B 406 is logically in the first sector from the perspective of the CPU. That is, when the CPU attempts to access sector 0, the swap register forces the EMI to select the address of sector 1 (which is at address 64).
  • The configured sector size must be set to a value equal to or greater than the boot loader size and at a flash size boundary. Because the boot loader B size of 80K is greater than the flash sector size of 64K, sector 0 (the first sector) is logically combined with the second sector (sector 1) to have a flash sector size of 128K, which is greater than the size of the younger boot loader code. More specifically, the swap register assigns a new address for boot loader A which is offset by 128K from the address of boot loader B. That is, when the CPU attempts to access sector 1, the swap register forces the EMI to select the address of sector 2 (which is now at address 0).
  • As a result, an upgrade can be installed remotely via a network into the second sector (sector 1). Thereby, even if a power fault occurs during installation, the original boot code still remains in the first sector (sector 0). Further, the swapping operation permits the CPU to continue to boot from the first sector.
  • It should be noted that the swap register preferably only logically swaps the address of the boot loader code. That is, the physical location of the boot loader code in the flash memory is not moved. Rather, the swap register merely forces the EMI to change the addressing. As a result, the CPU can continue to request the boot operation from the first sector.
  • In the previous examples, the flash sector only included first and second boot loader codes. However, the embodiments discussed above are also applicable to a flash sector including a plurality of boot loader codes. The CPU can determine which among the plurality of boot loader codes is the youngest, and logically swap the address of the youngest boot loader code with the address of the first sector.
  • This disclosure is intended to explain how to fashion and use various embodiments in accordance with the invention rather than to limit the true, intended, and fair scope and spirit thereof. The invention is defined solely by the appended claims, as they may be amended during the pendency of this application for patent, and all equivalents thereof. The foregoing description is not intended to be exhaustive or to limit the invention to the precise form disclosed.
  • Modifications or variations are possible in light of the above teachings. The embodiment(s) was chosen and described to provide the best illustration of the principles of the invention and its practical application, and to enable one of ordinary skill in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. All such modifications and variations are within the scope of the invention as determined by the appended claims, as may be amended during the pendency of this application for patent, and all equivalents thereof, when interpreted in accordance with the breadth to which they are fairly, legally, and equitably entitled.

Claims (20)

1. A method of executing a boot loader for an embedded system including a system-on-chip (SOC) processor and a memory including a first sector and a second sector, the memory including first boot loader code for implementing a first boot loader stored in the first sector and a second boot loader code for implementing a second boot loader stored in the second sector, the method comprising:
determining which of the first boot loader code and second boot loader code is younger;
if the second boot loader code is determined to be younger than the first boot loader code, performing a swapping operation so that the second boot loader code is associated with the first sector and the first boot loader code is associated with a different sector; and
executing the boot loader code associated with the first sector.
2. The method of claim 1, wherein the determining which of the first boot loader code and second boot loader code is younger further includes comparing a header of the first boot loader code with a header of the second boot loader code to determine which is younger.
3. The method of claim 2, further comprising executing the boot loader code stored in the first sector by default if no valid header is present in the memory.
4. The method of claim 2, wherein the comparing a header of the first boot loader code with a header of the second boot loader code further includes comparing a boot loader version identification parameter stored in the header of the first boot loader code with a boot loader version identification parameter stored in the header of the second boot loader code.
5. The method of claim 1, wherein the performing of the swapping operation further includes swapping a first sector address associated with the first sector and a second sector address associated with the second sector.
6. The method of claim 1, wherein the determining of which of the first boot loader code and the second boot loader code is younger further includes sampling flash configuration bits to determine a sector size of each of the first and second sectors.
7. The method of claim 6, further comprising:
if the second boot loader code is determined to be younger than the first boot loader code, determining if a size of the second boot loader code is greater than the sector size of the first sector; and
offsetting the first sector address from the second sector address by at least the size of the second boot loader code during the swap operation if the size of the second boot loader code is greater than the sector size of the first sector.
8. A method of executing a boot loader for an embedded system including a system-on-chip (SOC) processor and a memory having a plurality of sectors, the memory including first boot loader code for implementing a first boot loader associated with a first sector of the plurality of sectors and a second boot loader code for implementing a second boot loader associated with a second sector of the plurality of sectors, the method comprising:
comparing a first header of the first boot loader code with a second header of the second boot loader code to determine which is younger;
if the second boot loader code is determined to be younger than the first boot loader code, computing a checksum for the second boot loader code and comparing the computed checksum with a checksum in the second header;
if the second boot loader code is determined to be younger than the first boot loader code and the computed second checksum is equal to the checksum in the second header, performing a swapping operation so that the second boot loader code is associated with the first sector and the first boot loader code is associated with the second sector; and
executing the boot loader code associated with the first sector.
9. The method of claim 8, further comprising:
sampling configuration bits to determine a flash sector size of each of the plurality of sectors; and
determining a size of the first boot loader code and a size of the second boot loader code.
10. The method of claim 9, wherein the performing the swapping operation further includes:
if the flash sector size of each of the plurality of sectors is less than a size of the younger boot loader code, combining the first sector with one or more additional sectors to have a flash sector size greater than or equal to the size of the younger boot loader code.
11. The method of claim 9, wherein the performing of the swapping operation further includes assigning an address of the first sector as the address of the second sector and assigning a new address for the first sector that is offset from the address of the second sector by at least the size of the younger boot loader code.
12. The method of claim 8, wherein the comparing a header of the first boot loader code with a header of the second boot loader code further includes comparing a boot loader version identification parameter stored in the header of the first boot loader code with a boot loader version identification parameter stored in the header of the second boot loader code.
13. An embedded system comprising:
a system-on-chip (SOC) processor including a central processing unit (CPU) and a memory coupled to the CPU, the memory for storing instructions for configuring the CPU; and
a flash memory coupled to the SOC processor via an addressing bus, the flash memory including a first boot loader code stored in a first sector and a second boot loader code stored in a second sector;
wherein the CPU is configured to:
determine which of the first boot loader code and second boot loader code is younger; and
execute the second boot loader code if the second boot loader code is determined to be younger than the first boot loader code.
14. The embedded system of claim 13, further comprising:
an external memory interface (EMI) coupled to the CPU, the EMI for addressing the flash memory,
wherein the CPU is further configured to:
set the EMI so that the second boot loader code is associated with an address of the first sector and the first boot loader code is associated with an address of a different sector if the second boot loader code is determined to be younger than the first boot loader code; and
execute the boot loader code associated with the address of the first sector.
15. The embedded system of claim 13, further comprising:
an external memory interface (EMI) for selecting an address of one of the first and second sectors in the flash memory; and
a swap register for controlling the EMI, the swap register coupled to the CPU,
wherein the CPU is further configured to:
activate the swap register to set the EMI so that an address of the second boot loader code is swapped with an address of the first sector if the second boot loader code is determined to be younger than the first boot loader code; and
execute the boot loader code associated with the first sector.
16. The embedded system of claim 15, wherein the CPU is further configured to:
compare a first header of the first boot loader code with a second header of the second boot loader code to determine which is younger;
if the second boot loader code is determined to be younger than the first boot loader code, compute a checksum for the second boot loader code and compare the computed checksum with a checksum in the second header; and
activate the swap register to set the EMI only if the second boot loader code is determined to be younger than the first boot loader code and the computed second checksum is equal to the checksum in the second header.
17. The embedded system of claim 13, wherein the CPU is further configured to sample configuration bits of the flash memory to determine a flash sector size of each of the first and second sectors of the flash memory.
18. The embedded system of claim 17, wherein the CPU is further configured to:
determine a size of the first boot loader code and the second boot loader code; and
if the second boot loader code is younger than the first boot loader code and if the flash sector size of the first sector is less than a size of the second boot loader code, combine the first sector with one or more additional sectors to form a new first sector having a size greater than or equal to the size of the younger boot loader code.
19. The embedded system of claim 17, wherein the CPU is further configured to:
assign an address of the first sector as the address of the second sector and assign a new address for the first sector that is offset from the address of the second sector by at least the size of the younger boot loader code.
20. The embedded system of claim 13, wherein the CPU is further configured to: compare a boot loader version identification parameter specified by a header of the first boot loader code with a boot loader version identification parameter specified by a header of the second boot loader code to determine which of the first boot loader code and second boot loader code is younger.
US11/902,989 2007-09-27 2007-09-27 Method, system and apparatus for providing a boot loader of an embedded system Active 2030-01-26 US7925877B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/902,989 US7925877B2 (en) 2007-09-27 2007-09-27 Method, system and apparatus for providing a boot loader of an embedded system
PCT/US2008/077479 WO2009042658A2 (en) 2007-09-27 2008-09-24 Method, system and apparatus for providing a boot loader of an embedded system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/902,989 US7925877B2 (en) 2007-09-27 2007-09-27 Method, system and apparatus for providing a boot loader of an embedded system

Publications (2)

Publication Number Publication Date
US20090089570A1 true US20090089570A1 (en) 2009-04-02
US7925877B2 US7925877B2 (en) 2011-04-12

Family

ID=40509736

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/902,989 Active 2030-01-26 US7925877B2 (en) 2007-09-27 2007-09-27 Method, system and apparatus for providing a boot loader of an embedded system

Country Status (2)

Country Link
US (1) US7925877B2 (en)
WO (1) WO2009042658A2 (en)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090199048A1 (en) * 2008-02-04 2009-08-06 Honeywell International Inc. System and method for detection and prevention of flash corruption
US20120173713A1 (en) * 2010-12-30 2012-07-05 Brocade Communication Systems, Inc. Resources monitoring and recovery
US20140281466A1 (en) * 2013-03-14 2014-09-18 Microchip Technology Incorporated Boot Sequencing for Multi Boot Devices
WO2014143245A1 (en) * 2013-03-15 2014-09-18 Xilinx, Inc. Multi-boot of fallback boot of a system-on-chip using a file-based boot device
US9152794B1 (en) 2013-09-05 2015-10-06 Xilinx, Inc. Secure key handling for authentication of software for a system-on-chip
US9165143B1 (en) * 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
US9230112B1 (en) 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US20160019106A1 (en) * 2014-07-16 2016-01-21 Dell Products, Lp Seamless Method for Booting from a Degraded Software Raid Volume on a UEFI System
US20160055068A1 (en) * 2013-04-23 2016-02-25 Hewlett-Packard Development Company, L.P. Recovering from Compromised System Boot Code
US9411688B1 (en) 2013-12-11 2016-08-09 Xilinx, Inc. System and method for searching multiple boot devices for boot images
US9652252B1 (en) 2014-10-29 2017-05-16 Xilinx, Inc. System and method for power based selection of boot images
EP3198417A4 (en) * 2015-01-29 2018-05-30 Hewlett-Packard Development Company, L.P. Booting a system-on-a-chip device
US9990255B2 (en) 2013-04-23 2018-06-05 Hewlett-Packard Development Company, L.P. Repairing compromised system data in a non-volatile memory
CN108897574A (en) * 2018-06-01 2018-11-27 深圳市方为半导体有限公司 Embedded system and its management method of program operation
US11372581B2 (en) * 2018-09-28 2022-06-28 Canon Kabushiki Kaisha Information processing apparatus and control method thereof and program regarding reading a boot program
US11379024B2 (en) * 2019-09-26 2022-07-05 Micron Technology, Inc. Systems and methods capable of bypassing non-volatile memory when storing firmware in execution memory
US11418335B2 (en) 2019-02-01 2022-08-16 Hewlett-Packard Development Company, L.P. Security credential derivation
US11520894B2 (en) 2013-04-23 2022-12-06 Hewlett-Packard Development Company, L.P. Verifying controller code
US11520662B2 (en) 2019-02-11 2022-12-06 Hewlett-Packard Development Company, L.P. Recovery from corruption

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120109800A (en) * 2011-03-28 2012-10-09 삼성전자주식회사 Data update method based on a firmware on the air and portable device supporting the same
US10642781B2 (en) 2017-04-07 2020-05-05 Qualcomm Incorporated Boot time determination of calibration parameters for a component coupled to a system-on-chip

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5878256A (en) * 1991-10-16 1999-03-02 International Business Machine Corp. Method and apparatus for providing updated firmware in a data processing system
US6446203B1 (en) * 1999-05-24 2002-09-03 International Business Machines Corporation Method and system for selecting from multiple boot code images to be loaded in a data processing system
US6560703B1 (en) * 2000-04-18 2003-05-06 International Business Machines Corporation Redundant updatable self-booting firmware
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US20050060528A1 (en) * 2003-09-17 2005-03-17 Samsung Electronics Co., Ltd. Booting and boot code update method and system thereof
US20060129793A1 (en) * 2004-12-09 2006-06-15 Ruey-Yuan Tzeng Embedded system and related method capable of automatically updating system software
US20070050611A1 (en) * 2005-08-26 2007-03-01 Weikel Robert J Method, computer-readable media, devices and systems for loading a selected operating system of interest
US20070083744A1 (en) * 2005-10-10 2007-04-12 Samsung Electronics Co., Ltd. Digital broadcast processing apparatus and boot loader upgrade method thereof
US20070088940A1 (en) * 2005-10-13 2007-04-19 Sandisk Corporation Initialization of flash storage via an embedded controller
US20070113067A1 (en) * 2005-11-15 2007-05-17 Jee-Woong Oh Method and apparatus for booting a microprocessor system using boot code stored on a serial flash memory array having a random-access interface
US20070169098A1 (en) * 2006-01-19 2007-07-19 Nec Corporation Firmware updating circuit and firmware updating method

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5878256A (en) * 1991-10-16 1999-03-02 International Business Machine Corp. Method and apparatus for providing updated firmware in a data processing system
US6446203B1 (en) * 1999-05-24 2002-09-03 International Business Machines Corporation Method and system for selecting from multiple boot code images to be loaded in a data processing system
US6560703B1 (en) * 2000-04-18 2003-05-06 International Business Machines Corporation Redundant updatable self-booting firmware
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US20050060528A1 (en) * 2003-09-17 2005-03-17 Samsung Electronics Co., Ltd. Booting and boot code update method and system thereof
US20060129793A1 (en) * 2004-12-09 2006-06-15 Ruey-Yuan Tzeng Embedded system and related method capable of automatically updating system software
US20070050611A1 (en) * 2005-08-26 2007-03-01 Weikel Robert J Method, computer-readable media, devices and systems for loading a selected operating system of interest
US20070083744A1 (en) * 2005-10-10 2007-04-12 Samsung Electronics Co., Ltd. Digital broadcast processing apparatus and boot loader upgrade method thereof
US20070088940A1 (en) * 2005-10-13 2007-04-19 Sandisk Corporation Initialization of flash storage via an embedded controller
US20070113067A1 (en) * 2005-11-15 2007-05-17 Jee-Woong Oh Method and apparatus for booting a microprocessor system using boot code stored on a serial flash memory array having a random-access interface
US20070169098A1 (en) * 2006-01-19 2007-07-19 Nec Corporation Firmware updating circuit and firmware updating method

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392762B2 (en) * 2008-02-04 2013-03-05 Honeywell International Inc. System and method for detection and prevention of flash corruption
US20090199048A1 (en) * 2008-02-04 2009-08-06 Honeywell International Inc. System and method for detection and prevention of flash corruption
US20120173713A1 (en) * 2010-12-30 2012-07-05 Brocade Communication Systems, Inc. Resources monitoring and recovery
US9230112B1 (en) 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US20140281466A1 (en) * 2013-03-14 2014-09-18 Microchip Technology Incorporated Boot Sequencing for Multi Boot Devices
US9733950B2 (en) * 2013-03-14 2017-08-15 Microchip Technology Incorporated Boot sequencing for multi boot devices
TWI661357B (en) * 2013-03-14 2019-06-01 微晶片科技公司 Method for booting multi-boot device and multi-boot microcontroller
CN105027080A (en) * 2013-03-14 2015-11-04 密克罗奇普技术公司 Boot sequencing for multi boot devices
WO2014143245A1 (en) * 2013-03-15 2014-09-18 Xilinx, Inc. Multi-boot of fallback boot of a system-on-chip using a file-based boot device
US9336010B2 (en) 2013-03-15 2016-05-10 Xilinx, Inc. Multi-boot or fallback boot of a system-on-chip using a file-based boot device
US9165143B1 (en) * 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
US11520894B2 (en) 2013-04-23 2022-12-06 Hewlett-Packard Development Company, L.P. Verifying controller code
US20160055068A1 (en) * 2013-04-23 2016-02-25 Hewlett-Packard Development Company, L.P. Recovering from Compromised System Boot Code
US9990255B2 (en) 2013-04-23 2018-06-05 Hewlett-Packard Development Company, L.P. Repairing compromised system data in a non-volatile memory
US9880908B2 (en) * 2013-04-23 2018-01-30 Hewlett-Packard Development Company, L.P. Recovering from compromised system boot code
US9152794B1 (en) 2013-09-05 2015-10-06 Xilinx, Inc. Secure key handling for authentication of software for a system-on-chip
US9411688B1 (en) 2013-12-11 2016-08-09 Xilinx, Inc. System and method for searching multiple boot devices for boot images
US10459812B2 (en) 2014-07-16 2019-10-29 Dell Products, Lp Seamless method for booting from a degraded software raid volume on a UEFI system
US9569297B2 (en) * 2014-07-16 2017-02-14 Dell Products, Lp Seamless method for booting from a degraded software raid volume on a UEFI system
US20160019106A1 (en) * 2014-07-16 2016-01-21 Dell Products, Lp Seamless Method for Booting from a Degraded Software Raid Volume on a UEFI System
US9652252B1 (en) 2014-10-29 2017-05-16 Xilinx, Inc. System and method for power based selection of boot images
EP3198417A4 (en) * 2015-01-29 2018-05-30 Hewlett-Packard Development Company, L.P. Booting a system-on-a-chip device
CN108897574A (en) * 2018-06-01 2018-11-27 深圳市方为半导体有限公司 Embedded system and its management method of program operation
US11372581B2 (en) * 2018-09-28 2022-06-28 Canon Kabushiki Kaisha Information processing apparatus and control method thereof and program regarding reading a boot program
US11418335B2 (en) 2019-02-01 2022-08-16 Hewlett-Packard Development Company, L.P. Security credential derivation
US11520662B2 (en) 2019-02-11 2022-12-06 Hewlett-Packard Development Company, L.P. Recovery from corruption
US11379024B2 (en) * 2019-09-26 2022-07-05 Micron Technology, Inc. Systems and methods capable of bypassing non-volatile memory when storing firmware in execution memory
US11775038B2 (en) 2019-09-26 2023-10-03 Micron Technology, Inc. Systems and methods capable of bypassing non-volatile memory when storing firmware in execution memory

Also Published As

Publication number Publication date
WO2009042658A3 (en) 2009-05-14
US7925877B2 (en) 2011-04-12
WO2009042658A2 (en) 2009-04-02

Similar Documents

Publication Publication Date Title
US7925877B2 (en) Method, system and apparatus for providing a boot loader of an embedded system
US9733950B2 (en) Boot sequencing for multi boot devices
US7310800B2 (en) Method and system for patching ROM code
US6425079B1 (en) Universal option ROM BIOS including multiple option BIOS images for multichip support and boot sequence for use therewith
US6865667B2 (en) Data processing system having redirecting circuitry and method therefor
US7305544B2 (en) Interleaved boot block to support multiple processor architectures and method of use
US20100180104A1 (en) Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor
US7596721B1 (en) Methods and structure for patching embedded firmware
EP0725333B1 (en) Control system for processor
US20030126424A1 (en) Method and apparatus for booting a microprocessor
KR20090034104A (en) Booting system, image forming apparatus having the system and method thereof
US5479342A (en) Microcomputer
US20050207232A1 (en) Access method for a NAND flash memory chip, and corresponding NAND flash memory chip
US20070113064A1 (en) Method and system for secure code patching
US6725294B1 (en) Installation and access of a device handler for a peripheral device in a computer
GB2391973A (en) Selection of firmware depending on processor identifcation
US20070283139A1 (en) Information processing apparatus and control method used thereby
US20160085559A1 (en) Conditional Processor Auto Boot with No Boot Loader when Coupled with a Nonvolatile Memory
CN106708569B (en) Hot loading method and device for VOBC configuration file in over-the-line train
EP1686467B1 (en) Method and system for correcting errors in read-only memory devices, and computer program product therefor
US7047444B2 (en) Address selection for testing of a microprocessor
US7076643B2 (en) Method and apparatus for providing revision identification numbers
US20130227343A1 (en) Circuits and Methods for Replacing Defective Instructions
US20050251640A1 (en) System and method for configuring a computer system
US20010052114A1 (en) Data processing apparatus

Legal Events

Date Code Title Description
AS Assignment

Owner name: TEXAS INSTRUMENTS INCORPORATED, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ANDRIANOV, VITALY;REEL/FRAME:019949/0245

Effective date: 20070925

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12