US6640334B1 - Method and apparatus of remotely updating firmware of a communication device - Google Patents

Method and apparatus of remotely updating firmware of a communication device Download PDF

Info

Publication number
US6640334B1
US6640334B1 US09/405,095 US40509599A US6640334B1 US 6640334 B1 US6640334 B1 US 6640334B1 US 40509599 A US40509599 A US 40509599A US 6640334 B1 US6640334 B1 US 6640334B1
Authority
US
United States
Prior art keywords
communication device
load
firmware load
page
firmware
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.)
Expired - Lifetime
Application number
US09/405,095
Inventor
John H. Rasmussen
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.)
RPX Clearinghouse LLC
Original Assignee
Nortel Networks Ltd
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 Nortel Networks Ltd filed Critical Nortel Networks Ltd
Priority to US09/405,095 priority Critical patent/US6640334B1/en
Assigned to NORTEL NETWORKS CORPORATION reassignment NORTEL NETWORKS CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RASMUSSEN, JOHN H.
Assigned to NORTEL NETWORKS LIMITED reassignment NORTEL NETWORKS LIMITED CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: NORTEL NETWORKS CORPORATION
Priority to CA002320374A priority patent/CA2320374A1/en
Priority to EP00308451.4A priority patent/EP1087294B1/en
Priority to EP10181519A priority patent/EP2299359A1/en
Application granted granted Critical
Publication of US6640334B1 publication Critical patent/US6640334B1/en
Assigned to Rockstar Bidco, LP reassignment Rockstar Bidco, LP ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: NORTEL NETWORKS LIMITED
Assigned to ROCKSTAR CONSORTIUM US LP reassignment ROCKSTAR CONSORTIUM US LP ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: Rockstar Bidco, LP
Assigned to RPX CLEARINGHOUSE LLC reassignment RPX CLEARINGHOUSE LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BOCKSTAR TECHNOLOGIES LLC, CONSTELLATION TECHNOLOGIES LLC, MOBILESTAR TECHNOLOGIES LLC, NETSTAR TECHNOLOGIES LLC, ROCKSTAR CONSORTIUM LLC, ROCKSTAR CONSORTIUM US LP
Assigned to JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT reassignment JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT SECURITY AGREEMENT Assignors: RPX CLEARINGHOUSE LLC, RPX CORPORATION
Assigned to RPX CORPORATION, RPX CLEARINGHOUSE LLC reassignment RPX CORPORATION RELEASE (REEL 038041 / FRAME 0001) Assignors: JPMORGAN CHASE BANK, N.A.
Assigned to JEFFERIES FINANCE LLC reassignment JEFFERIES FINANCE LLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RPX CLEARINGHOUSE LLC
Anticipated expiration legal-status Critical
Assigned to RPX CLEARINGHOUSE LLC reassignment RPX CLEARINGHOUSE LLC RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: JEFFERIES FINANCE LLC
Expired - Lifetime legal-status Critical Current

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Definitions

  • the present invention relates to data communication devices, and in particular to a method of remotely downloading firmware to a communication device (e.g. a modem) through a communication network.
  • a communication device e.g. a modem
  • the provision of data communication services necessarily requires the installation of a communication device (e.g. a modem connected to a host personal computer—PC) at an end-user site.
  • a communication device e.g. a modem connected to a host personal computer—PC
  • the end-user is provided with a communications application (e.g. a browser) running on the host PC to control data communication sessions using a graphical user interface (GUI).
  • GUI graphical user interface
  • the communications application interacts with the installed communication device using a high level Application Program Interface (API) to access firmware governing the low-level functionality of the communication device.
  • API Application Program Interface
  • firmware is commonly saved in a FLASH memory during manufacture of the communication device, and is run from the FLASH memory.
  • firmware applications are not static. Rather, development is an on-going process of improving algorithms and code to enhance the reliability and functionality of the communication device.
  • updated firmware applications can easily be loaded into new communication devices at the factory, it is difficult to provide upgrade loads to communication devices which have been already sold and delivered to the customer.
  • U.S. Pat. No. 5,268,928 (Herh, et. al.) teaches a data modem with remote firmware update capabilities.
  • the data modem is provided with a read only memory (ROM), and a battery-backed random access memory (RAM).
  • the firmware is divided into a boot-logic which is saved in the ROM, and application logic which is stored in the battery-backed RAM. Update loads of the application logic can be downloaded to the modem during normal operation of the device and stored in the battery-backed RAM.
  • Herh et al. require that the modem be provided with two separate memories, and further require that the data modem have additional circuitry (including a built-in battery) to ensure that the application logic is not lost when the modem is turned off.
  • a FLASH memory which is a non-volatile form of programmable memory.
  • One of the advantages of saving the firmware in FLASH memory is that no special equipment is required to write data to the FLASH memory.
  • the circuitry already provided on the device for normal read/write operations is sufficient.
  • the FLASH memory can be used for both read and write operations, is it convenient to run the firmware from the FLASH-memory, which minimizes the requirement for RAM.
  • the FLASH memory retains its information after loss of power, so battery-backup circuits are not required.
  • FLASH memory is readily available in standard sizes (e.g. 128 kb), and, depending on the addressing limitations of the microprocessor of the communication device, may be logically divided into frames or pages (e.g. of 32 kb each).
  • each page can be enabled (i.e. accessed for reading or writing data) individually by the microprocessor by means of an appropriate page-select signal applied to one or more page-select input pins on the FLASH memory chip.
  • Each page is further subdivided into individually accessible blocks, which can be accessed by the microprocessor by applying appropriate address-select signals to address-select input pins on the FLASH memory chip.
  • corresponding blocks of every page can be accessed using a common address-select signal, so that any desired block on any page of the FLASH memory can be uniquely accessed by applying appropriate page-select and address-select signals (in combination) to the page-select and address-select input pins of the FLASH memory chip.
  • the microprocessor During operation of the communication device, the microprocessor holds one page in enabled condition (by holding the page select signal constant), and then reads firmware application logic from blocks of the enabled page by changing the address-select signal (either incrementally or in response to jump commands embedded in application logic). Since a single address-select signal can access a corresponding block of memory on each page, changing the page-select signal (thereby enabling another page) during execution of the application logic will very likely cause erroneous operation of the communication device as the microprocessor attempts to execute the contents of a block of FLASH memory which is located on a page other than the page containing the application logic. As a safety measure to prevent this occurrence, firmware applications are typically written in such a way as to prevent the microprocessor from enabling any other page of the FLASH memory while any portion of the application logic is being run.
  • an aspect of the present invention provides a method of remotely updating firmware saved in a FLASH memory of a communication device connected to a network, the FLASH memory being partitioned into at least a first and a second portion, a first firmware load being stored in the first portion, the method comprising the steps of, during run-time of the first firmware load: transmitting at least a portion of an updated firmware load through the network to the communication device; temporarily storing the transmitted portion of the updated firmware load in a buffer of the communication device; copying at least a portion of the first firmware load into a random access memory (RAM) of the communication device; triggering execution of the copied portion of the first firmware load from the RAM; and under control of the copied portion of the first firmware load, saving the transmitted portion of the updated firmware load to the second portion of the FLASH memory.
  • RAM random access memory
  • a further aspect of the present invention provides a system for remotely updating firmware saved in a FLASH memory of a communication device connected to a network, the FLASH memory being partitioned into at least a first and a second portion, a first firmware load being stored in the first portion, the system comprising: a server operatively connected to the network and adapted for transmitting at least a portion of an updated firmware load through the network to the communication device; a buffer for temporarily storing the transmitted portion of the updated firmware load; and a microprocessor operative under control of the first firmware load to: copy at least a portion of the first firmware load into a random access memory (RAM) of the communication device; trigger execution of the copied portion of the first firmware load from the RAM; and save the transmitted portion of the updated firmware load to the second portion of the FLASH memory under control of the copied portion of the first firmware load.
  • RAM random access memory
  • a still further aspect of the present invention provides a communication device connected to a network and operative in accordance with firmware saved in a FLASH memory of a communication device, the FLASH memory being partitioned into at least a first and a second portion, a first firmware load being stored in the first portion, the communication device being adapted to enable remote update of the firmware through the network, and comprising: a buffer for temporarily storing a received portion of an updated firmware load; and a microprocessor operative under control of the first firmware load to: copy at least a portion of the first firmware load into a random access memory (RAM) of the communication device; trigger execution of the copied portion of the first firmware load from the RAM; and save the received portion of the updated firmware load to the second portion of the FLASH memory under control of the copied portion of the first firmware load.
  • RAM random access memory
  • the firmware includes program code responsive to commands received from the manufacturer to begin an update procedure.
  • the update procedure controls the communication device to perform the above-noted steps, substantially without interrupting user-initiated communication sessions.
  • the FLASH memory is divided into a Boot Page, and at least a First and a Second Update Pages.
  • a “boot” version of the firmware is installed in the Boot Page at the factory, and is never updated. Updated firmware loads are saved only in the First and Second Update Pages. Accordingly, if a subsequent attempt to update the firmware fails, at least the “boot” version of the firmware will remain in uncorrupted condition, and can be used for operation of the communication device. Similarly; successive updates of the firmware are alternately saved in the first and second Update Pages, so that if an attempted update of the firmware fails, the next most recently updated version of the firmware remains uncorrupted and is available for use.
  • An Active Page Flag is stored in the FLASH memory to identify which of the First and Second Update Pages contains the most up-to-date version of the firmware.
  • the updated version of the firmware becomes active upon a subsequent reboot of the communication device.
  • this is accomplished by the user during their normal use of the communication device: that is, by powering down and later re-booting their PC.
  • communication device reboot can be accomplished automatically as a final step in the update procedure.
  • Automatic reboot is particularly suitable with xDSL communication devices, because the reboot will generally take less that one or two seconds, and the communication device will automatically re-establish its connection with the CO. The CO will detect the brief interruption in the connection, but will not disconnect any ongoing communication sessions (due to its short duration).
  • the communication device can be rebooted with the updated firmware without disrupting any communication sessions of the user.
  • the user may not even be aware that the reboot has taken place.
  • FIG. 1 is a schematic diagram illustrating a communication device, and its connection to an update server at a manufacturer's site in accordance with an embodiment of the present invention
  • FIG. 2 is an exemplary memory map of a firmware load stored in a 32 kb memory page
  • FIG. 3 is an exemplary memory map of a 128 kb FLASH memory divided into four pages
  • FIG. 4 is a flow chart showing the start-up processing following a (cold or warm) boot of the communication device
  • FIGS. 5 a and 5 b are flow charts illustrating respective alternative methods of updating firmware in accordance with the present invention.
  • FIGS. 6 a - 6 b are a flow chart illustrating In-band download of a firmware load in accordance with an embodiment of the present invention.
  • FIGS. 7 a - 7 c show a flow chart illustrating Out-of-Band download of a firmware load in accordance with an embodiment of the present invention.
  • a communication device 1 usable with the present invention comprises a network interface 2 for interfacing with the network 4 , a microprocessor 6 for controlling the operation of the communication device 1 ; a FLASH memory 8 for storing firmware; and RAM 10 used for storing run-time data as well as up-stream and down stream communication buffers (not shown).
  • the communication device 1 is operatively connected to a host computer 12 via the network interface 2 .
  • the microprocessor 6 operates in accordance with the firmware to provide the functionality of the communication device 1 (e.g. to transport information between the host computer 12 and the network 4 ).
  • the communication device 1 is operatively connected to a central office (CO) 14 providing access to the network 4 in a conventional manner. Communications sessions can therefore be established between the communication device 1 and other devices connected to the network 4 (with the communication device 1 initiating or terminating communication sessions), again in a conventional manner.
  • CO central office
  • an update server 16 at a manufacturer's site 18 is connected to the network 4 (in a conventional manner) and is capable of initiating a communication session with the communication device 1 as will be described in greater detail below.
  • FIG. 2 schematically illustrates an exemplary firmware load 20 which is conveniently separated into a boot logic 22 and an application logic 24 .
  • the boot logic 22 comprises instructions which are executed upon initial start-up of the communication device 1 , including low-level operating parameters of the communication device 1 .
  • the boot logic 22 is arranged so that its start address 24 is at a predetermined fixed start address 26 , so that at start up; it can be directly accessed by the microprocessor 6 .
  • Execution of the boot logic 22 provides the microprocessor 6 with the necessary address information for continued operation.
  • the application logic 24 comprises a plurality of programmed procedures, accessible using a high level Application Program Interface (API), for controlling the functionality of the communication device 1 .
  • API Application Program Interface
  • the host computer 12 ; the CO 14 ; etc. can interact with the communication device 1 by means of the API.
  • a communications application e.g. a web browser
  • the CO 14 can interact with the communication device 1 to negotiate transmission power settings, establish communication sessions, verify transmission of data packets, etc.
  • the above-noted descriptions of the communication device 1 and firmware 20 are known, and their implementation is well understood by those skilled in the art.
  • the FLASH memory 8 is divided into a plurality (preferably four) of pages 28 - 34 , which are conveniently of equal size.
  • a 128 kb FLASH memory 8 is divided into four 32 kb pages 28 - 34 , as shown in FIG. 3 .
  • Each page is capable of storing a complete firmware load 20 , and is utilized as follows:
  • Page Description Boot Page (28) Contains an original version of the firmware. First Update Used to store an updated version of Page (30) the firmware Second Update Used to store an updated version of Page (32) the firmware Spare Page Used to store an Active Page flag (34)
  • the Boot Page 28 contains a complete original firmware load 20 a , including boot logic 22 a and application logic 24 a .
  • This original firmware load 20 a is installed and verified at the factory during manufacture of the communication device 1 , and is never modified thereafter. Accordingly, if subsequent attempts to load updated versions of the firmware fail (and also prior to receipt of any updated versions), then the communication device 1 can operate using the original firmware load 20 a stored in the Boot Page 28 .
  • the start address 26 a for the original boot logic 22 a is predetermined, so that the microprocessor 6 can access the original boot logic 22 a stored in the Boot Page 28 upon start-up. Thus start-up of the communication device 1 is always executed on the basis of the original boot logic 22 a installed by the factory.
  • the First and Second Update Pages 30 , 32 are used to store updated firmware loads 20 b , 20 c .
  • the First and Second Update Pages 30 , 32 are the same size as the boot page 30 , and thus each page 30 , 32 is capable of storing a complete firmware load (boot logic 22 and application logic 24 ).
  • boot logic 22 a stored in the Boot Page 28
  • updated firmware loads 20 b , 20 c which are subsequently downloaded and saved into the Update Pages 30 , 32 , may or may not contain a boot logic 22 section, as desired.
  • the Spare Page 34 is preferably not used for storing firmware loads 20 . Instead, the Spare Page 34 is preferably used to store an Active Page Flag 36 which acts as a pointer to the active page.
  • the term “active page” refers to the Update Page (either one of the First or Second Update Pages) 30 , 32 of the FLASH memory 8 which contains the application logic 24 used during run-time of the communication device 1 . Normally, the active page will contain the most recently updated firmware load 20 .
  • the term “inactive page” refers to the other Update Page 30 , 32 which is not pointed to by the Active Page Flag.
  • the inactive page may be empty; contain an incomplete or corrupted firmware load 20 ; or may contain an obsolete firmware load 20 that has been superseded by a more recently updated firmware load 20 saved in the active page.
  • the Active Page Flag 36 is a conditional value which allows firmware logic to enable (or access) the active page. For example: if the Active Page Flag 36 is set to a value of “1”, then the firmware logic determines that the active page is the first Update Page 30 ; otherwise (i.e. if the Active Page Flag 36 is set to any other value) the firmware logic determines that the active page is the second Update Page 32 .
  • the value of the Active Page Flag 36 could be a pointer to the active page (e.g. containing the page-select signal used by the microprocessor 6 to enable the desired page of the FLASH memory).
  • each firmware load 20 is provided with a check-sum value 38 and a jump-code 40 , in addition to the boot logic 22 and application logic 24 (See FIG. 2) Both of the check-sum value 38 and the jump-code 40 are stored at respective predetermined addresses, which preferably remain unchanged in all subsequent update versions of the firmware load 20 .
  • the check-sum value 38 is used to determine the integrity of the respective firmware load 20 , as will be described in greater detail below.
  • the jump code 40 is a pointer to the start address 42 of the respective application logic 24 , and will normally be unique for each version of the firmware load 20 .
  • the purpose of the jump code 40 is that, because its location is predetermined, the original version boot logic 22 a can access the jump code 40 in the active page and thereby determine a start address 42 for the respective application logic 24 , irrespective of changes to the start address 42 effected by an update of the application logic 24 .
  • FIG. 4 illustrates the method by which the original version boot logic 22 a uses the Active Page Flag 36 , check-sum 38 and jump code 40 to access, verify and begin execution of the appropriate application logic 24 .
  • the steps in the process are as follows:
  • the microprocessor 6 On a reset of the communication device 1 (e.g. either a warm or cold boot), the microprocessor 6 enables the Boot Page 28 and begins execution of the original version boot logic 22 a starting at the start address 26 a ;
  • the boot logic 22 a retrieves the Active Page Flag 36 from the Spare Page 34 of the FLASH memory 8 ; identifies the active page on the basis of the Active Page Flag 36 ; and then causes the microprocessor 6 to enables the active page of the FLASH memory 8 ;
  • the microprocessor 6 sets the Active Page Flag 36 to point to the inactive page for future reboots (i.e. the inactive page is designated as the active page), and then execution of the application logic 24 begins at the start address 42 targeted by the jump-code 40 .
  • the microprocessor 6 enables the Boot Page 28 and begins execution of the boot page application logic 24 a at the start address 42 a targeted by the boot page jump-code 40 a.
  • the application logic 24 in accordance with the invention includes procedures for managing the FLASH memory 8 , and for writing data to the FLASH memory 8 . Accessed using the API, these procedures permit the firmware 20 to be updated under the control of either the host computer 12 or through the network 4 by an update server 16 at the manufacturer's site 18 (FIG. 1 ). Exemplary API commands for accessing this functionality are shown in Table 1 below. It should be understood that Table 1 below is exemplary only, and is not necessarily comprehensive.
  • Dnld Clr clears the inactive page of the FLASH memory 8.
  • DnldData addr/data sequence # Writes data to the FLASH memory 8 starting at an address specified by addr DnldEth — cmd Controls In-band download of firmware using the data channel (see detailed description below).
  • SwapApp Verifies contents of the inactive page and sets the Active Page Flag to point to it.
  • the microprocessor 6 can only execute one command at a time, execution of any command automatically causes any other concurrent processes to be temporarily held, and process-specific state-variables stored in a buffer (conventionally provided in the microprocessor 6 for that purpose) pending completion of the command currently being executed.
  • this (conventional) operation of the microprocessor 6 is exploited to enable manipulation and writing of data to the FLASH memory 8 during run-time of the application logic 24 from the FLASH memory 8 . Accordingly, the invention provides a layered operational structure described below with reference to FIGS. 5 a and 5 b . In the embodiment illustrated in FIG.
  • a block of application logic 24 is copied to RAM and executed by a shell routine.
  • a block of application logic 24 is copied to RAM 10 during start-up of the communication device 1 , and remains resident in RAM 10 pending execution under control of the shell routine.
  • both layer structures are illustrated in FIGS. 5 a and 5 b by way of example algorithms which save data to the inactive page of the FLASH memory 8 . It will be understood, however, that other operations can also be performed, as desired, using the layered structure of the invention. Referring now to FIG. 5 a , saving data to the inactive page of the FLASH memory 8 proceeds as follows:
  • Reception of an API command causes execution of a shell routine from the FLASH memory 8 ;
  • the shell routine copies a block of application logic 24 into RAM 10 , and then triggers execution of the copied application logic. Execution of the copied application logic from RAM 10 automatically causes other ongoing processes (controlled by application logic 24 in the FLASH memory 8 ) to be temporarily suspended, thereby releasing the FLASH memory 8 without terminating other processes.
  • the copied application logic in RAM 10 causes the microprocessor 6 to enable the inactive page of the FLASH memory 8 , performs one or more operations on the inactive page of the FLASH memory 8 (e.g. writing bytes of an updated firmware load 20 ); and then causes the microprocessor 6 to enable the active page of the FLASH memory 8 before terminating.
  • Termination of the copied application logic in RAM 10 returns control to the shell routine running in the FLASH memory 8 , and releases the RAM 10 occupied by the copied application logic.
  • the shell routine may issue a response to the API command, prior to terminating.
  • the shell routine can copy the entire application logic 24 to RAM 10 , or only that portion required to execute the functionality accessed by the respective API command, as desired.
  • FIG. 5 b illustrates an alternative layered structure.
  • a block of application logic 24 is copied into RAM 10 during start-up of the communication device 1 , rather than by the shell routine.
  • the copied block of application logic 24 remains resident in RAM 10 , and is triggered by a command (possibly including one or more arguments) from the shell routine.
  • the copied block of application logic 24 completes a single operation step (i.e. it does not contain decision or process control logic) so that process control remains with the shell routine. This minimizes the size and run-time of the copied block of application logic 24 , so that disruption of other concurrent processes (which are interrupted while the copied block of application logic 24 is running from RAM 10 ) is also minimized.
  • the copied block of application logic 24 is a “Copy-address” function which receives a target address of the FLASH memory 8 as an argument, and copies a block of data from a buffer to the inactive page of the FLASH memory 8 starting at the target address.
  • the copied block of data may be as small as a single byte, or larger, as desired.
  • saving data to the FLASH memory 8 proceeds as follows:
  • Reception of an API command causes execution of the shell routine from the FLASH memory 8 ;
  • the shell routine selects an address of the FLASH memory 8 to be written, and then triggers execution of the copied “Copy-address” logic, using the selected address as an argument. Execution of the “Copy-address” logic from RAM 10 automatically causes other ongoing processes (controlled by application logic 24 in the FLASH memory 8 ) to be temporarily suspended, thereby releasing the FLASH memory 8 without terminating other processes.
  • the “Copy-address” logic in RAM 10 causes the microprocessor 6 to enable the inactive page of the FLASH memory 8 , performs one or more operations on the inactive page of the FLASH memory 8 (e.g. writing bytes of an updated firmware load to the FLASH memory 8 starting at the selected address); and then causes the microprocessor 6 to enable the active page of the FLASH memory 8 before terminating.
  • Termination of the “Copy-address” logic in RAM 10 returns control to the shell routine running in the FLASH memory 8 , while leaving the “Copy-address” logic resident in the RAM 10 for future use.
  • the shell routine determines if the a operation is complete.
  • the shell routine may issue a response to the API command, prior to terminating.
  • the shell routine loops back to select a new address and re-trigger the “Copy-address” logic.
  • updated firmware loads can be downloaded and to the communication device 1 and saved in the inactive page of the FLASH memory 8 according to two modes, as described below.
  • the layered structure of FIG. 5 a is used. It will be understood, however, that the same modes of operation can equally be implemented using the layered structure of FIG. 5 b.
  • In-band download utilises a data-channel of the communication device 1 to receive the updated firmware load 20 .
  • the updated firmware load 20 is stored in a buffer of the communication device 1 pending copying of the updated firmware load 20 to the FLASH memory. Referring to FIGS. 6 a - 6 b , In-band download proceeds as follows:
  • the communication device 1 resets the upstream buffers and enters a loop-back mode.
  • the update server 16 then transmits the updated firmware load 20 over the data-channel, which is received and saved in the communication device's upstream buffer.
  • the communication device 1 On receipt of the firmware load 20 , the communication device 1 performs a check-sum operation on the firmware load to verify correct transmission, and transmits the result to the update server 16 .
  • This causes a shell routine to copy a block of Application logic 24 to the RAM and then trigger execution of the copied application logic 24 .
  • the copied application logic causes the microprocessor to enable the inactive page of the FLASH memory 8 ; then copies the updated firmware load 20 from the upstream buffer and into the inactive page; and finally re-enables the active page before returning control to the shell routine and terminating.
  • the update server 16 then transmits a “SwapApp” command, which causes the communication device 1 to set the Active Page Flag 36 to point to the just updated inactive page, so that on a future re-boot of the communication device 1 the boot logic 22 a will start the application logic 24 of the updated firmware load 20 .
  • the “SwapApp” command can also trigger a re-boot of the communication device 1 .
  • In-Band download facilitates a very rapid transmission of an updated firmware load to the communication device 1 .
  • a 20 kb firmware load can be transmitted to the communication device 1 in as little as 0.17 sec. This makes transmitting an updated firmware load 20 rapid and convenient for the manufacturer.
  • copying the updated firmware load to FLASH memory 8 is expected to take significantly longer (a 32 kb load can require as much as 15 seconds to copy).
  • the communication device 1 must first enter a loop-back mode, which necessarily interrupts other data traffic. The communication device 1 cannot be returned to normal operation until the copy operation is completed, so an associated interruption in communications may be experienced by the user.
  • Out of Band download utilises the communication device 1 's message-channel and buffers to download the updated firmware load. Referring to FIGS. 7 a - 7 c , Out of band download proceeds as follows:
  • the update server 16 transmits an “DnldClr” message to the communication device 1 using the communication device's messaging channel.
  • the communication device 1 starts a shell routine which copies a block of application logic 24 to the RAM 10 and triggers execution of the copied application logic from the RAM 10 .
  • the copied application logic causes the microprocessor 6 to enable the inactive page of the FLASH memory 8 ; initializes the inactive page of the FLASH memory 8 by writing a constant value (e.g. “0”) into all locations of the inactive page; and then returns control to the shell routine before terminating.
  • the update server 16 then transmits a “DnldData” command over the message-channel which contains a sequence number, a start address, and at least a portion of an updated firmware load 20 as arguments.
  • the communication device 1 On receipt of the “DnldData” command, the communication device 1 starts a shell routine which copies a block of application logic 24 to the RAM 10 and triggers execution of the copied application logic from the RAM 10 .
  • the copied application logic causes the microprocessor 6 to enable the inactive page of the FLASH memory 8 ; copies the bytes of the updated firmware load 20 included in the DnldData command into the inactive page of the FLASH memory 8 sequentially starting at the specified start address; and then returns control to the shell routine before terminating.
  • the sequence number is not used as part of the save operation, but rather is. passed back to the update server 16 by the shell routine as an argument in an acknowledgement message.
  • the update server 16 When the acknowledgement (and sequence number) are received by the update server 16 , the server is informed that the transmitted portion of the updated firmware load 20 was received correctly. At this point a further portion of the updated firmware load 20 can be transmitted by the update server 16 with the same sequence number or a new one. If the sequence number is not received by the update server 16 , or it is received indicating an error condition, then the update server 16 retransmits the relevant portion of the updated firmware load 20 attached to a new “DnldData” command.
  • Steps 702 and 703 are repeated until the entire updated firmware load 20 has been correctly transmitted to the communication device 1 and saved in the FLASH memory 8 .
  • the update server 16 sends a “SwapApp” command, which causes the communication device 1 to set the Active Page Flag 38 to point to the inactive page (in which the updated firmware load is saved), so that on a future re-boot of the communication device 1 the boot logic 22 a will access and start the application logic 24 of the updated firmware load 20 .
  • the “SwapApp” command may also trigger re-boot of the communication device 1 .
  • Out of-Band download is significantly slower than In-band download, because an updated firmware load must be broken up into small blocks which are transmitted individually. This is due to limitations in the size of the message channel buffer in the communication device 1 (typically 512 bytes). This slows down and complicates the transmission of the updated firmware load 20 , because the update server must continuously monitor the status of the download. Additionally, the risk of an incomplete download is increased because it is possible that a user of the host computer 12 may power down the communication device 1 before the download is complete. However, because the message channel is used for the download, this process can be conducted simultaneously with data traffic of user-initiated communication sessions, and thus it is possible for the entire download operation to be completed without inconveniencing the user.
  • the risk of partial downloads can be managed by maintaining a database of each communication device 1 and a respective current download status. If such a database is maintained, each block of the updated firmware load 20 is assigned a unique sequence number used for the respective “DnldData” command, so that the download status for each communication device 1 may be tracked by the sequence number of the latest successfully completed “DnldData” command. As each acknowledgement message is received by the update server 16 . (step 703 ), the database is updated with the sequence number of the latest successfully completed “DnldData” command. If the communication device 1 goes “off-line” or is powered down before the download is complete, then transmission of “DnldData” commands to the communication device 1 is terminated. When the communication device 1 becomes available at a later time, transmission of “DnldData” commands to the communication device 1 is resumed starting at the sequence number indicated in the database.

Abstract

A method and apparatus for remotely updating firmware saved in a FLASH memory of a communication device connected to a network is presented. The FLASH memory is partitioned into at least a first and a second portion. A first firmware load is stored in the first portion. During run-time of the first firmware load, at least a portion of an updated firmware load is transmitted through the network to the communication device. The transmitted portion of the updated firmware load is temporarily stored in a buffer of the communication device. At least a portion of the first firmware load is copied into a random access memory (RAM) of the communication device. Execution, from the RAM, of the copied portion of the first firmware load is triggered. Under control of the copied portion of the first firmware load, the transmitted portion of the updated firmware load is saved to the second portion of the FLASH memory.

Description

TECHNICAL FIELD
The present invention relates to data communication devices, and in particular to a method of remotely downloading firmware to a communication device (e.g. a modem) through a communication network.
BACKGROUND OF THE INVENTION
The provision of data communication services (e.g. Internet, XDSL etc.) necessarily requires the installation of a communication device (e.g. a modem connected to a host personal computer—PC) at an end-user site. Typically, the end-user is provided with a communications application (e.g. a browser) running on the host PC to control data communication sessions using a graphical user interface (GUI). The communications application interacts with the installed communication device using a high level Application Program Interface (API) to access firmware governing the low-level functionality of the communication device. Such firmware is commonly saved in a FLASH memory during manufacture of the communication device, and is run from the FLASH memory.
As in other areas of the software industry, firmware applications are not static. Rather, development is an on-going process of improving algorithms and code to enhance the reliability and functionality of the communication device. However, while updated firmware applications can easily be loaded into new communication devices at the factory, it is difficult to provide upgrade loads to communication devices which have been already sold and delivered to the customer.
U.S. Pat. No. 5,268,928 (Herh, et. al.) teaches a data modem with remote firmware update capabilities. According to Herh et al., the data modem is provided with a read only memory (ROM), and a battery-backed random access memory (RAM). The firmware is divided into a boot-logic which is saved in the ROM, and application logic which is stored in the battery-backed RAM. Update loads of the application logic can be downloaded to the modem during normal operation of the device and stored in the battery-backed RAM. Herh et al. require that the modem be provided with two separate memories, and further require that the data modem have additional circuitry (including a built-in battery) to ensure that the application logic is not lost when the modem is turned off. This increases the cost and complexity of the data modem. Another disadvantage of the data modem taught by Herh et al. is that the boot logic (which enables the data modem to perform its basic functions) are stored in the ROM, and thus cannot be updated during the life of the data modem.
It is preferable to store the firmware (both boot and application logic) in a FLASH memory, which is a non-volatile form of programmable memory. One of the advantages of saving the firmware in FLASH memory is that no special equipment is required to write data to the FLASH memory. The circuitry already provided on the device for normal read/write operations is sufficient. Because the FLASH memory can be used for both read and write operations, is it convenient to run the firmware from the FLASH-memory, which minimizes the requirement for RAM. Furthermore, the FLASH memory retains its information after loss of power, so battery-backup circuits are not required.
FLASH memory is readily available in standard sizes (e.g. 128 kb), and, depending on the addressing limitations of the microprocessor of the communication device, may be logically divided into frames or pages (e.g. of 32 kb each). Typically, each page can be enabled (i.e. accessed for reading or writing data) individually by the microprocessor by means of an appropriate page-select signal applied to one or more page-select input pins on the FLASH memory chip. Each page is further subdivided into individually accessible blocks, which can be accessed by the microprocessor by applying appropriate address-select signals to address-select input pins on the FLASH memory chip. Conveniently, corresponding blocks of every page can be accessed using a common address-select signal, so that any desired block on any page of the FLASH memory can be uniquely accessed by applying appropriate page-select and address-select signals (in combination) to the page-select and address-select input pins of the FLASH memory chip.
During operation of the communication device, the microprocessor holds one page in enabled condition (by holding the page select signal constant), and then reads firmware application logic from blocks of the enabled page by changing the address-select signal (either incrementally or in response to jump commands embedded in application logic). Since a single address-select signal can access a corresponding block of memory on each page, changing the page-select signal (thereby enabling another page) during execution of the application logic will very likely cause erroneous operation of the communication device as the microprocessor attempts to execute the contents of a block of FLASH memory which is located on a page other than the page containing the application logic. As a safety measure to prevent this occurrence, firmware applications are typically written in such a way as to prevent the microprocessor from enabling any other page of the FLASH memory while any portion of the application logic is being run.
It is not possible to write information to a portion of the FLASH memory, while reading information from that same portion of FLASH memory. Thus when the modem is in operating mode, the firmware application is being run (therefore also read) from the FLASH memory, and it is not possible to write an updated firmware load to the FLASH memory. Where the FLASH memory is divided into pages, then during operation of the modem the page which contains the firmware application (or that part of it which is running at that time) is necessarily being held in enabled condition, which precludes saving an updated firmware load to any other page of the FLASH memory.
As a result of the above-noted problems, the method of Herh et al. cannot be used in a data modem in which the firmware is stored in a FLASH memory.
Two other methods are known for updating modem firmware. The first of these is exemplified by U.S. Pat. No. 5,781,921 (Nichols), wherein the updated software is distributed in a removable memory device (e.g. a floppy diskette, or a memory cartridge adapted to connect to the modem). Once the removable memory device has been coupled to the modem, the updated firmware is installed under software control. The second method, which is commonly used in the software industry, requires the end user to download the updated firmware load over the communication network, and then subsequently install the updated load under software control.
Both of these methods have certain drawbacks. The use of a removable memory device is expensive, because copies of the device must be either distributed to each user (and used only once), or service technicians must be hired to perform the upgrade. Downloading updated software (e.g. through the Internet) is commonly used as a means of distributing software updates, but requires intervention by the user. Each of these methods is undesirable because each creates inconvenience for the user. Because of the inconvenience, many users will not attempt to upgrade the firmware unless forced to do so because of problems using the modem, which means that the user is already experiencing dissatisfaction with the modem. Additionally, the manufacturer of the modem is forced to rely on others to distribute and install the update loads, and thus cannot be confident that all customers' modems are operating with the latest firmware.
There therefore remains a need for a method of updating firmware of a communication device, under remote control and with minimum disruption to the user.
SUMMARY OF THE INVENTION
It is an object of the invention to provide a method of remotely updating firmware saved in FLASH memory, with minimum user-perceivable disruption in the operation of the communication device.
It is a further object of the present invention to provide a method of remotely updating firmware saved in FLASH memory, in which operation of the communication device is protected in the event of a failure during an attempted update operation.
Accordingly, an aspect of the present invention provides a method of remotely updating firmware saved in a FLASH memory of a communication device connected to a network, the FLASH memory being partitioned into at least a first and a second portion, a first firmware load being stored in the first portion, the method comprising the steps of, during run-time of the first firmware load: transmitting at least a portion of an updated firmware load through the network to the communication device; temporarily storing the transmitted portion of the updated firmware load in a buffer of the communication device; copying at least a portion of the first firmware load into a random access memory (RAM) of the communication device; triggering execution of the copied portion of the first firmware load from the RAM; and under control of the copied portion of the first firmware load, saving the transmitted portion of the updated firmware load to the second portion of the FLASH memory.
A further aspect of the present invention provides a system for remotely updating firmware saved in a FLASH memory of a communication device connected to a network, the FLASH memory being partitioned into at least a first and a second portion, a first firmware load being stored in the first portion, the system comprising: a server operatively connected to the network and adapted for transmitting at least a portion of an updated firmware load through the network to the communication device; a buffer for temporarily storing the transmitted portion of the updated firmware load; and a microprocessor operative under control of the first firmware load to: copy at least a portion of the first firmware load into a random access memory (RAM) of the communication device; trigger execution of the copied portion of the first firmware load from the RAM; and save the transmitted portion of the updated firmware load to the second portion of the FLASH memory under control of the copied portion of the first firmware load.
A still further aspect of the present invention provides a communication device connected to a network and operative in accordance with firmware saved in a FLASH memory of a communication device, the FLASH memory being partitioned into at least a first and a second portion, a first firmware load being stored in the first portion, the communication device being adapted to enable remote update of the firmware through the network, and comprising: a buffer for temporarily storing a received portion of an updated firmware load; and a microprocessor operative under control of the first firmware load to: copy at least a portion of the first firmware load into a random access memory (RAM) of the communication device; trigger execution of the copied portion of the first firmware load from the RAM; and save the received portion of the updated firmware load to the second portion of the FLASH memory under control of the copied portion of the first firmware load.
In accordance with the present invention, the firmware includes program code responsive to commands received from the manufacturer to begin an update procedure. The update procedure controls the communication device to perform the above-noted steps, substantially without interrupting user-initiated communication sessions.
In an embodiment of the invention, the FLASH memory is divided into a Boot Page, and at least a First and a Second Update Pages. A “boot” version of the firmware is installed in the Boot Page at the factory, and is never updated. Updated firmware loads are saved only in the First and Second Update Pages. Accordingly, if a subsequent attempt to update the firmware fails, at least the “boot” version of the firmware will remain in uncorrupted condition, and can be used for operation of the communication device. Similarly; successive updates of the firmware are alternately saved in the first and second Update Pages, so that if an attempted update of the firmware fails, the next most recently updated version of the firmware remains uncorrupted and is available for use. An Active Page Flag is stored in the FLASH memory to identify which of the First and Second Update Pages contains the most up-to-date version of the firmware.
In accordance with the present invention, after completion of the update procedure, the updated version of the firmware becomes active upon a subsequent reboot of the communication device. In one embodiment, this is accomplished by the user during their normal use of the communication device: that is, by powering down and later re-booting their PC. In an alternate embodiment, communication device reboot can be accomplished automatically as a final step in the update procedure. Automatic reboot is particularly suitable with xDSL communication devices, because the reboot will generally take less that one or two seconds, and the communication device will automatically re-establish its connection with the CO. The CO will detect the brief interruption in the connection, but will not disconnect any ongoing communication sessions (due to its short duration). Thus the communication device can be rebooted with the updated firmware without disrupting any communication sessions of the user. Depending on the type and data traffic of the communication session being engaged in, the user may not even be aware that the reboot has taken place.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention will now be explained by way of example only and with reference to the following drawings, wherein:
FIG. 1 is a schematic diagram illustrating a communication device, and its connection to an update server at a manufacturer's site in accordance with an embodiment of the present invention;
FIG. 2 is an exemplary memory map of a firmware load stored in a 32 kb memory page;
FIG. 3 is an exemplary memory map of a 128 kb FLASH memory divided into four pages;
FIG. 4 is a flow chart showing the start-up processing following a (cold or warm) boot of the communication device;
FIGS. 5a and 5 b are flow charts illustrating respective alternative methods of updating firmware in accordance with the present invention;
FIGS. 6a-6 b are a flow chart illustrating In-band download of a firmware load in accordance with an embodiment of the present invention; and
FIGS. 7a-7 c show a flow chart illustrating Out-of-Band download of a firmware load in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
As shown in FIG. 1, a communication device 1 usable with the present invention comprises a network interface 2 for interfacing with the network 4, a microprocessor 6 for controlling the operation of the communication device 1; a FLASH memory 8 for storing firmware; and RAM 10 used for storing run-time data as well as up-stream and down stream communication buffers (not shown). In the illustrated embodiment, the communication device 1 is operatively connected to a host computer 12 via the network interface 2. In use, the microprocessor 6 operates in accordance with the firmware to provide the functionality of the communication device 1 (e.g. to transport information between the host computer 12 and the network 4).
The communication device 1 is operatively connected to a central office (CO) 14 providing access to the network 4 in a conventional manner. Communications sessions can therefore be established between the communication device 1 and other devices connected to the network 4 (with the communication device 1 initiating or terminating communication sessions), again in a conventional manner. In FIG. 1, an update server 16 at a manufacturer's site 18 is connected to the network 4 (in a conventional manner) and is capable of initiating a communication session with the communication device 1 as will be described in greater detail below.
FIG. 2 schematically illustrates an exemplary firmware load 20 which is conveniently separated into a boot logic 22 and an application logic 24. The boot logic 22 comprises instructions which are executed upon initial start-up of the communication device 1, including low-level operating parameters of the communication device 1. The boot logic 22 is arranged so that its start address 24 is at a predetermined fixed start address 26, so that at start up; it can be directly accessed by the microprocessor 6. Execution of the boot logic 22 provides the microprocessor 6 with the necessary address information for continued operation. The application logic 24 comprises a plurality of programmed procedures, accessible using a high level Application Program Interface (API), for controlling the functionality of the communication device 1. Thus devices external to the communication device 1 (i.e. the host computer 12; the CO 14; etc.) can interact with the communication device 1 by means of the API. For example, a communications application (e.g. a web browser) resident in the host computer 12 can interact with the communication device 1 to establish a data connection with the network 4, and to up-load and down-load data. Similarly, the CO 14 can interact with the communication device 1 to negotiate transmission power settings, establish communication sessions, verify transmission of data packets, etc. The above-noted descriptions of the communication device 1 and firmware 20 are known, and their implementation is well understood by those skilled in the art.
In accordance with the present invention, the FLASH memory 8 is divided into a plurality (preferably four) of pages 28-34, which are conveniently of equal size. In the illustrated embodiment, a 128 kb FLASH memory 8 is divided into four 32 kb pages 28-34, as shown in FIG. 3. Each page is capable of storing a complete firmware load 20, and is utilized as follows:
Page Description
Boot Page (28) Contains an original version of the
firmware.
First Update Used to store an updated version of
Page (30) the firmware
Second Update Used to store an updated version of
Page (32) the firmware
Spare Page Used to store an Active Page flag
(34)
As indicated above, The Boot Page 28 contains a complete original firmware load 20 a, including boot logic 22 a and application logic 24 a. This original firmware load 20 a is installed and verified at the factory during manufacture of the communication device 1, and is never modified thereafter. Accordingly, if subsequent attempts to load updated versions of the firmware fail (and also prior to receipt of any updated versions), then the communication device 1 can operate using the original firmware load 20 a stored in the Boot Page 28. The start address 26 a for the original boot logic 22 a is predetermined, so that the microprocessor 6 can access the original boot logic 22 a stored in the Boot Page 28 upon start-up. Thus start-up of the communication device 1 is always executed on the basis of the original boot logic 22 a installed by the factory.
The First and Second Update Pages 30, 32 are used to store updated firmware loads 20 b, 20 c. As shown in FIG. 3, the First and Second Update Pages 30, 32 are the same size as the boot page 30, and thus each page 30, 32 is capable of storing a complete firmware load (boot logic 22 and application logic 24). However, as noted above, only the original boot logic 22 a (stored in the Boot Page 28) is used during start-up of the communication device 1. Accordingly, updated firmware loads 20 b, 20 c, which are subsequently downloaded and saved into the Update Pages 30, 32, may or may not contain a boot logic 22 section, as desired.
The Spare Page 34 is preferably not used for storing firmware loads 20. Instead, the Spare Page 34 is preferably used to store an Active Page Flag 36 which acts as a pointer to the active page. In the context of the present invention, the term “active page” refers to the Update Page (either one of the First or Second Update Pages) 30, 32 of the FLASH memory 8 which contains the application logic 24 used during run-time of the communication device 1. Normally, the active page will contain the most recently updated firmware load 20. The term “inactive page” refers to the other Update Page 30, 32 which is not pointed to by the Active Page Flag. The inactive page may be empty; contain an incomplete or corrupted firmware load 20; or may contain an obsolete firmware load 20 that has been superseded by a more recently updated firmware load 20 saved in the active page. In an embodiment of the present invention, the Active Page Flag 36 is a conditional value which allows firmware logic to enable (or access) the active page. For example: if the Active Page Flag 36 is set to a value of “1”, then the firmware logic determines that the active page is the first Update Page 30; otherwise (i.e. if the Active Page Flag 36 is set to any other value) the firmware logic determines that the active page is the second Update Page 32. Alternatively, the value of the Active Page Flag 36 could be a pointer to the active page (e.g. containing the page-select signal used by the microprocessor 6 to enable the desired page of the FLASH memory).
In accordance with an embodiment of the present invention, each firmware load 20 is provided with a check-sum value 38 and a jump-code 40, in addition to the boot logic 22 and application logic 24 (See FIG. 2) Both of the check-sum value 38 and the jump-code 40 are stored at respective predetermined addresses, which preferably remain unchanged in all subsequent update versions of the firmware load 20. The check-sum value 38 is used to determine the integrity of the respective firmware load 20, as will be described in greater detail below. The jump code 40 is a pointer to the start address 42 of the respective application logic 24, and will normally be unique for each version of the firmware load 20. The purpose of the jump code 40 is that, because its location is predetermined, the original version boot logic 22 a can access the jump code 40 in the active page and thereby determine a start address 42 for the respective application logic 24, irrespective of changes to the start address 42 effected by an update of the application logic 24.
FIG. 4 illustrates the method by which the original version boot logic 22 a uses the Active Page Flag 36, check-sum 38 and jump code 40 to access, verify and begin execution of the appropriate application logic 24. The steps in the process are as follows:
401. On a reset of the communication device 1 (e.g. either a warm or cold boot), the microprocessor 6 enables the Boot Page 28 and begins execution of the original version boot logic 22 a starting at the start address 26 a;
402. the boot logic 22 a retrieves the Active Page Flag 36 from the Spare Page 34 of the FLASH memory 8; identifies the active page on the basis of the Active Page Flag 36; and then causes the microprocessor 6 to enables the active page of the FLASH memory 8;
403. the check-sum value 38 of the active page is checked in a conventional manner;
404. If the active page check-sum value 38 is valid, then execution of the application logic 24 begins at the address 42 targeted by the active page jump-code 40;
405. If the active page check-sum value is invalid, then the microprocessor 6 enables the inactive page;
406. the check-sum value 38 of the inactive page is then checked in a conventional manner;
407. If the inactive page check sum value 38 is valid, then the microprocessor 6 sets the Active Page Flag 36 to point to the inactive page for future reboots (i.e. the inactive page is designated as the active page), and then execution of the application logic 24 begins at the start address 42 targeted by the jump-code 40.
408. If the inactive page check sum value 38 is invalid, then the microprocessor 6 enables the Boot Page 28 and begins execution of the boot page application logic 24 a at the start address 42 a targeted by the boot page jump-code 40 a.
In addition to programmed routines for controlling communications functionality of the communication device 1, the application logic 24 in accordance with the invention includes procedures for managing the FLASH memory 8, and for writing data to the FLASH memory 8. Accessed using the API, these procedures permit the firmware 20 to be updated under the control of either the host computer 12 or through the network 4 by an update server 16 at the manufacturer's site 18 (FIG. 1). Exemplary API commands for accessing this functionality are shown in Table 1 below. It should be understood that Table 1 below is exemplary only, and is not necessarily comprehensive.
TABLE 1
Code Data Argument Description
Dnld Clr clears the inactive page
of the FLASH memory 8.
DnldData addr/data sequence # Writes data to the FLASH
memory
8 starting at an
address specified by
addr
DnldEth cmd Controls In-band
download of firmware
using the data channel
(see detailed
description below).
cmd=0 : get status
cmd=1 : In-band prep.
cmd=2 : In-band verify
cmd=3: : In-band copy
cmd=4 : compare buffer
to FLASH memory 8
cmd=5 : query “In-band
copy done?”
SwapApp Verifies contents of the
inactive page and sets
the Active Page Flag to
point to it.
As noted above, it is not possible to change the active page or write data to the FLASH memory 8 while it is active. However, because the microprocessor 6 can only execute one command at a time, execution of any command automatically causes any other concurrent processes to be temporarily held, and process-specific state-variables stored in a buffer (conventionally provided in the microprocessor 6 for that purpose) pending completion of the command currently being executed. In accordance with the present invention, this (conventional) operation of the microprocessor 6 is exploited to enable manipulation and writing of data to the FLASH memory 8 during run-time of the application logic 24 from the FLASH memory 8. Accordingly, the invention provides a layered operational structure described below with reference to FIGS. 5a and 5 b. In the embodiment illustrated in FIG. 5a, a block of application logic 24 is copied to RAM and executed by a shell routine. In the embodiment illustrated in FIG. 5b, a block of application logic 24 is copied to RAM 10 during start-up of the communication device 1, and remains resident in RAM 10 pending execution under control of the shell routine. For ease of illustration, both layer structures are illustrated in FIGS. 5a and 5 b by way of example algorithms which save data to the inactive page of the FLASH memory 8. It will be understood, however, that other operations can also be performed, as desired, using the layered structure of the invention. Referring now to FIG. 5a, saving data to the inactive page of the FLASH memory 8 proceeds as follows:
501. Reception of an API command (e.g. from the update server 16) causes execution of a shell routine from the FLASH memory 8;
502. The shell routine copies a block of application logic 24 into RAM 10, and then triggers execution of the copied application logic. Execution of the copied application logic from RAM 10 automatically causes other ongoing processes (controlled by application logic 24 in the FLASH memory 8) to be temporarily suspended, thereby releasing the FLASH memory 8 without terminating other processes.
503. The copied application logic in RAM 10 causes the microprocessor 6 to enable the inactive page of the FLASH memory 8, performs one or more operations on the inactive page of the FLASH memory 8 (e.g. writing bytes of an updated firmware load 20); and then causes the microprocessor 6 to enable the active page of the FLASH memory 8 before terminating.
504. Termination of the copied application logic in RAM 10 returns control to the shell routine running in the FLASH memory 8, and releases the RAM 10 occupied by the copied application logic. The shell routine may issue a response to the API command, prior to terminating.
Following termination of the shell routine, suspended processes can resume on the basis of their respective state variables. The shell routine can copy the entire application logic 24 to RAM 10, or only that portion required to execute the functionality accessed by the respective API command, as desired.
FIG. 5b illustrates an alternative layered structure. In this case, a block of application logic 24 is copied into RAM 10 during start-up of the communication device 1, rather than by the shell routine. The copied block of application logic 24 remains resident in RAM 10, and is triggered by a command (possibly including one or more arguments) from the shell routine. Preferably, the copied block of application logic 24 completes a single operation step (i.e. it does not contain decision or process control logic) so that process control remains with the shell routine. This minimizes the size and run-time of the copied block of application logic 24, so that disruption of other concurrent processes (which are interrupted while the copied block of application logic 24 is running from RAM 10) is also minimized.
In the example illustrated in FIG. 5b, the copied block of application logic 24 is a “Copy-address” function which receives a target address of the FLASH memory 8 as an argument, and copies a block of data from a buffer to the inactive page of the FLASH memory 8 starting at the target address. The copied block of data may be as small as a single byte, or larger, as desired. As shown in FIG. 5b, using this alternative arrangement, saving data to the FLASH memory 8 proceeds as follows:
505. Reception of an API command (e.g. from the update server 16) causes execution of the shell routine from the FLASH memory 8;
506. The shell routine selects an address of the FLASH memory 8 to be written, and then triggers execution of the copied “Copy-address” logic, using the selected address as an argument. Execution of the “Copy-address” logic from RAM 10 automatically causes other ongoing processes (controlled by application logic 24 in the FLASH memory 8) to be temporarily suspended, thereby releasing the FLASH memory 8 without terminating other processes.
507. The “Copy-address” logic in RAM 10 causes the microprocessor 6 to enable the inactive page of the FLASH memory 8, performs one or more operations on the inactive page of the FLASH memory 8 (e.g. writing bytes of an updated firmware load to the FLASH memory 8 starting at the selected address); and then causes the microprocessor 6 to enable the active page of the FLASH memory 8 before terminating.
508. Termination of the “Copy-address” logic in RAM 10 returns control to the shell routine running in the FLASH memory 8, while leaving the “Copy-address” logic resident in the RAM 10 for future use. The shell routine then determines if the a operation is complete.
509. If the result of the check at step 508 above is “YES”, the shell routine may issue a response to the API command, prior to terminating. Alternatively, if the result of the check at step 508 above is “NO”, the shell routine loops back to select a new address and re-trigger the “Copy-address” logic.
Using the layered structure as described above with reference to FIGS. 5a and 5 b, updated firmware loads can be downloaded and to the communication device 1 and saved in the inactive page of the FLASH memory 8 according to two modes, as described below. In the following two examples, the layered structure of FIG. 5a is used. It will be understood, however, that the same modes of operation can equally be implemented using the layered structure of FIG. 5b.
Mode 1: In-band Download
In-band download utilises a data-channel of the communication device 1 to receive the updated firmware load 20. The updated firmware load 20 is stored in a buffer of the communication device 1 pending copying of the updated firmware load 20 to the FLASH memory. Referring to FIGS. 6a-6 b, In-band download proceeds as follows:
601 The update server 16 transmits an In-band Prep. (DnldEth, cmd=1) message to the communication device 1 using the communication device's messaging channel. In response to the In-band Prep. message, the communication device 1 resets the upstream buffers and enters a loop-back mode.
602 The update server 16 then transmits the updated firmware load 20 over the data-channel, which is received and saved in the communication device's upstream buffer. On receipt of the firmware load 20, the communication device 1 performs a check-sum operation on the firmware load to verify correct transmission, and transmits the result to the update server 16.
603 If the result of the check-sum operation is correct, the update server 16 transmits an In-Band Copy-to-FLASH command (DnldEth, cmd=3) over the communication device's message channel. This causes a shell routine to copy a block of Application logic 24 to the RAM and then trigger execution of the copied application logic 24. The copied application logic causes the microprocessor to enable the inactive page of the FLASH memory 8; then copies the updated firmware load 20 from the upstream buffer and into the inactive page; and finally re-enables the active page before returning control to the shell routine and terminating.
604 While In-Band Copy operation (step 603) is in progress, the update server 16 periodically (e.g. every 2-3 seconds) sends an “In-band Copy Done query” (DnldEth, cmd=5) to the communication device 1. However, since the copied application logic 24 running in the RAM is not responsive to this query (because it only contains logic for copying data from the upstream buffers to the inactive page), no response to the query is returned to the update server 16 until the In-Band Copy operation is completed and the active page of the FLASH memory 8 is re-enabled. Control then returns to the application logic 24 running in the FLASH memory 8. At this point, the “In-band Copy Done query” (DnldEth, cmd=5) is acknowledged by returning the query to the update server 16, which notifies the update server 16 that the copy operation has been completed.
605 The update server 16 then transmits a “SwapApp” command, which causes the communication device 1 to set the Active Page Flag 36 to point to the just updated inactive page, so that on a future re-boot of the communication device 1 the boot logic 22 a will start the application logic 24 of the updated firmware load 20. In an embodiment of the invention, the “SwapApp” command can also trigger a re-boot of the communication device 1.
In-Band download facilitates a very rapid transmission of an updated firmware load to the communication device 1. For example, a 20 kb firmware load can be transmitted to the communication device 1 in as little as 0.17 sec. This makes transmitting an updated firmware load 20 rapid and convenient for the manufacturer. However, copying the updated firmware load to FLASH memory 8 is expected to take significantly longer (a 32 kb load can require as much as 15 seconds to copy). Because data channel and the upstream buffers are used to transfer the updated firmware load 20, the communication device 1 must first enter a loop-back mode, which necessarily interrupts other data traffic. The communication device 1 cannot be returned to normal operation until the copy operation is completed, so an associated interruption in communications may be experienced by the user.
Mode 2: Out of Band Download
Out of Band download utilises the communication device 1's message-channel and buffers to download the updated firmware load. Referring to FIGS. 7a-7 c, Out of band download proceeds as follows:
701. The update server 16 transmits an “DnldClr” message to the communication device 1 using the communication device's messaging channel. In response to the “DnldClr” message, the communication device 1 starts a shell routine which copies a block of application logic 24 to the RAM 10 and triggers execution of the copied application logic from the RAM 10. The copied application logic causes the microprocessor 6 to enable the inactive page of the FLASH memory 8; initializes the inactive page of the FLASH memory 8 by writing a constant value (e.g. “0”) into all locations of the inactive page; and then returns control to the shell routine before terminating.
702. The update server 16 then transmits a “DnldData” command over the message-channel which contains a sequence number, a start address, and at least a portion of an updated firmware load 20 as arguments.
703. On receipt of the “DnldData” command, the communication device 1 starts a shell routine which copies a block of application logic 24 to the RAM 10 and triggers execution of the copied application logic from the RAM 10. The copied application logic causes the microprocessor 6 to enable the inactive page of the FLASH memory 8; copies the bytes of the updated firmware load 20 included in the DnldData command into the inactive page of the FLASH memory 8 sequentially starting at the specified start address; and then returns control to the shell routine before terminating. The sequence number is not used as part of the save operation, but rather is. passed back to the update server 16 by the shell routine as an argument in an acknowledgement message. When the acknowledgement (and sequence number) are received by the update server 16, the server is informed that the transmitted portion of the updated firmware load 20 was received correctly. At this point a further portion of the updated firmware load 20 can be transmitted by the update server 16 with the same sequence number or a new one. If the sequence number is not received by the update server 16, or it is received indicating an error condition, then the update server 16 retransmits the relevant portion of the updated firmware load 20 attached to a new “DnldData” command.
704. Steps 702 and 703 are repeated until the entire updated firmware load 20 has been correctly transmitted to the communication device 1 and saved in the FLASH memory 8.
705. Once the download process (steps 702-704) is completed, the update server 16 sends a “SwapApp” command, which causes the communication device 1 to set the Active Page Flag 38 to point to the inactive page (in which the updated firmware load is saved), so that on a future re-boot of the communication device 1 the boot logic 22 a will access and start the application logic 24 of the updated firmware load 20. As noted above, the “SwapApp” command may also trigger re-boot of the communication device 1.
Out of-Band download is significantly slower than In-band download, because an updated firmware load must be broken up into small blocks which are transmitted individually. This is due to limitations in the size of the message channel buffer in the communication device 1 (typically 512 bytes). This slows down and complicates the transmission of the updated firmware load 20, because the update server must continuously monitor the status of the download. Additionally, the risk of an incomplete download is increased because it is possible that a user of the host computer 12 may power down the communication device 1 before the download is complete. However, because the message channel is used for the download, this process can be conducted simultaneously with data traffic of user-initiated communication sessions, and thus it is possible for the entire download operation to be completed without inconveniencing the user.
The risk of partial downloads can be managed by maintaining a database of each communication device 1 and a respective current download status. If such a database is maintained, each block of the updated firmware load 20 is assigned a unique sequence number used for the respective “DnldData” command, so that the download status for each communication device 1 may be tracked by the sequence number of the latest successfully completed “DnldData” command. As each acknowledgement message is received by the update server 16. (step 703), the database is updated with the sequence number of the latest successfully completed “DnldData” command. If the communication device 1 goes “off-line” or is powered down before the download is complete, then transmission of “DnldData” commands to the communication device 1 is terminated. When the communication device 1 becomes available at a later time, transmission of “DnldData” commands to the communication device 1 is resumed starting at the sequence number indicated in the database.
The embodiments of the invention described above are intended to be exemplary only. Changes and modifications will no doubt become apparent to those of skill in the art. The scope of the invention is therefore intended to be limited solely by the scope of the appended claims.

Claims (46)

I claim:
1. A method of remotely updating firmware saved in a FLASH memory of a communication device connected to a network, the method comprising steps of:
a) providing a boot page of the FLASH memory for storing a first firmware load;
b) providing a pair of update pages of the FLASH memory, each update page being adapted to store a respective firmware load;
c) designating one of the update pages as an active update page, and the other one of the update pages as an active update page;
d) transmitting an updated firmware load through the network to the communication device;
e) storing, under control of the first firmware load, the updated firmware load in the inactive update page of the FLASH memory; and
f) rebooting the communication device under control of the first firmware load, including steps of:
i) dynamically identifying, from among the firmware loads stored in the FLASH memory, a most recently stored valid firmware load; and
ii) continuing operation of the communication device under control of the identified most recently stored valid firmware load.
2. A method as claimed in claim 1, wherein an entire updated firmware load is transmitted in a single download operation using a data channel of the communication device, and temporarily stored in an upstream buffer of the communication device.
3. A method as claimed in claimed 2, further comprising a step of placing the communication device into a loop-back mode prior to transmitting the updated firmware load.
4. A method as claimed in claim 1, further comprising a step of preliminarily dividing the updated firmware load into a plurality of predetermined load portions.
5. A method as claimed in claim 4, wherein each load portion is transmitted in a respective download operation using a message channel of the communication device.
6. A method as claimed in claim 5, wherein in each download operation comprises transmitting a DnldData command including an address and the load portion as arguments.
7. A method as claimed in claim 6, further comprising a step of saving the load portion in the FLASH memory starting at an address of the FLASH memory corresponding to the address included in the DnldData command.
8. A method as claimed in claim 4, further comprising a step of determining whether or not the load portion has been correctly saved in the FLASH memory.
9. A method as claimed in claim 8, wherein when the load portion has been correctly saved in the FLASH memory, transmitting another load portion to the communication device, and when the load portion has not been correctly saved in the FLASH memory, re-transmitting the load portion to the communication device.
10. A method as claimed in claim 4, further comprising monitoring a download status of the updated firmware load to the communication device.
11. A method as claimed in claim 10, wherein monitoring the download status comprises maintaining a database including a sequence number of a load portion correctly saved in the FLASH memory and incrementing the sequence number as each successive load portion is correctly saved in the FLASH memory.
12. A method as claimed in claim 1, wherein the step of saving the updated firmware load in the inactive update page comprises a step of determining whether or not a complete updated firmware load has been successfully saved in the inactive update page.
13. A method as claimed in claim 12, further comprising, when the updated firmware load has been successfully saved in the inactive update page, a step of modifying an active page flag to point to the inactive page, such that the inactive page will become the active page upon a subsequent re-boot of the communication device.
14. A method as claimed in claim 1, wherein the step of dynamically identifying a most recently stored valid firmware load comprises steps of:
a) accessing the active update page to determine the presence of a valid firmware load; and
b) if a valid firmware load is not located in the active update page, accessing the inactive update page to determine the presence of a valid firmware load.
15. A method as claimed in claim 14, wherein, if a valid firmware load is located in the active update page, the step of continuing operation of the communication device under control of the identified most recently stored valid firmware load comprises a step of continuing operation of the communication device under control of the firmware load in the active update page.
16. A method as claimed in claim 14, wherein, if a valid firmware load is located in the inactive update page, the step of continuing operation of the communication device under control of the identified most recently stored valid firmware load comprises steps of:
a) continuing operation of the communication device under control of the firmware load in the inactive update page; and
b) modifying an active page flag to point to the inactive update page, whereby the inactive update page will become the active update page upon a subsequent re-boot of the communication device.
17. A method as claimed in claim 14, wherein, if a valid firmware load is not located in the either the active of inactive update pages, the step of continuing operation of the communication device under control of the identified most recently stored valid firmware load comprises a step of continuing operation of the communication device under control of the first firmware load in the boot page.
18. A system for remotely updating firmware saved in a FLASH memory of a communication device connected to a network, the system comprising:
a) a boot page of the FLASH memory for storing a first firmware load;
b) a pair of update pages of the FLASH memory, each update page being adapted to store a respective firmware load, one of the update pages being designated as an active update page, and the other one of the update pages as an inactive update page;
c) a server operatively connected to the network and adapted for transmitting an updated firmware load through the network to the communication device; and
d) a microprocessor operative to:
i) store, under control of the first firmware load, the updated firmware load in the inactive update page of the FLASH memory; and
ii) reboot the communication device under control of the first firmware load, including steps of:
dynamically identifying, from among the firmware loads stored in the FLASH memory, a most recently stored valid firmware load; and
continuing operation of the communication device under control of the identified most recently stored valid firmware load.
19. A system as claimed in claim 18, wherein the first firmware load includes a boot logic adapted to control operation of the microprocessor during a start-up of the communication device.
20. A system as claimed in claim 18, wherein the server is adapted to transmit an entire updated firmware load in a single download operation using a data channel of the communication device.
21. A system as claimed in claim 20, wherein the microprocessor is operative under control of the first firmware load to place the communication device into a loop-back mode in response to a message transmitted by the server.
22. A system as claimed in claim 18, wherein the server is adapted to preliminarily divide the updated firmware load into a plurality of predetermined load portions.
23. A system as claimed in claim 22, wherein the server is adapted to transmit each load portion in a respective download operation using a message channel of the communication device.
24. A system as claimed in claim 23, wherein the server is adapted to transmit a DnldData command including an address and the load portion as arguments during each download operation.
25. A system as claimed in claim 24, wherein the microprocessor is operative under control of the copied portion of the first firmware load to save the load portion in the FLASH memory starting at an address of the FLASH memory corresponding to the address included in the DnldData command.
26. A system as claimed in claim 22, further comprising means for monitoring a download status of the updated firmware load to the communication device.
27. A system as claimed in claim 26, wherein the means for monitoring a download status of the updated firmware load to the communication device comprises:
a) a respective sequence number associated with each load portion transmitted by the server;
b) a database including, in respect of the communication device, the sequence number corresponding to a load portion correctly saved in the FLASH memory;
c) means for determining whether or not the load portion transmitted by the server has been correctly saved in the FLASH memory; and
d) means for updating the database as each successive load portion is correctly saved in the FLASH memory.
28. A system as claimed in claim 27, wherein the database is stored on the server.
29. A system as claimed in claim 18, wherein the microprocessor is operative under control of the first firmware load to save the updated firmware load in the inactive page.
30. A system as claimed in claim 29, wherein the microprocessor is operative under control of the first firmware load to modify the active page flag to point to the inactive update page in response to a message transmitted by the server, whereby the inactive update page will become the active update page upon a subsequent re boot of the communication device.
31. A system as claimed in claim 18, wherein the microprocessor is operative under control of the first firmware load to dynamically identify a most recently stored valid firmware load by:
a) accessing the active update page to determine the presence of a valid firmware load; and
b) if a valid firmware load is not located in the active update page, accessing the inactive update page to determine the presence of a valid firmware load.
32. A system as claimed in claim 18, wherein, if a valid firmware load is located in the active update page, the microprocessor is operative under control of the first firmware load to continue operation of the communication device under control of the firmware load in the active update page.
33. A system as claimed in claim 18, wherein, if a valid firmware load is located in the inactive update page, the microprocessor is operative under control of the first firmware load to:
a) modify an active page flag to point to the inactive update page, whereby the inactive update page will become the active update page upon a subsequent re-boot of the communication device; and
b) continue operation of the communication device under control of the firmware load in the inactive update page.
34. A system as claimed in claim 18, wherein, if a valid firmware load is not located in the either the active of inactive update pages, the microprocessor is operative under control of the first firmware load to continue operation of the communication device under control of the first firmware load in the boot page.
35. A communication device connected to a network and operative in accordance with firmware saved in a FLASH memory, the communication device comprising:
a) a boot page of the FLASH memory for storing a first firmware load;
b) a pair of update pages of the FLASH memory, each update page being adapted to store a respective firmware load, one of the update pages being designated as an active update page, and the other one of the update pages as an inactive update page;
c) a buffer for receiving an updated firmware load through the network; and
d) a microprocessor operative to:
i) store, under control of the first firmware load, the updated firmware load in the inactive update page of the FLASH memory; and
ii) reboot the communication device under control of the first firmware load, including steps of:
dynamically identifying, from among the firmware loads stored in the FLASH memory, a most recently stored valid firmware load; and
continuing operation of the communication device under control of the identified most recently stored valid firmware load.
36. A communication device as claimed in claim 35, wherein the first firmware load includes a boot logic adapted to control operation of the microprocessor during a start-up of the communication device.
37. A communication device as claimed in claim 35, wherein the communication device is adapted to receive an entire updated firmware load in a single download operation using a data channel of the communication device.
38. A communication device as claimed in claim 37, wherein the microprocessor is operative under control of the first firmware load to place the communication device into a loop-back mode in response to a message transmitted by the server.
39. A communication device as claimed in claim 35, wherein the updated firmware load is preliminarily divided into a plurality of predetermined load portions, and the communication device is adapted to receive each load portion in a respective download operation using a message channel of the communication device.
40. A communication device as claimed in claim 39, wherein each download operation comprises receiving a DnldData command including an address and the load portion as arguments, and the microprocessor is operative under control of the copied portion of the first firmware load to save the load portion in the FLASH memory starting at an address of the FLASH memory corresponding to the address included in the DnldData command.
41. A communication device as claimed in claim 35, wherein the microprocessor is operative under control of the first firmware load to save the updated firmware load in the inactive page.
42. A communication device as claimed in claim 41, wherein the microprocessor is operative under control of the first firmware load to modify the active page flag to point to the inactive update page, whereby the inactive update page will become the active update page upon a subsequent reboot of the communication device.
43. A communication device as claimed in claim 35, wherein the microprocessor is operative under control of the first firmware load to dynamically identifying a most recently stored valid firmware load by:
a) accessing the active update page to determine the presence of a valid firmware load; and
b) if a valid firmware load is not located in the active update page, accessing the inactive update page to determine the presence of a valid firmware load.
44. A communication device as claimed in claim 35, wherein, if a valid firmware load is located in the active update page, the microprocessor is operative under control of the first firmware load to continue operation of the communication device under control of the firmware load in the active update page.
45. A communication device as claimed in claim 35, wherein, if a valid firmware load is located in the inactive update page, the microprocessor is operative under control of the first firmware load to:
a) modify an active page flag to point to the inactive flit update page, whereby the inactive update page will become the active update page upon a subsequent re-boot of the communication device; and
b) continue operation of the communication device under control of the firmware load in the inactive update page.
46. A communication device as claimed in claim 35, wherein, if a valid firmware load is not located in either the active of inactive update pages, the microprocessor is operative under control of the first firmware load to continue operation of the communication device under control of the first firmware load in the boot page.
US09/405,095 1999-09-27 1999-09-27 Method and apparatus of remotely updating firmware of a communication device Expired - Lifetime US6640334B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US09/405,095 US6640334B1 (en) 1999-09-27 1999-09-27 Method and apparatus of remotely updating firmware of a communication device
CA002320374A CA2320374A1 (en) 1999-09-27 2000-09-21 Method and apparatus of remotely updating firmware of a communication device
EP00308451.4A EP1087294B1 (en) 1999-09-27 2000-09-27 Method and apparatus of remotely updating firmware of a communication device
EP10181519A EP2299359A1 (en) 1999-09-27 2000-09-27 Method and apparatus for remotely updating firmware of a communication device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/405,095 US6640334B1 (en) 1999-09-27 1999-09-27 Method and apparatus of remotely updating firmware of a communication device

Publications (1)

Publication Number Publication Date
US6640334B1 true US6640334B1 (en) 2003-10-28

Family

ID=23602259

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/405,095 Expired - Lifetime US6640334B1 (en) 1999-09-27 1999-09-27 Method and apparatus of remotely updating firmware of a communication device

Country Status (3)

Country Link
US (1) US6640334B1 (en)
EP (2) EP1087294B1 (en)
CA (1) CA2320374A1 (en)

Cited By (182)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020042878A1 (en) * 2000-09-01 2002-04-11 Andreas Westendorf Data transmission method
US20020073304A1 (en) * 2000-12-07 2002-06-13 Marsh James L. System and method for updating firmware
US20020080771A1 (en) * 2000-12-21 2002-06-27 802 Systems, Inc. Methods and systems using PLD-based network communication protocols
US20020080784A1 (en) * 2000-12-21 2002-06-27 802 Systems, Inc. Methods and systems using PLD-based network communication protocols
US20020092008A1 (en) * 2000-11-30 2002-07-11 Ibm Corporation Method and apparatus for updating new versions of firmware in the background
US20020144194A1 (en) * 2001-03-30 2002-10-03 Biswaroop Guha System and method for setting new values for configuration parameters on a device
US20020166027A1 (en) * 2001-04-20 2002-11-07 Hitachi, Ltd. Updating method of firmware of hard disk unit mounted on disk array device and disk array device with function for performing updating method
US20020170050A1 (en) * 2001-03-14 2002-11-14 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US20020194313A1 (en) * 2001-06-18 2002-12-19 Brannock Kirk D. Method and apparatus for distributing computer platform firmware across a network
US20020191637A1 (en) * 2001-05-14 2002-12-19 Lg Electronics Inc. Home appliance protocol upgrading system and method
US20030003908A1 (en) * 2001-06-27 2003-01-02 Mcgrew Richard A. Method and apparatus for storing data in flash memory
US20030005037A1 (en) * 2001-06-27 2003-01-02 Gunnar Aija Crash recovery system
US20030035140A1 (en) * 2001-08-17 2003-02-20 Atsushi Tomita Image processing apparatus, management unit, and program
US20030066062A1 (en) * 2001-09-28 2003-04-03 Brannock Kirk D. Method for atomically updating a plurality of files
US20030159025A1 (en) * 2002-02-19 2003-08-21 Intel Corporation Run-time compression/decompression of a boot image
US20030182411A1 (en) * 2002-03-25 2003-09-25 Ruiping Wang Method for updating and restoring operating software in an active region of a network element
US20040015708A1 (en) * 2001-08-23 2004-01-22 Masayuki Obayashi Information processing apparatus and method
US20040054995A1 (en) * 2002-09-14 2004-03-18 Samsung Electronics Co., Ltd. Method of updating firmware
US20040073902A1 (en) * 2002-10-11 2004-04-15 Ambit Microsystems Corporation Firmware upgrade method for network device through digital subscriber line
US20040093597A1 (en) * 2002-11-05 2004-05-13 Rao Bindu Rama Firmware update system for facilitating firmware update in mobile handset related applications
US20040114808A1 (en) * 2002-12-18 2004-06-17 Rothman Michael A. Compressing a firmware image
US20040133887A1 (en) * 2002-12-05 2004-07-08 Samsung Electronics Co., Ltd. Apparatus and method for upgrading software of a wireless mobile station
US20040216150A1 (en) * 2002-11-05 2004-10-28 Sun Microsystems, Inc. Systems and methods for providing object integrity and dynamic permission grants
US20040230963A1 (en) * 2003-05-12 2004-11-18 Rothman Michael A. Method for updating firmware in an operating system agnostic manner
US20040236998A1 (en) * 2003-05-20 2004-11-25 Blumberg Marc R. Back out provision for failed programmable hardware update
US20040255286A1 (en) * 2003-06-13 2004-12-16 Rothman Michael A. Method for distributed update of firmware across a clustered platform infrastructure
US20040261072A1 (en) * 2003-06-20 2004-12-23 Samsung Electronics Co., Ltd. Apparatus and method for performing an over-the-air software update in a dual processor mobile station
US6854009B1 (en) * 1999-12-22 2005-02-08 Tacit Networks, Inc. Networked computer system
US20050055595A1 (en) * 2001-09-17 2005-03-10 Mark Frazer Software update method, apparatus and system
US20050063242A1 (en) * 2001-07-16 2005-03-24 Yuqing Ren Embedded software update methods and systems for digital devices
US20050138250A1 (en) * 2003-12-22 2005-06-23 Ivan Farkas System and method for providing an image file in a computer system
US20050160257A1 (en) * 2004-01-16 2005-07-21 Dell Products L.P. System and method for updating device firmware
US20050177708A1 (en) * 1999-10-18 2005-08-11 Endress + Hauser Flowtec Ag Programmable field mounted device
US6948165B1 (en) * 2001-02-28 2005-09-20 Western Digital Ventures, Inc. Method for installing an application program, to be executed during each bootload of a computer system for presenting a user with content options prior to conventional system startup presentation, without requiring a user's participation to install the program
US20050210458A1 (en) * 2002-04-01 2005-09-22 Koichi Moriyama Communication terminal software updating method, communication terminal, and software updating method
US20050216904A1 (en) * 2004-03-29 2005-09-29 International Business Machines Corporation Non-disruptive method, system and program product for overlaying a first software module with a second software module
US20050223291A1 (en) * 2004-03-24 2005-10-06 Zimmer Vincent J Methods and apparatus to provide an execution mode transition
US20050251673A1 (en) * 2004-05-05 2005-11-10 International Business Machines Corporation Updatable firmware having boot and/or communication redundancy
US20050271369A1 (en) * 2004-06-02 2005-12-08 Funai Electric Co., Ltd. DVD player and electronic device
US20050272404A1 (en) * 2000-10-30 2005-12-08 Howard Michael L Electronic device that uses a communications network for remote reprogramming of the device
US20060025875A1 (en) * 2004-07-30 2006-02-02 Smith Brian J Method and system for remote update of microprocessor code for irrigation controllers
US20060047942A1 (en) * 2004-08-27 2006-03-02 Rothman Michael A Method, program and system to update files in a computer system
US7013482B1 (en) 2000-07-07 2006-03-14 802 Systems Llc Methods for packet filtering including packet invalidation if packet validity determination not timely made
US20060069825A1 (en) * 2004-09-24 2006-03-30 Hodder Leonard B Method and system of transferring firmware from a host device to a printing device
US20060075276A1 (en) * 2004-09-30 2006-04-06 Mukesh Kataria Self-monitoring and updating of firmware over a network
US20060090159A1 (en) * 2004-10-12 2006-04-27 Denso Corporation Method and system for sending a rewrite control program to a control unit
US20060101454A1 (en) * 2004-11-09 2006-05-11 Lexmark International, Inc. Method for controlling the distribution of software code updates
US20060136892A1 (en) * 2004-12-16 2006-06-22 Branch Robert A Embedded agent for self-healing software
US20060218545A1 (en) * 2005-03-22 2006-09-28 Nec Corporation Server system and online software update method
US20060259756A1 (en) * 2005-05-12 2006-11-16 Thompson Mark J System and method for reflashing disk drive firmware
US20060259207A1 (en) * 2005-04-20 2006-11-16 Denso Corporation Electronic control system for automobile
US20070022175A1 (en) * 2005-06-29 2007-01-25 Inventec Corporation Computer platform redundant system program remote switching control method and system
US20070050430A1 (en) * 2005-08-23 2007-03-01 Red Bend Ltd., Israeli Company Of Method and system for updating content stored in a storage device
US20070061813A1 (en) * 2005-08-30 2007-03-15 Mcdata Corporation Distributed embedded software for a switch
US20070067581A1 (en) * 2003-03-25 2007-03-22 Baek Jo H Method for storing and running application program in flash-rom
US20070124508A1 (en) * 2004-03-11 2007-05-31 Juergen Lieb Keypad, particularly a point of sale keypad, and method for placing it into operation and for exchanging and updating firmware of the keypad
US20070150715A1 (en) * 2005-12-23 2007-06-28 Intel Corporation System and method for automatic update of embedded data
US7243841B1 (en) 2005-03-01 2007-07-17 Ba-Bing! Llc Enterprise polling system for electronic cash registers
US7293169B1 (en) * 2003-02-26 2007-11-06 American Megatrends, Inc. Methods and systems for remotely updating the firmware of multiple computers over a distributed network
US20070261049A1 (en) * 2006-05-05 2007-11-08 Microsoft Corporation Techniques to perform gradual upgrades
US20080052698A1 (en) * 2006-08-25 2008-02-28 Microsoft Corporation Providing firmware updates to portable media devices
US20080127165A1 (en) * 2006-11-29 2008-05-29 Sony Ericsson Mobile Communications Ab System and Method for Updating Device Drivers
US20080123659A1 (en) * 2006-07-03 2008-05-29 Dirk Rosenau Arrangement and method for loading data into a memory
US7392518B1 (en) * 2002-02-21 2008-06-24 3Com Corporation Robust remote flash ROM upgrade system and method
US20080178171A1 (en) * 2007-01-23 2008-07-24 Masahiro Sueyoshi Management System, Management Method, Terminal Device, Management Server and Program
US20080184217A1 (en) * 2007-01-30 2008-07-31 Fujitsu Limited Storage system, storage unit, and method for hot swapping of firmware
US20080184072A1 (en) * 2007-01-31 2008-07-31 Odlivak Andrew J Firmware ROM Patch Method
US7409435B1 (en) * 2002-02-28 2008-08-05 Sprint Communications Company L.P. Integrated services hub binary file trial run process
US20080189694A1 (en) * 2007-02-06 2008-08-07 International Business Machines Corporation Transparent Recovery of Self-Sustained Code-Upgrade
US7421688B1 (en) 2003-02-26 2008-09-02 American Megatrends, Inc. Methods and systems for updating the firmware on a plurality of network-attached computing devices
US20080229060A1 (en) * 2007-03-15 2008-09-18 Hynix Semiconductor Inc. Micro controller and method of updating the same
US20090019435A1 (en) * 2007-07-12 2009-01-15 Sauer-Danfoss Inc. System and method for over the air programming
US20090077549A1 (en) * 2007-09-17 2009-03-19 Sony Corporation System, Apparatus, and Method for an Upgrader Module
US20090217257A1 (en) * 2008-02-27 2009-08-27 Mstar Semiconductor, Inc. Apparatus and Method for Firmware Update
US20090222650A1 (en) * 2008-02-29 2009-09-03 Hon Hai Precision Industry Co., Ltd. Communication device and firmware update method thereof
US7614048B1 (en) * 2001-09-28 2009-11-03 At&T Intellectual Property I, L.P. System and method for automated software distribution in a fiber optic network
US20090328022A1 (en) * 2008-06-26 2009-12-31 International Business Machines Corporation Systems and methods for maintaining crtm code
US20100058306A1 (en) * 2008-08-26 2010-03-04 Terry Wayne Liles System and Method for Secure Information Handling System Flash Memory Access
US20100082932A1 (en) * 2008-09-30 2010-04-01 Rothman Michael A Hardware and file system agnostic mechanism for achieving capsule support
US20100122246A1 (en) * 2007-05-21 2010-05-13 Lieven Gesquiere Robust firmware upgrade in a network terminal
US7747997B1 (en) * 2002-11-13 2010-06-29 Hewlett-Packard Development Company, L.P. Firmware update in electronic devices employing SIM card for saving metadata information
US20100199272A1 (en) * 2009-02-05 2010-08-05 International Business Machines Corporation Updating firmware without disrupting service
US7797696B1 (en) * 2006-06-30 2010-09-14 American Megatrends, Inc. Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure
US20100268867A1 (en) * 2006-09-29 2010-10-21 Nokia Corporation Method and apparatus for updating firmware as a background task
US20110093692A1 (en) * 2009-10-19 2011-04-21 Ming-Hung Tsai Method of updating identification data of a computer system and related computer system
US20110119662A1 (en) * 2009-11-18 2011-05-19 Inventec Corporation Method for updating firmware of embedded system
US20110126188A1 (en) * 2009-09-08 2011-05-26 Abbott Diabetes Care Inc. Methods and Articles of Manufacture for Hosting a Safety Critical Application on an Uncontrolled Data Processing Device
US20110128158A1 (en) * 2009-12-01 2011-06-02 inXtron, Inc. Network device capable of remotely updating firmware thereof
US20110131563A1 (en) * 2008-09-24 2011-06-02 Hitachi Solutions, Ltd. Firmware update apparatus and method
US8024724B2 (en) 2006-08-31 2011-09-20 Itron, Inc. Firmware download
US20110276618A1 (en) * 2010-05-06 2011-11-10 Verizon Patent And Licensing Inc. System for and method of distributing files
US20120246615A1 (en) * 2011-03-23 2012-09-27 Volvo Car Corporation Complete and compatible function
US8291034B1 (en) * 2006-12-15 2012-10-16 The Research Foundation Of State University Of New York Centralized adaptive network memory engine
US8468515B2 (en) 2000-11-17 2013-06-18 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US20130167132A1 (en) * 2011-12-22 2013-06-27 Hon Hai Precision Industry Co., Ltd. System, electronic device with firmware updating function and method therefor
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US8555043B1 (en) 2006-06-30 2013-10-08 American Megatrends, Inc. Dynamically updating a computer system firmware image
US8578361B2 (en) 2004-04-21 2013-11-05 Palm, Inc. Updating an electronic device with update agent code
US20130305236A1 (en) * 2005-12-28 2013-11-14 Foundry Networks, Llc Hitless software upgrades
US8595716B2 (en) 2011-04-06 2013-11-26 Robert Bosch Gmbh Failsafe firmware updates
US20140075567A1 (en) * 2009-01-28 2014-03-13 Headwater Partners I Llc Service Processor Configurations for Enhancing or Augmenting System Software of a Mobile Communications Device
US8683457B1 (en) 2011-06-17 2014-03-25 Western Digital Technologies, Inc. Updating firmware of an electronic device by storing a version identifier in a separate header
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US8839388B2 (en) 2009-01-28 2014-09-16 Headwater Partners I Llc Automated device provisioning and activation
US8868455B2 (en) 2009-01-28 2014-10-21 Headwater Partners I Llc Adaptive ambient services
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US9026079B2 (en) 2009-01-28 2015-05-05 Headwater Partners I Llc Wireless network service interfaces
US9094311B2 (en) 2009-01-28 2015-07-28 Headwater Partners I, Llc Techniques for attribution of mobile device data traffic to initiating end-user application
US9137701B2 (en) 2009-01-28 2015-09-15 Headwater Partners I Llc Wireless end-user device with differentiated network access for background and foreground device applications
US9154826B2 (en) 2011-04-06 2015-10-06 Headwater Partners Ii Llc Distributing content and service launch objects to mobile devices
US9198042B2 (en) 2009-01-28 2015-11-24 Headwater Partners I Llc Security techniques for device assisted services
US9204282B2 (en) 2009-01-28 2015-12-01 Headwater Partners I Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US9247450B2 (en) 2009-01-28 2016-01-26 Headwater Partners I Llc Quality of service for device assisted services
US9253663B2 (en) 2009-01-28 2016-02-02 Headwater Partners I Llc Controlling mobile device communications on a roaming network based on device state
US9338100B2 (en) 2004-03-26 2016-05-10 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US9351193B2 (en) 2009-01-28 2016-05-24 Headwater Partners I Llc Intermediate networking devices
US9386165B2 (en) 2009-01-28 2016-07-05 Headwater Partners I Llc System and method for providing user notifications
US9392462B2 (en) 2009-01-28 2016-07-12 Headwater Partners I Llc Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy
US9395968B1 (en) 2006-06-30 2016-07-19 American Megatrends, Inc. Uniquely identifying and validating computer system firmware
CN105814545A (en) * 2013-12-27 2016-07-27 京瓷办公信息系统株式会社 Electronic device
US9461940B2 (en) 2003-05-15 2016-10-04 Foundry Networks, Llc System and method for high speed packet transmission
US9491199B2 (en) 2009-01-28 2016-11-08 Headwater Partners I Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9532261B2 (en) 2009-01-28 2016-12-27 Headwater Partners I Llc System and method for wireless network offloading
US20170010885A1 (en) * 2015-07-07 2017-01-12 Yi-Che Chen Wireless Data Update System and Method
US9557889B2 (en) 2009-01-28 2017-01-31 Headwater Partners I Llc Service plan design, user interfaces, application programming interfaces, and device management
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US9565543B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Device group partitions and settlement platform
US9571559B2 (en) 2009-01-28 2017-02-14 Headwater Partners I Llc Enhanced curfew and protection associated with a device group
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
US9578182B2 (en) 2009-01-28 2017-02-21 Headwater Partners I Llc Mobile device and service management
US9594699B2 (en) * 2015-03-20 2017-03-14 Intel Corporation Additional security in flashless modem
US9609510B2 (en) 2009-01-28 2017-03-28 Headwater Research Llc Automated credential porting for mobile devices
US9647918B2 (en) 2009-01-28 2017-05-09 Headwater Research Llc Mobile device and method attributing media services network usage to requesting application
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US9755842B2 (en) 2009-01-28 2017-09-05 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US9819808B2 (en) 2009-01-28 2017-11-14 Headwater Research Llc Hierarchical service policies for creating service usage data records for a wireless end-user device
US9858559B2 (en) 2009-01-28 2018-01-02 Headwater Research Llc Network service plan design
US9866905B1 (en) * 2016-02-23 2018-01-09 CSC Holdings, LLC Set-top box reboot and polling tool
US9891908B2 (en) * 2013-12-20 2018-02-13 Nordic Semiconductor Asa Updatable integrated-circuit radio
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US9955332B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Method for child wireless device activation to subscriber account of a master wireless device
US9965267B2 (en) 2015-11-19 2018-05-08 Raytheon Company Dynamic interface for firmware updates
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US10025583B2 (en) 2016-02-17 2018-07-17 International Business Machines Corporation Managing firmware upgrade failures
US10051462B2 (en) * 2016-12-16 2018-08-14 T-Mobile Usa, Inc. Hybrid transport for installed service updates
US10057775B2 (en) 2009-01-28 2018-08-21 Headwater Research Llc Virtualized policy and charging system
US10064055B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10070305B2 (en) 2009-01-28 2018-09-04 Headwater Research Llc Device assisted services install
US10200541B2 (en) 2009-01-28 2019-02-05 Headwater Research Llc Wireless end-user device with divided user space/kernel space traffic policy system
WO2019046933A1 (en) * 2017-09-06 2019-03-14 Absolute Software Corporation Secure firmware interface
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
CN109542490A (en) * 2017-09-21 2019-03-29 西部数据技术公司 The downloading of hardware auxiliary firmware synchronizes
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
CN109710292A (en) * 2018-12-28 2019-05-03 Tcl移动通信科技(宁波)有限公司 Mobile terminal brush machine controls processing method, mobile terminal and storage medium
US20190155767A1 (en) * 2017-11-17 2019-05-23 Samsung Electronics Co., Ltd. Storage device configured to update field programmable gate array and method of operating the same
US10318268B2 (en) * 2012-11-19 2019-06-11 Zte Corporation Setting method for binary integration of boot program and kernel program
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US10473758B2 (en) 2016-04-06 2019-11-12 Raytheon Company Universal coherent technique generator
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US10712792B2 (en) * 2015-11-09 2020-07-14 Dell Products, L.P. System and method for provisioning a powered off server in a data center
US10715342B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc Managing service user discovery and service launch object placement on a device
CN111459528A (en) * 2020-04-01 2020-07-28 Tcl移动通信科技(宁波)有限公司 Frequency band upgrading method, system, storage medium and mobile terminal
US10779177B2 (en) 2009-01-28 2020-09-15 Headwater Research Llc Device group partitions and settlement platform
CN111684416A (en) * 2018-02-16 2020-09-18 日立汽车系统株式会社 Vehicle control device and program update system
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US10841839B2 (en) 2009-01-28 2020-11-17 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10838711B2 (en) * 2018-09-20 2020-11-17 Mellanox Technologies Tlv Ltd. In-service software/firmware update
US10922070B2 (en) * 2017-09-21 2021-02-16 Western Digital Technologies, Inc. Hardware assisted firmware download syncing
US10930350B2 (en) * 2018-12-20 2021-02-23 SK Hynix Inc. Memory device for updating micro-code, memory system including the memory device, and method for operating the memory device
US11055087B2 (en) * 2018-03-16 2021-07-06 Google Llc Leveraging previously installed application elements to install an application
CN113220323A (en) * 2021-04-23 2021-08-06 山东英信计算机技术有限公司 Method, system and medium for improving updating efficiency of CPLD firmware of production line
US11218854B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US11412366B2 (en) 2009-01-28 2022-08-09 Headwater Research Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US11429375B2 (en) * 2018-05-23 2022-08-30 Robert Bosch Gmbh Method for exchanging a first executable program code and a second executable program code, and a control unit
US11537389B2 (en) * 2017-12-12 2022-12-27 Infineon Technologies LLC Memory devices, systems, and methods for updating firmware with single memory device
US11556333B2 (en) * 2020-03-11 2023-01-17 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for processing audio processing chip, and electronic device
US11741232B2 (en) 2021-02-01 2023-08-29 Mellanox Technologies, Ltd. Secure in-service firmware update

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2370894B (en) * 2000-10-24 2005-02-02 Hewlett Packard Co Workflow-friendly firmware upgrades for network devices
DE10053744A1 (en) * 2000-10-30 2002-05-02 Wincor Nixdorf Gmbh & Co Kg Method for transferring device-specific program data via an additional interface
KR100440950B1 (en) 2001-06-30 2004-07-21 삼성전자주식회사 Method for upgrading software in network environment and network device thereof
DE10137505B4 (en) 2001-07-16 2005-06-23 Francotyp-Postalia Ag & Co. Kg Arrangement and method for changing the functionality of a security module
KR20030032257A (en) 2001-10-17 2003-04-26 삼성전자주식회사 Method for upgrading program and apparatus therefor
US7039796B2 (en) * 2002-06-04 2006-05-02 Hewlett-Packard Development Company, L.P. Method and system of locating a position in memory at which to store incoming firmware image
DE10255540A1 (en) * 2002-11-28 2004-06-24 Abb Patent Gmbh Harvard-architecture microcomputer operating system upgrading method, whereby a new operating system is copied to an additional program memory via a buffer memory, while the system operates under the original operating system
DE10358019A1 (en) * 2003-12-11 2005-07-14 Siemens Ag Method for updating an automation system
FR2872603B1 (en) 2004-07-03 2007-02-09 Samsung Electronics Co Ltd METHOD AND DEVICE FOR EXECUTING THE INTEGRATED SYSTEM INITIATION CODE
US7788731B2 (en) 2005-03-25 2010-08-31 Schweitzer Engineering Laboratories, Inc. Method and apparatus for customization
US7660088B2 (en) 2005-09-07 2010-02-09 Schweitzer Engineering Laboratories, Inc. System, apparatus and method for compensating the sensitivity of a sequence element in a line current differential relay in a power system
WO2007104899A1 (en) * 2006-03-16 2007-09-20 Thomson Licensing Method for robust software updating
CN101247258B (en) * 2007-02-12 2011-02-09 华为技术有限公司 Service distribution method and system
GB2499003B (en) * 2012-02-02 2014-01-01 Renesas Mobile Corp Updating modem baseband firmware
US9479393B2 (en) 2014-08-04 2016-10-25 Schweitzer Engineering Laboratories, Inc. Relay configuration systems and methods
CN105912340A (en) * 2016-04-26 2016-08-31 江苏惠通集团有限责任公司 Primary device, remote control and overhead upgrading method of remote control
WO2018054537A1 (en) * 2016-09-24 2018-03-29 Giesecke+Devrient Mobile Security Gmbh Method and system for downloading operating systems on smart cards having low random access memory
US10495680B2 (en) 2017-06-14 2019-12-03 Schweitzer Engineering Laboratories, Inc. Systems and methods for detecting current transformer ultrasaturation to enhance relay security and dependability

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268928A (en) 1991-10-15 1993-12-07 Racal-Datacom, Inc. Data modem with remote firmware update
US5414751A (en) 1991-05-23 1995-05-09 Sony Corporation Portable telephone apparatus responsive to control signals obtained through a connector and through a wired telephone line for a mending the operational program
US5418524A (en) 1992-07-31 1995-05-23 Motorola, Inc. Method and apparatus for over-the-air upgrading of radio modem application software
US5781921A (en) 1996-05-06 1998-07-14 Ohmeda Inc. Method and apparatus to effect firmware upgrades using a removable memory device under software control
US5787288A (en) * 1993-11-19 1998-07-28 Mita Industrial Co., Ltd. Method and device for renewing an internal program of an apparatus having communication capability
US5812857A (en) * 1996-08-28 1998-09-22 Extended Systems, Inc. Field configurable embedded computer system
US5822692A (en) 1993-12-29 1998-10-13 Flat Connections, Inc. Data communication device
US5878256A (en) * 1991-10-16 1999-03-02 International Business Machine Corp. Method and apparatus for providing updated firmware in a data processing system
US6055632A (en) * 1997-09-25 2000-04-25 Allen-Bradley Company, Llc Method and apparatus for transferring firmware to a non-volatile memory of a programmable controller system
US6073207A (en) * 1996-11-28 2000-06-06 Nec Corporation Microcomputer comprising flash EEPROM
US6141795A (en) * 1996-12-18 2000-10-31 U.S. Philips Corporation Communication system
US6253281B1 (en) * 1997-06-21 2001-06-26 U.S. Philips Corporation Method for updating firmware of a computer peripheral device
US6275931B1 (en) * 1998-06-22 2001-08-14 Elsag International N.V. Method and apparatus for upgrading firmware boot and main codes in a programmable memory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003591A (en) * 1989-05-25 1991-03-26 General Instrument Corporation Functionally modifiable cable television converter system
EP0489204B1 (en) * 1990-12-04 1995-08-16 Hewlett-Packard Limited Reprogrammable data storage device
JP2000515286A (en) * 1997-05-30 2000-11-14 コーニンクレッカ、フィリップス、エレクトロニクス、エヌ、ヴィ Fail-safe method for upgrading set-top system software from a network server
US6360362B1 (en) * 1998-02-20 2002-03-19 Intel Corporation Automatic update of camera firmware

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414751A (en) 1991-05-23 1995-05-09 Sony Corporation Portable telephone apparatus responsive to control signals obtained through a connector and through a wired telephone line for a mending the operational program
US5268928A (en) 1991-10-15 1993-12-07 Racal-Datacom, Inc. Data modem with remote firmware update
US5878256A (en) * 1991-10-16 1999-03-02 International Business Machine Corp. Method and apparatus for providing updated firmware in a data processing system
US5418524A (en) 1992-07-31 1995-05-23 Motorola, Inc. Method and apparatus for over-the-air upgrading of radio modem application software
US5787288A (en) * 1993-11-19 1998-07-28 Mita Industrial Co., Ltd. Method and device for renewing an internal program of an apparatus having communication capability
US5822692A (en) 1993-12-29 1998-10-13 Flat Connections, Inc. Data communication device
US5781921A (en) 1996-05-06 1998-07-14 Ohmeda Inc. Method and apparatus to effect firmware upgrades using a removable memory device under software control
US5812857A (en) * 1996-08-28 1998-09-22 Extended Systems, Inc. Field configurable embedded computer system
US5937198A (en) * 1996-08-28 1999-08-10 Extended Systems, Inc. Field configurable embedded computer system
US6073207A (en) * 1996-11-28 2000-06-06 Nec Corporation Microcomputer comprising flash EEPROM
US6141795A (en) * 1996-12-18 2000-10-31 U.S. Philips Corporation Communication system
US6253281B1 (en) * 1997-06-21 2001-06-26 U.S. Philips Corporation Method for updating firmware of a computer peripheral device
US6055632A (en) * 1997-09-25 2000-04-25 Allen-Bradley Company, Llc Method and apparatus for transferring firmware to a non-volatile memory of a programmable controller system
US6275931B1 (en) * 1998-06-22 2001-08-14 Elsag International N.V. Method and apparatus for upgrading firmware boot and main codes in a programmable memory

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
IBM Technical Disclosure Bulletin, "Dual Indirect Ram/Rom JUMP Tables for Firmware Updates", vol. 31, No. 1, pp. 294-298, Jun. 1988. *
IBM Technical Disclosure Bulletin, "Support of Multiple Initial Microcode Load Images on Personal Computer Reference Diskettes", vol. 36, No. 10, pp. 47-54, Oct. 1993.* *
IBM Technical Disclosure Bulletin, "Update Mechanism for Personal Computer System Resident Firmware", vol. 34, No. 10B, pp. 133-136, Mar. 1992.* *

Cited By (398)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299348B2 (en) * 1999-10-18 2007-11-20 Endress + Hauser Flowtec Ag Programmable field mounted device
US20050177708A1 (en) * 1999-10-18 2005-08-11 Endress + Hauser Flowtec Ag Programmable field mounted device
US6854009B1 (en) * 1999-12-22 2005-02-08 Tacit Networks, Inc. Networked computer system
US8879427B2 (en) 2000-07-07 2014-11-04 802 Systems Inc. Methods for updating the configuration of a programmable packet filtering device including a determination as to whether a packet is to be junked
US8458784B2 (en) 2000-07-07 2013-06-04 802 Systems, Inc. Data protection system selectively altering an end portion of packets based on incomplete determination of whether a packet is valid or invalid
US7013482B1 (en) 2000-07-07 2006-03-14 802 Systems Llc Methods for packet filtering including packet invalidation if packet validity determination not timely made
US7712139B2 (en) * 2000-09-01 2010-05-04 Robert Bosch Gmbh Data transmission method
US20020042878A1 (en) * 2000-09-01 2002-04-11 Andreas Westendorf Data transmission method
US20050272404A1 (en) * 2000-10-30 2005-12-08 Howard Michael L Electronic device that uses a communications network for remote reprogramming of the device
US7181606B2 (en) * 2000-10-30 2007-02-20 Matsushita Electric Works, Ltd. Electronic device that uses a communications network for remote reprogramming of the device
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US8468515B2 (en) 2000-11-17 2013-06-18 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US20020092008A1 (en) * 2000-11-30 2002-07-11 Ibm Corporation Method and apparatus for updating new versions of firmware in the background
US6944854B2 (en) * 2000-11-30 2005-09-13 International Business Machines Corporation Method and apparatus for updating new versions of firmware in the background
US20020073304A1 (en) * 2000-12-07 2002-06-13 Marsh James L. System and method for updating firmware
US7055148B2 (en) * 2000-12-07 2006-05-30 Hewlett-Packard Development Company, L.P. System and method for updating firmware
US20060182108A1 (en) * 2000-12-21 2006-08-17 Krumel Andrew K Methods and systems using PLD-based network communication protocols
US7031267B2 (en) * 2000-12-21 2006-04-18 802 Systems Llc PLD-based packet filtering methods with PLD configuration data update of filtering rules
US20020080771A1 (en) * 2000-12-21 2002-06-27 802 Systems, Inc. Methods and systems using PLD-based network communication protocols
US20020080784A1 (en) * 2000-12-21 2002-06-27 802 Systems, Inc. Methods and systems using PLD-based network communication protocols
US6948165B1 (en) * 2001-02-28 2005-09-20 Western Digital Ventures, Inc. Method for installing an application program, to be executed during each bootload of a computer system for presenting a user with content options prior to conventional system startup presentation, without requiring a user's participation to install the program
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US20020170050A1 (en) * 2001-03-14 2002-11-14 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US6804798B2 (en) * 2001-03-30 2004-10-12 Hewlett-Packard Development Company, L.P. System and method for setting new values for configuration parameters on a device
US20020144194A1 (en) * 2001-03-30 2002-10-03 Biswaroop Guha System and method for setting new values for configuration parameters on a device
US20020166027A1 (en) * 2001-04-20 2002-11-07 Hitachi, Ltd. Updating method of firmware of hard disk unit mounted on disk array device and disk array device with function for performing updating method
US7032218B2 (en) * 2001-04-20 2006-04-18 Hitachi, Ltd. Updating method of firmware of hard disk unit mounted on disk array device and disk array device with function for performing updating method
US20020191637A1 (en) * 2001-05-14 2002-12-19 Lg Electronics Inc. Home appliance protocol upgrading system and method
US7103641B2 (en) * 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
US20020194313A1 (en) * 2001-06-18 2002-12-19 Brannock Kirk D. Method and apparatus for distributing computer platform firmware across a network
US6928579B2 (en) * 2001-06-27 2005-08-09 Nokia Corporation Crash recovery system
US20030005037A1 (en) * 2001-06-27 2003-01-02 Gunnar Aija Crash recovery system
US7155560B2 (en) * 2001-06-27 2006-12-26 Intel Corporation Method and apparatus for storing data in flash memory
US20030003908A1 (en) * 2001-06-27 2003-01-02 Mcgrew Richard A. Method and apparatus for storing data in flash memory
US20050063242A1 (en) * 2001-07-16 2005-03-24 Yuqing Ren Embedded software update methods and systems for digital devices
US20030035140A1 (en) * 2001-08-17 2003-02-20 Atsushi Tomita Image processing apparatus, management unit, and program
US20100002874A1 (en) * 2001-08-23 2010-01-07 Sony Corporation Information processing apparatus and method
US7600224B2 (en) * 2001-08-23 2009-10-06 Sony Corporation Information processing apparatus including storage
US20040015708A1 (en) * 2001-08-23 2004-01-22 Masayuki Obayashi Information processing apparatus and method
US20050055595A1 (en) * 2001-09-17 2005-03-10 Mark Frazer Software update method, apparatus and system
US7614048B1 (en) * 2001-09-28 2009-11-03 At&T Intellectual Property I, L.P. System and method for automated software distribution in a fiber optic network
US20030066062A1 (en) * 2001-09-28 2003-04-03 Brannock Kirk D. Method for atomically updating a plurality of files
US8028282B2 (en) 2001-09-28 2011-09-27 Intel Corporation System for atomically updating a plurality of files
US7299463B2 (en) * 2001-09-28 2007-11-20 Intel Corporation Method for atomically updating a plurality of files
US8839226B2 (en) 2001-09-28 2014-09-16 Intel Corporation System for atomically updating a plurality of files
US20030159025A1 (en) * 2002-02-19 2003-08-21 Intel Corporation Run-time compression/decompression of a boot image
US7392518B1 (en) * 2002-02-21 2008-06-24 3Com Corporation Robust remote flash ROM upgrade system and method
US7409435B1 (en) * 2002-02-28 2008-08-05 Sprint Communications Company L.P. Integrated services hub binary file trial run process
US7174547B2 (en) * 2002-03-25 2007-02-06 Ciena Corporation Method for updating and restoring operating software in an active region of a network element
US20030182411A1 (en) * 2002-03-25 2003-09-25 Ruiping Wang Method for updating and restoring operating software in an active region of a network element
US7793283B2 (en) * 2002-04-01 2010-09-07 Ntt Docomo, Inc. Communication terminal software updating method, communication terminal, and software updating method
US20050210458A1 (en) * 2002-04-01 2005-09-22 Koichi Moriyama Communication terminal software updating method, communication terminal, and software updating method
US20040054995A1 (en) * 2002-09-14 2004-03-18 Samsung Electronics Co., Ltd. Method of updating firmware
US20040073902A1 (en) * 2002-10-11 2004-04-15 Ambit Microsystems Corporation Firmware upgrade method for network device through digital subscriber line
US20040093597A1 (en) * 2002-11-05 2004-05-13 Rao Bindu Rama Firmware update system for facilitating firmware update in mobile handset related applications
US7565533B2 (en) * 2002-11-05 2009-07-21 Sun Microsystems, Inc. Systems and methods for providing object integrity and dynamic permission grants
WO2004042538A3 (en) * 2002-11-05 2004-12-23 Bitfone Corp Firmware update system for facilitating firmware update in mobile handset related applications
US20040216150A1 (en) * 2002-11-05 2004-10-28 Sun Microsystems, Inc. Systems and methods for providing object integrity and dynamic permission grants
WO2004042538A2 (en) * 2002-11-05 2004-05-21 Bitfone Corporation Firmware update system for facilitating firmware update in mobile handset related applications
US7747997B1 (en) * 2002-11-13 2010-06-29 Hewlett-Packard Development Company, L.P. Firmware update in electronic devices employing SIM card for saving metadata information
US7461373B2 (en) * 2002-12-05 2008-12-02 Samsung Electronics Co., Ltd. Apparatus and method for upgrading software of a wireless mobile station
US20040133887A1 (en) * 2002-12-05 2004-07-08 Samsung Electronics Co., Ltd. Apparatus and method for upgrading software of a wireless mobile station
US20040114808A1 (en) * 2002-12-18 2004-06-17 Rothman Michael A. Compressing a firmware image
US7222258B2 (en) * 2002-12-18 2007-05-22 Intel Corporation Compressing a firmware image
US7673301B1 (en) 2003-02-26 2010-03-02 American Megatrends, Inc. Methods and systems for updating and recovering firmware within a computing device over a distributed network
US7293169B1 (en) * 2003-02-26 2007-11-06 American Megatrends, Inc. Methods and systems for remotely updating the firmware of multiple computers over a distributed network
US7421688B1 (en) 2003-02-26 2008-09-02 American Megatrends, Inc. Methods and systems for updating the firmware on a plurality of network-attached computing devices
US20070067581A1 (en) * 2003-03-25 2007-03-22 Baek Jo H Method for storing and running application program in flash-rom
US20040230963A1 (en) * 2003-05-12 2004-11-18 Rothman Michael A. Method for updating firmware in an operating system agnostic manner
US9461940B2 (en) 2003-05-15 2016-10-04 Foundry Networks, Llc System and method for high speed packet transmission
US7146541B2 (en) * 2003-05-20 2006-12-05 Lucent Technologies Inc. Back out provision for failed programmable hardware update
US20040236998A1 (en) * 2003-05-20 2004-11-25 Blumberg Marc R. Back out provision for failed programmable hardware update
US20040255286A1 (en) * 2003-06-13 2004-12-16 Rothman Michael A. Method for distributed update of firmware across a clustered platform infrastructure
US7222339B2 (en) * 2003-06-13 2007-05-22 Intel Corporation Method for distributed update of firmware across a clustered platform infrastructure
US8572597B2 (en) * 2003-06-20 2013-10-29 Samsung Electronics Co., Ltd. Apparatus and method for performing an over-the-air software update in a dual processor mobile station
US20040261072A1 (en) * 2003-06-20 2004-12-23 Samsung Electronics Co., Ltd. Apparatus and method for performing an over-the-air software update in a dual processor mobile station
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US20050138250A1 (en) * 2003-12-22 2005-06-23 Ivan Farkas System and method for providing an image file in a computer system
US7103687B2 (en) * 2003-12-22 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for providing an image file in a computer system
US7197634B2 (en) * 2004-01-16 2007-03-27 Dell Products L.P. System and method for updating device firmware
US20050160257A1 (en) * 2004-01-16 2005-07-21 Dell Products L.P. System and method for updating device firmware
US20070124508A1 (en) * 2004-03-11 2007-05-31 Juergen Lieb Keypad, particularly a point of sale keypad, and method for placing it into operation and for exchanging and updating firmware of the keypad
US20050223291A1 (en) * 2004-03-24 2005-10-06 Zimmer Vincent J Methods and apparatus to provide an execution mode transition
US9338100B2 (en) 2004-03-26 2016-05-10 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US7546596B2 (en) * 2004-03-29 2009-06-09 International Business Machines Corporation Non-disruptive method, system and program product for overlaying a first software module with a second software module
US20050216904A1 (en) * 2004-03-29 2005-09-29 International Business Machines Corporation Non-disruptive method, system and program product for overlaying a first software module with a second software module
US8578361B2 (en) 2004-04-21 2013-11-05 Palm, Inc. Updating an electronic device with update agent code
US7185191B2 (en) 2004-05-05 2007-02-27 International Business Machines Corporation Updatable firmware having boot and/or communication redundancy
US20050251673A1 (en) * 2004-05-05 2005-11-10 International Business Machines Corporation Updatable firmware having boot and/or communication redundancy
US20050271369A1 (en) * 2004-06-02 2005-12-08 Funai Electric Co., Ltd. DVD player and electronic device
US7793054B2 (en) * 2004-06-02 2010-09-07 Funai Electric Co., Ltd. DVD player and electronic device
US20060025875A1 (en) * 2004-07-30 2006-02-02 Smith Brian J Method and system for remote update of microprocessor code for irrigation controllers
US7269829B2 (en) * 2004-07-30 2007-09-11 Signature Control Systems, Inc. Method and system for remote update of microprocessor code for irrigation controllers
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7506149B2 (en) * 2004-08-27 2009-03-17 Intel Corporation Method, program and system to update files in a computer system
US20090138875A1 (en) * 2004-08-27 2009-05-28 Rothman Michael A Method, program and system to update files in a computer system
US20060047942A1 (en) * 2004-08-27 2006-03-02 Rothman Michael A Method, program and system to update files in a computer system
US8245019B2 (en) 2004-08-27 2012-08-14 Intel Corporation Method, program and system to update files in a computer system
US20060069825A1 (en) * 2004-09-24 2006-03-30 Hodder Leonard B Method and system of transferring firmware from a host device to a printing device
US20060075276A1 (en) * 2004-09-30 2006-04-06 Mukesh Kataria Self-monitoring and updating of firmware over a network
US7376870B2 (en) 2004-09-30 2008-05-20 Intel Corporation Self-monitoring and updating of firmware over a network
US8042104B2 (en) * 2004-10-12 2011-10-18 Denso Corporation Method and system for sending a rewrite control program to a control unit
US20060090159A1 (en) * 2004-10-12 2006-04-27 Denso Corporation Method and system for sending a rewrite control program to a control unit
US7522732B2 (en) 2004-11-09 2009-04-21 Lexmark International, Inc. Method for controlling the distribution of software code updates
US20060101454A1 (en) * 2004-11-09 2006-05-11 Lexmark International, Inc. Method for controlling the distribution of software code updates
US20060136892A1 (en) * 2004-12-16 2006-06-22 Branch Robert A Embedded agent for self-healing software
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
US7243841B1 (en) 2005-03-01 2007-07-17 Ba-Bing! Llc Enterprise polling system for electronic cash registers
US20060218545A1 (en) * 2005-03-22 2006-09-28 Nec Corporation Server system and online software update method
US8607215B2 (en) 2005-04-20 2013-12-10 Denso Corporation Electronic control system for rewriting control software in an automobile
US20100313192A1 (en) * 2005-04-20 2010-12-09 Denso Corporation Electronic control system for automobile
US20060259207A1 (en) * 2005-04-20 2006-11-16 Denso Corporation Electronic control system for automobile
US7426633B2 (en) 2005-05-12 2008-09-16 Hewlett-Packard Development Company, L.P. System and method for reflashing disk drive firmware
US20060259756A1 (en) * 2005-05-12 2006-11-16 Thompson Mark J System and method for reflashing disk drive firmware
US20070022175A1 (en) * 2005-06-29 2007-01-25 Inventec Corporation Computer platform redundant system program remote switching control method and system
US8561049B2 (en) * 2005-08-23 2013-10-15 Red Bend Ltd. Method and system for updating content stored in a storage device
US20070050430A1 (en) * 2005-08-23 2007-03-01 Red Bend Ltd., Israeli Company Of Method and system for updating content stored in a storage device
US20070061813A1 (en) * 2005-08-30 2007-03-15 Mcdata Corporation Distributed embedded software for a switch
US7870373B2 (en) * 2005-12-23 2011-01-11 Intel Corporation System and method for automatic update of embedded data
US20070150715A1 (en) * 2005-12-23 2007-06-28 Intel Corporation System and method for automatic update of embedded data
US9378005B2 (en) * 2005-12-28 2016-06-28 Foundry Networks, Llc Hitless software upgrades
US20130305236A1 (en) * 2005-12-28 2013-11-14 Foundry Networks, Llc Hitless software upgrades
US7818740B2 (en) * 2006-05-05 2010-10-19 Microsoft Corporation Techniques to perform gradual upgrades
US20070261049A1 (en) * 2006-05-05 2007-11-08 Microsoft Corporation Techniques to perform gradual upgrades
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US9395968B1 (en) 2006-06-30 2016-07-19 American Megatrends, Inc. Uniquely identifying and validating computer system firmware
US8555043B1 (en) 2006-06-30 2013-10-08 American Megatrends, Inc. Dynamically updating a computer system firmware image
US8578360B1 (en) 2006-06-30 2013-11-05 American Megatrends, Inc. Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure
US7797696B1 (en) * 2006-06-30 2010-09-14 American Megatrends, Inc. Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure
US20080123659A1 (en) * 2006-07-03 2008-05-29 Dirk Rosenau Arrangement and method for loading data into a memory
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US9081638B2 (en) 2006-07-27 2015-07-14 Qualcomm Incorporated User experience and dependency management in a mobile device
US20080052698A1 (en) * 2006-08-25 2008-02-28 Microsoft Corporation Providing firmware updates to portable media devices
US7770165B2 (en) * 2006-08-25 2010-08-03 Microsoft Corporation Providing firmware updates to portable media devices
US8024724B2 (en) 2006-08-31 2011-09-20 Itron, Inc. Firmware download
US20100268867A1 (en) * 2006-09-29 2010-10-21 Nokia Corporation Method and apparatus for updating firmware as a background task
US20110276724A1 (en) * 2006-11-29 2011-11-10 Sony Ericsson Mobile Communications Ab System and Method for Updating Device Drivers
US20080127165A1 (en) * 2006-11-29 2008-05-29 Sony Ericsson Mobile Communications Ab System and Method for Updating Device Drivers
US8010959B2 (en) * 2006-11-29 2011-08-30 Sony Ericsson Mobile Communications Ab System and method for updating device drivers
US8291034B1 (en) * 2006-12-15 2012-10-16 The Research Foundation Of State University Of New York Centralized adaptive network memory engine
US8479190B2 (en) * 2007-01-23 2013-07-02 Sony Corporation Management system, management method, terminal device, management server and program
US20080178171A1 (en) * 2007-01-23 2008-07-24 Masahiro Sueyoshi Management System, Management Method, Terminal Device, Management Server and Program
US8104031B2 (en) * 2007-01-30 2012-01-24 Fujitsu Limited Storage system, storage unit, and method for hot swapping of firmware
US20080184217A1 (en) * 2007-01-30 2008-07-31 Fujitsu Limited Storage system, storage unit, and method for hot swapping of firmware
US20080184072A1 (en) * 2007-01-31 2008-07-31 Odlivak Andrew J Firmware ROM Patch Method
US9348730B2 (en) * 2007-01-31 2016-05-24 Standard Microsystems Corporation Firmware ROM patch method
US7971200B2 (en) 2007-02-06 2011-06-28 International Business Machines Corporation Transparent recovery of self-sustained code-upgrade
US20080189694A1 (en) * 2007-02-06 2008-08-07 International Business Machines Corporation Transparent Recovery of Self-Sustained Code-Upgrade
US20080229060A1 (en) * 2007-03-15 2008-09-18 Hynix Semiconductor Inc. Micro controller and method of updating the same
US8108663B2 (en) * 2007-03-15 2012-01-31 Hynix Semiconductor Inc. Micro controller and method of updating the same
US8250567B2 (en) * 2007-05-21 2012-08-21 Thomson Licensing Robust firmware upgrade in a network terminal
US20100122246A1 (en) * 2007-05-21 2010-05-13 Lieven Gesquiere Robust firmware upgrade in a network terminal
US20090019435A1 (en) * 2007-07-12 2009-01-15 Sauer-Danfoss Inc. System and method for over the air programming
US20090077549A1 (en) * 2007-09-17 2009-03-19 Sony Corporation System, Apparatus, and Method for an Upgrader Module
US8209678B2 (en) * 2007-09-17 2012-06-26 Sony Corporation System, apparatus, and method for an upgrader module
US20090217257A1 (en) * 2008-02-27 2009-08-27 Mstar Semiconductor, Inc. Apparatus and Method for Firmware Update
US7991988B2 (en) * 2008-02-29 2011-08-02 Hon Hai Precision Industry Co., Ltd. Communication device and firmware update method thereof
US20090222650A1 (en) * 2008-02-29 2009-09-03 Hon Hai Precision Industry Co., Ltd. Communication device and firmware update method thereof
US20090328022A1 (en) * 2008-06-26 2009-12-31 International Business Machines Corporation Systems and methods for maintaining crtm code
US8943491B2 (en) * 2008-06-26 2015-01-27 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Systems and methods for maintaining CRTM code
US20100058306A1 (en) * 2008-08-26 2010-03-04 Terry Wayne Liles System and Method for Secure Information Handling System Flash Memory Access
US9183395B2 (en) 2008-08-26 2015-11-10 Dell Products L.P. System and method for secure information handling system flash memory access
US9069965B2 (en) * 2008-08-26 2015-06-30 Dell Products L.P. System and method for secure information handling system flash memory access
US20110131563A1 (en) * 2008-09-24 2011-06-02 Hitachi Solutions, Ltd. Firmware update apparatus and method
US8549510B2 (en) * 2008-09-24 2013-10-01 Hitachi Solutions, Ltd. Firmware update apparatus and method
US8990486B2 (en) * 2008-09-30 2015-03-24 Intel Corporation Hardware and file system agnostic mechanism for achieving capsule support
US20140195763A1 (en) * 2008-09-30 2014-07-10 Michael A. Rothman Hardware and file system agnostic mechanism for achieving capsule support
US8631186B2 (en) * 2008-09-30 2014-01-14 Intel Corporation Hardware and file system agnostic mechanism for achieving capsule support
US20100082932A1 (en) * 2008-09-30 2010-04-01 Rothman Michael A Hardware and file system agnostic mechanism for achieving capsule support
US9154428B2 (en) 2009-01-28 2015-10-06 Headwater Partners I Llc Wireless end-user device with differentiated network access selectively applied to different applications
US9955332B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Method for child wireless device activation to subscriber account of a master wireless device
US11923995B2 (en) 2009-01-28 2024-03-05 Headwater Research Llc Device-assisted services for protecting network capacity
US8839388B2 (en) 2009-01-28 2014-09-16 Headwater Partners I Llc Automated device provisioning and activation
US8839387B2 (en) 2009-01-28 2014-09-16 Headwater Partners I Llc Roaming services network and overlay networks
US11757943B2 (en) 2009-01-28 2023-09-12 Headwater Research Llc Automated device provisioning and activation
US8868455B2 (en) 2009-01-28 2014-10-21 Headwater Partners I Llc Adaptive ambient services
US20140075567A1 (en) * 2009-01-28 2014-03-13 Headwater Partners I Llc Service Processor Configurations for Enhancing or Augmenting System Software of a Mobile Communications Device
US8886162B2 (en) 2009-01-28 2014-11-11 Headwater Partners I Llc Restricting end-user device communications over a wireless access network associated with a cost
US11750477B2 (en) 2009-01-28 2023-09-05 Headwater Research Llc Adaptive ambient services
US8897743B2 (en) 2009-01-28 2014-11-25 Headwater Partners I Llc Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account
US8924549B2 (en) 2009-01-28 2014-12-30 Headwater Partners I Llc Network based ambient services
US11665186B2 (en) 2009-01-28 2023-05-30 Headwater Research Llc Communications device with secure data path processing agents
US8948025B2 (en) 2009-01-28 2015-02-03 Headwater Partners I Llc Remotely configurable device agent for packet routing
US11665592B2 (en) 2009-01-28 2023-05-30 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US11589216B2 (en) 2009-01-28 2023-02-21 Headwater Research Llc Service selection set publishing to device agent with on-device service selection
US9014026B2 (en) 2009-01-28 2015-04-21 Headwater Partners I Llc Network based service profile management with user preference, adaptive policy, network neutrality, and user privacy
US11582593B2 (en) 2009-01-28 2023-02-14 Head Water Research Llc Adapting network policies based on device service processor configuration
US11570309B2 (en) 2009-01-28 2023-01-31 Headwater Research Llc Service design center for device assisted services
US11563592B2 (en) 2009-01-28 2023-01-24 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US9026079B2 (en) 2009-01-28 2015-05-05 Headwater Partners I Llc Wireless network service interfaces
US9037127B2 (en) 2009-01-28 2015-05-19 Headwater Partners I Llc Device agent for remote user configuration of wireless network access
US11538106B2 (en) 2009-01-28 2022-12-27 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US11533642B2 (en) 2009-01-28 2022-12-20 Headwater Research Llc Device group partitions and settlement platform
US11516301B2 (en) 2009-01-28 2022-11-29 Headwater Research Llc Enhanced curfew and protection associated with a device group
US9094311B2 (en) 2009-01-28 2015-07-28 Headwater Partners I, Llc Techniques for attribution of mobile device data traffic to initiating end-user application
US9137739B2 (en) 2009-01-28 2015-09-15 Headwater Partners I Llc Network based service policy implementation with network neutrality and user privacy
US9137701B2 (en) 2009-01-28 2015-09-15 Headwater Partners I Llc Wireless end-user device with differentiated network access for background and foreground device applications
US9143976B2 (en) 2009-01-28 2015-09-22 Headwater Partners I Llc Wireless end-user device with differentiated network access and access status for background and foreground device applications
US11494837B2 (en) 2009-01-28 2022-11-08 Headwater Research Llc Virtualized policy and charging system
US11477246B2 (en) 2009-01-28 2022-10-18 Headwater Research Llc Network service plan design
US11425580B2 (en) 2009-01-28 2022-08-23 Headwater Research Llc System and method for wireless network offloading
US9173104B2 (en) 2009-01-28 2015-10-27 Headwater Partners I Llc Mobile device with device agents to detect a disallowed access to a requested mobile data service and guide a multi-carrier selection and activation sequence
US9179308B2 (en) 2009-01-28 2015-11-03 Headwater Partners I Llc Network tools for analysis, design, testing, and production of services
US9179359B2 (en) 2009-01-28 2015-11-03 Headwater Partners I Llc Wireless end-user device with differentiated network access status for different device applications
US9179315B2 (en) 2009-01-28 2015-11-03 Headwater Partners I Llc Mobile device with data service monitoring, categorization, and display for different applications and networks
US9179316B2 (en) 2009-01-28 2015-11-03 Headwater Partners I Llc Mobile device with user controls and policy agent to control application access to device location data
US11412366B2 (en) 2009-01-28 2022-08-09 Headwater Research Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US9198074B2 (en) 2009-01-28 2015-11-24 Headwater Partners I Llc Wireless end-user device with differential traffic control policy list and applying foreground classification to roaming wireless data service
US9198076B2 (en) 2009-01-28 2015-11-24 Headwater Partners I Llc Wireless end-user device with power-control-state-based wireless network access policy for background applications
US9198042B2 (en) 2009-01-28 2015-11-24 Headwater Partners I Llc Security techniques for device assisted services
US9198075B2 (en) 2009-01-28 2015-11-24 Headwater Partners I Llc Wireless end-user device with differential traffic control policy list applicable to one of several wireless modems
US9198117B2 (en) 2009-01-28 2015-11-24 Headwater Partners I Llc Network system with common secure wireless message service serving multiple applications on multiple wireless devices
US9204374B2 (en) 2009-01-28 2015-12-01 Headwater Partners I Llc Multicarrier over-the-air cellular network activation server
US9204282B2 (en) 2009-01-28 2015-12-01 Headwater Partners I Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US9215159B2 (en) 2009-01-28 2015-12-15 Headwater Partners I Llc Data usage monitoring for media data services used by applications
US9215613B2 (en) 2009-01-28 2015-12-15 Headwater Partners I Llc Wireless end-user device with differential traffic control policy list having limited user control
US9220027B1 (en) 2009-01-28 2015-12-22 Headwater Partners I Llc Wireless end-user device with policy-based controls for WWAN network usage and modem state changes requested by specific applications
US9225797B2 (en) 2009-01-28 2015-12-29 Headwater Partners I Llc System for providing an adaptive wireless ambient service to a mobile device
US9232403B2 (en) 2009-01-28 2016-01-05 Headwater Partners I Llc Mobile device with common secure wireless message service serving multiple applications
US11405224B2 (en) 2009-01-28 2022-08-02 Headwater Research Llc Device-assisted services for protecting network capacity
US9247450B2 (en) 2009-01-28 2016-01-26 Headwater Partners I Llc Quality of service for device assisted services
US9253663B2 (en) 2009-01-28 2016-02-02 Headwater Partners I Llc Controlling mobile device communications on a roaming network based on device state
US9258735B2 (en) 2009-01-28 2016-02-09 Headwater Partners I Llc Device-assisted services for protecting network capacity
US9270559B2 (en) 2009-01-28 2016-02-23 Headwater Partners I Llc Service policy implementation for an end-user device having a control application or a proxy agent for routing an application traffic flow
US9271184B2 (en) 2009-01-28 2016-02-23 Headwater Partners I Llc Wireless end-user device with per-application data limit and traffic control policy list limiting background application traffic
US9277433B2 (en) 2009-01-28 2016-03-01 Headwater Partners I Llc Wireless end-user device with policy-based aggregation of network activity requested by applications
US9277445B2 (en) 2009-01-28 2016-03-01 Headwater Partners I Llc Wireless end-user device with differential traffic control policy list and applying foreground classification to wireless data service
US9319913B2 (en) 2009-01-28 2016-04-19 Headwater Partners I Llc Wireless end-user device with secure network-provided differential traffic control policy list
US11405429B2 (en) 2009-01-28 2022-08-02 Headwater Research Llc Security techniques for device assisted services
US9351193B2 (en) 2009-01-28 2016-05-24 Headwater Partners I Llc Intermediate networking devices
US11363496B2 (en) 2009-01-28 2022-06-14 Headwater Research Llc Intermediate networking devices
US11337059B2 (en) 2009-01-28 2022-05-17 Headwater Research Llc Device assisted services install
US9386165B2 (en) 2009-01-28 2016-07-05 Headwater Partners I Llc System and method for providing user notifications
US9386121B2 (en) 2009-01-28 2016-07-05 Headwater Partners I Llc Method for providing an adaptive wireless ambient service to a mobile device
US11228617B2 (en) 2009-01-28 2022-01-18 Headwater Research Llc Automated device provisioning and activation
US9392462B2 (en) 2009-01-28 2016-07-12 Headwater Partners I Llc Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy
US11219074B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Enterprise access control and accounting allocation for access networks
US11218854B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US11190645B2 (en) 2009-01-28 2021-11-30 Headwater Research Llc Device assisted CDR creation, aggregation, mediation and billing
US11190427B2 (en) 2009-01-28 2021-11-30 Headwater Research Llc Flow tagging for service policy implementation
US9491564B1 (en) 2009-01-28 2016-11-08 Headwater Partners I Llc Mobile device and method with secure network messaging for authorized components
US9491199B2 (en) 2009-01-28 2016-11-08 Headwater Partners I Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9521578B2 (en) 2009-01-28 2016-12-13 Headwater Partners I Llc Wireless end-user device with application program interface to allow applications to access application-specific aspects of a wireless network access policy
US11190545B2 (en) 2009-01-28 2021-11-30 Headwater Research Llc Wireless network service interfaces
US11134102B2 (en) 2009-01-28 2021-09-28 Headwater Research Llc Verifiable device assisted service usage monitoring with reporting, synchronization, and notification
US11096055B2 (en) 2009-01-28 2021-08-17 Headwater Research Llc Automated device provisioning and activation
US11039020B2 (en) 2009-01-28 2021-06-15 Headwater Research Llc Mobile device and service management
US10985977B2 (en) 2009-01-28 2021-04-20 Headwater Research Llc Quality of service for device assisted services
US10869199B2 (en) 2009-01-28 2020-12-15 Headwater Research Llc Network service plan design
US9532261B2 (en) 2009-01-28 2016-12-27 Headwater Partners I Llc System and method for wireless network offloading
US9532161B2 (en) 2009-01-28 2016-12-27 Headwater Partners I Llc Wireless device with application data flow tagging and network stack-implemented network access policy
US10855559B2 (en) 2009-01-28 2020-12-01 Headwater Research Llc Adaptive ambient services
US9544397B2 (en) 2009-01-28 2017-01-10 Headwater Partners I Llc Proxy server for providing an adaptive wireless ambient service to a mobile device
US10848330B2 (en) 2009-01-28 2020-11-24 Headwater Research Llc Device-assisted services for protecting network capacity
US10841839B2 (en) 2009-01-28 2020-11-17 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9557889B2 (en) 2009-01-28 2017-01-31 Headwater Partners I Llc Service plan design, user interfaces, application programming interfaces, and device management
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US9565543B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Device group partitions and settlement platform
US9571559B2 (en) 2009-01-28 2017-02-14 Headwater Partners I Llc Enhanced curfew and protection associated with a device group
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
US9578182B2 (en) 2009-01-28 2017-02-21 Headwater Partners I Llc Mobile device and service management
US9591474B2 (en) 2009-01-28 2017-03-07 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US10834577B2 (en) 2009-01-28 2020-11-10 Headwater Research Llc Service offer set publishing to device agent with on-device service selection
US9609544B2 (en) 2009-01-28 2017-03-28 Headwater Research Llc Device-assisted services for protecting network capacity
US9609510B2 (en) 2009-01-28 2017-03-28 Headwater Research Llc Automated credential porting for mobile devices
US9609459B2 (en) 2009-01-28 2017-03-28 Headwater Research Llc Network tools for analysis, design, testing, and production of services
US9615192B2 (en) 2009-01-28 2017-04-04 Headwater Research Llc Message link server with plural message delivery triggers
US10803518B2 (en) 2009-01-28 2020-10-13 Headwater Research Llc Virtualized policy and charging system
US9641957B2 (en) 2009-01-28 2017-05-02 Headwater Research Llc Automated device provisioning and activation
US9647918B2 (en) 2009-01-28 2017-05-09 Headwater Research Llc Mobile device and method attributing media services network usage to requesting application
US9674731B2 (en) 2009-01-28 2017-06-06 Headwater Research Llc Wireless device applying different background data traffic policies to different device applications
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US9705771B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Attribution of mobile device data traffic to end-user application based on socket flows
US9749899B2 (en) 2009-01-28 2017-08-29 Headwater Research Llc Wireless end-user device with network traffic API to indicate unavailability of roaming wireless connection to background applications
US9749898B2 (en) 2009-01-28 2017-08-29 Headwater Research Llc Wireless end-user device with differential traffic control policy list applicable to one of several wireless modems
US9755842B2 (en) 2009-01-28 2017-09-05 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US9769207B2 (en) 2009-01-28 2017-09-19 Headwater Research Llc Wireless network service interfaces
US9819808B2 (en) 2009-01-28 2017-11-14 Headwater Research Llc Hierarchical service policies for creating service usage data records for a wireless end-user device
US9858559B2 (en) 2009-01-28 2018-01-02 Headwater Research Llc Network service plan design
US9866642B2 (en) 2009-01-28 2018-01-09 Headwater Research Llc Wireless end-user device with wireless modem power state control policy for background applications
US10798558B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc Adapting network policies based on device service processor configuration
US10798254B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc Service design center for device assisted services
US9942796B2 (en) 2009-01-28 2018-04-10 Headwater Research Llc Quality of service for device assisted services
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US10791471B2 (en) 2009-01-28 2020-09-29 Headwater Research Llc System and method for wireless network offloading
US9973930B2 (en) 2009-01-28 2018-05-15 Headwater Research Llc End user device that secures an association of application to service policy with an application certificate check
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US10028144B2 (en) 2009-01-28 2018-07-17 Headwater Research Llc Security techniques for device assisted services
US10779177B2 (en) 2009-01-28 2020-09-15 Headwater Research Llc Device group partitions and settlement platform
US10057775B2 (en) 2009-01-28 2018-08-21 Headwater Research Llc Virtualized policy and charging system
US10057141B2 (en) 2009-01-28 2018-08-21 Headwater Research Llc Proxy system and method for adaptive ambient services
US10064033B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Device group partitions and settlement platform
US10064055B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10070305B2 (en) 2009-01-28 2018-09-04 Headwater Research Llc Device assisted services install
US10080250B2 (en) 2009-01-28 2018-09-18 Headwater Research Llc Enterprise access control and accounting allocation for access networks
US10165447B2 (en) 2009-01-28 2018-12-25 Headwater Research Llc Network service plan design
US10771980B2 (en) 2009-01-28 2020-09-08 Headwater Research Llc Communications device with secure data path processing agents
US10171990B2 (en) 2009-01-28 2019-01-01 Headwater Research Llc Service selection set publishing to device agent with on-device service selection
US10171681B2 (en) 2009-01-28 2019-01-01 Headwater Research Llc Service design center for device assisted services
US10171988B2 (en) 2009-01-28 2019-01-01 Headwater Research Llc Adapting network policies based on device service processor configuration
US10200541B2 (en) 2009-01-28 2019-02-05 Headwater Research Llc Wireless end-user device with divided user space/kernel space traffic policy system
US10749700B2 (en) 2009-01-28 2020-08-18 Headwater Research Llc Device-assisted services for protecting network capacity
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
US10237773B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc Device-assisted services for protecting network capacity
US10237146B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc Adaptive ambient services
US10716006B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc End user device that secures an association of application to service policy with an application certificate check
US10715342B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
US10694385B2 (en) 2009-01-28 2020-06-23 Headwater Research Llc Security techniques for device assisted services
US10681179B2 (en) 2009-01-28 2020-06-09 Headwater Research Llc Enhanced curfew and protection associated with a device group
US10582375B2 (en) 2009-01-28 2020-03-03 Headwater Research Llc Device assisted services install
US10320990B2 (en) 2009-01-28 2019-06-11 Headwater Research Llc Device assisted CDR creation, aggregation, mediation and billing
US10321320B2 (en) 2009-01-28 2019-06-11 Headwater Research Llc Wireless network buffered message system
US10326675B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Flow tagging for service policy implementation
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US10536983B2 (en) 2009-01-28 2020-01-14 Headwater Research Llc Enterprise access control and accounting allocation for access networks
US10462627B2 (en) 2009-01-28 2019-10-29 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US8856776B2 (en) 2009-02-05 2014-10-07 International Business Machines Corporation Updating firmware without disrupting service
US20100199272A1 (en) * 2009-02-05 2010-08-05 International Business Machines Corporation Updating firmware without disrupting service
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US9524016B2 (en) 2009-09-08 2016-12-20 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9519333B2 (en) 2009-09-08 2016-12-13 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9015698B2 (en) 2009-09-08 2015-04-21 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9015700B2 (en) 2009-09-08 2015-04-21 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9015701B2 (en) 2009-09-08 2015-04-21 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US10241562B2 (en) 2009-09-08 2019-03-26 Abbott Diabetes Care Inc. Controlling operation of a safety critical application on an uncontrolled data processing device
US9015699B2 (en) 2009-09-08 2015-04-21 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9058431B2 (en) 2009-09-08 2015-06-16 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9524017B2 (en) 2009-09-08 2016-12-20 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9519334B2 (en) 2009-09-08 2016-12-13 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US20150293805A1 (en) * 2009-09-08 2015-10-15 Abbott Diabetes Care Inc. Methods and Articles of Manufacture for Hosting a Safety Critical Application on an Uncontrolled Data Processing Device
US11586273B2 (en) 2009-09-08 2023-02-21 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9519335B2 (en) 2009-09-08 2016-12-13 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9529413B2 (en) 2009-09-08 2016-12-27 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US8601465B2 (en) * 2009-09-08 2013-12-03 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US20110126188A1 (en) * 2009-09-08 2011-05-26 Abbott Diabetes Care Inc. Methods and Articles of Manufacture for Hosting a Safety Critical Application on an Uncontrolled Data Processing Device
US9529414B2 (en) 2009-09-08 2016-12-27 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9619013B2 (en) 2009-09-08 2017-04-11 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US11301027B2 (en) 2009-09-08 2022-04-12 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US11099627B2 (en) 2009-09-08 2021-08-24 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9552052B2 (en) * 2009-09-08 2017-01-24 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US20110093692A1 (en) * 2009-10-19 2011-04-21 Ming-Hung Tsai Method of updating identification data of a computer system and related computer system
US20110119662A1 (en) * 2009-11-18 2011-05-19 Inventec Corporation Method for updating firmware of embedded system
US20110128158A1 (en) * 2009-12-01 2011-06-02 inXtron, Inc. Network device capable of remotely updating firmware thereof
US20110276618A1 (en) * 2010-05-06 2011-11-10 Verizon Patent And Licensing Inc. System for and method of distributing files
US8626927B2 (en) * 2010-05-06 2014-01-07 Verizon Patent And Licensing Inc. System for and method of distributing files
US9384084B2 (en) * 2011-03-23 2016-07-05 Volvo Car Corporation Complete and compatible function
CN102708044B (en) * 2011-03-23 2016-01-06 沃尔沃汽车公司 Integrality and compatibility verification apparatus and method
US20120246615A1 (en) * 2011-03-23 2012-09-27 Volvo Car Corporation Complete and compatible function
CN102708044A (en) * 2011-03-23 2012-10-03 沃尔沃汽车公司 Complete and compatible function
US9154826B2 (en) 2011-04-06 2015-10-06 Headwater Partners Ii Llc Distributing content and service launch objects to mobile devices
US8595716B2 (en) 2011-04-06 2013-11-26 Robert Bosch Gmbh Failsafe firmware updates
US8683457B1 (en) 2011-06-17 2014-03-25 Western Digital Technologies, Inc. Updating firmware of an electronic device by storing a version identifier in a separate header
US20130167132A1 (en) * 2011-12-22 2013-06-27 Hon Hai Precision Industry Co., Ltd. System, electronic device with firmware updating function and method therefor
US10318268B2 (en) * 2012-11-19 2019-06-11 Zte Corporation Setting method for binary integration of boot program and kernel program
US11743717B2 (en) 2013-03-14 2023-08-29 Headwater Research Llc Automated credential porting for mobile devices
US10171995B2 (en) 2013-03-14 2019-01-01 Headwater Research Llc Automated credential porting for mobile devices
US10834583B2 (en) 2013-03-14 2020-11-10 Headwater Research Llc Automated credential porting for mobile devices
US9891908B2 (en) * 2013-12-20 2018-02-13 Nordic Semiconductor Asa Updatable integrated-circuit radio
CN105814545B (en) * 2013-12-27 2019-08-27 京瓷办公信息系统株式会社 Electronic equipment
CN105814545A (en) * 2013-12-27 2016-07-27 京瓷办公信息系统株式会社 Electronic device
US20160321057A1 (en) * 2013-12-27 2016-11-03 Kyocera Document Solutions Inc. Electronic apparatus
US9594699B2 (en) * 2015-03-20 2017-03-14 Intel Corporation Additional security in flashless modem
US20170010885A1 (en) * 2015-07-07 2017-01-12 Yi-Che Chen Wireless Data Update System and Method
US10712792B2 (en) * 2015-11-09 2020-07-14 Dell Products, L.P. System and method for provisioning a powered off server in a data center
US9965267B2 (en) 2015-11-19 2018-05-08 Raytheon Company Dynamic interface for firmware updates
US10025583B2 (en) 2016-02-17 2018-07-17 International Business Machines Corporation Managing firmware upgrade failures
US11240562B1 (en) 2016-02-23 2022-02-01 CSC Holdings, LLC Set-top box reboot and polling tool
US9866905B1 (en) * 2016-02-23 2018-01-09 CSC Holdings, LLC Set-top box reboot and polling tool
US10506286B1 (en) 2016-02-23 2019-12-10 CSC Holdings, LLC Set-top box reboot and polling tool
US10473758B2 (en) 2016-04-06 2019-11-12 Raytheon Company Universal coherent technique generator
US10051462B2 (en) * 2016-12-16 2018-08-14 T-Mobile Usa, Inc. Hybrid transport for installed service updates
WO2019046933A1 (en) * 2017-09-06 2019-03-14 Absolute Software Corporation Secure firmware interface
US10922070B2 (en) * 2017-09-21 2021-02-16 Western Digital Technologies, Inc. Hardware assisted firmware download syncing
CN109542490A (en) * 2017-09-21 2019-03-29 西部数据技术公司 The downloading of hardware auxiliary firmware synchronizes
CN109542490B (en) * 2017-09-21 2022-04-01 西部数据技术公司 Hardware-assisted firmware download synchronization method and device
US20190155767A1 (en) * 2017-11-17 2019-05-23 Samsung Electronics Co., Ltd. Storage device configured to update field programmable gate array and method of operating the same
US10754800B2 (en) * 2017-11-17 2020-08-25 Samsung Electronics Co., Ltd. Storage device configured to update field programmable gate array and method of operating the same
US11537389B2 (en) * 2017-12-12 2022-12-27 Infineon Technologies LLC Memory devices, systems, and methods for updating firmware with single memory device
US11449329B2 (en) * 2018-02-16 2022-09-20 Hitachi Astemo, Ltd. Vehicle control device and program update system
CN111684416B (en) * 2018-02-16 2023-09-29 日立安斯泰莫株式会社 Vehicle control device and program update system
CN111684416A (en) * 2018-02-16 2020-09-18 日立汽车系统株式会社 Vehicle control device and program update system
US11288059B2 (en) 2018-03-16 2022-03-29 Google Llc Leveraging previously installed application elements to install an application
US11055087B2 (en) * 2018-03-16 2021-07-06 Google Llc Leveraging previously installed application elements to install an application
US11429375B2 (en) * 2018-05-23 2022-08-30 Robert Bosch Gmbh Method for exchanging a first executable program code and a second executable program code, and a control unit
US10838711B2 (en) * 2018-09-20 2020-11-17 Mellanox Technologies Tlv Ltd. In-service software/firmware update
US10930350B2 (en) * 2018-12-20 2021-02-23 SK Hynix Inc. Memory device for updating micro-code, memory system including the memory device, and method for operating the memory device
CN109710292A (en) * 2018-12-28 2019-05-03 Tcl移动通信科技(宁波)有限公司 Mobile terminal brush machine controls processing method, mobile terminal and storage medium
CN109710292B (en) * 2018-12-28 2024-01-05 Tcl移动通信科技(宁波)有限公司 Mobile terminal machine brushing control processing method, mobile terminal and storage medium
US11556333B2 (en) * 2020-03-11 2023-01-17 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for processing audio processing chip, and electronic device
CN111459528A (en) * 2020-04-01 2020-07-28 Tcl移动通信科技(宁波)有限公司 Frequency band upgrading method, system, storage medium and mobile terminal
CN111459528B (en) * 2020-04-01 2024-01-09 Tcl移动通信科技(宁波)有限公司 Frequency band upgrading method, system, storage medium and mobile terminal
US11741232B2 (en) 2021-02-01 2023-08-29 Mellanox Technologies, Ltd. Secure in-service firmware update
CN113220323A (en) * 2021-04-23 2021-08-06 山东英信计算机技术有限公司 Method, system and medium for improving updating efficiency of CPLD firmware of production line

Also Published As

Publication number Publication date
EP2299359A1 (en) 2011-03-23
EP1087294A3 (en) 2006-01-25
EP1087294A2 (en) 2001-03-28
CA2320374A1 (en) 2001-03-27
EP1087294B1 (en) 2015-01-21

Similar Documents

Publication Publication Date Title
US6640334B1 (en) Method and apparatus of remotely updating firmware of a communication device
US6681390B2 (en) Upgrade of a program
US5701492A (en) Fail-safe flashing of EPROM
US6314532B1 (en) Method and system for recovering from a software failure
US7991988B2 (en) Communication device and firmware update method thereof
US7809836B2 (en) System and method for automating bios firmware image recovery using a non-host processor and platform policy to select a donor system
US7278002B2 (en) Method and system for reducing storage requirements for program code in a communication device
US6457175B1 (en) Method and apparatus for installing a software upgrade within a memory resource associated with a computer system
US6289510B1 (en) Online program-updating system and computer-readable recording medium storing a program-updating program
US6615404B1 (en) Method and apparatus for downloading software into an embedded-system
JP2812189B2 (en) How to download the program
EP1887759B1 (en) Method and system for realizing automatic restoration after a device failure
US5689640A (en) Method and system for downloading data to network nodes
US8930931B2 (en) Information processing apparatus using updated firmware and system setting method
US8839227B2 (en) Preventing overwrite of nonessential code during essential code update
US20030106051A1 (en) System and method for high availability firmware load
JPH10289108A (en) Remote program downloading device
US20030005351A1 (en) Method of upgrading software in a network environment and a network device for performing the same
JP2008117405A (en) Method for remotely upgrading software over network
CN112947977B (en) Online software upgrading method and system
WO2010025669A1 (en) Updating firmware with multiple processors
US5987625A (en) Method and apparatus for testing network bootable devices
US20040024878A1 (en) Network device and automatic program update technique
JPH05197559A (en) Remote software downloading system
JPH113213A (en) Information processing system

Legal Events

Date Code Title Description
AS Assignment

Owner name: NORTEL NETWORKS CORPORATION, CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RASMUSSEN, JOHN H.;REEL/FRAME:010293/0129

Effective date: 19990923

AS Assignment

Owner name: NORTEL NETWORKS LIMITED, CANADA

Free format text: CHANGE OF NAME;ASSIGNOR:NORTEL NETWORKS CORPORATION;REEL/FRAME:011195/0706

Effective date: 20000830

Owner name: NORTEL NETWORKS LIMITED,CANADA

Free format text: CHANGE OF NAME;ASSIGNOR:NORTEL NETWORKS CORPORATION;REEL/FRAME:011195/0706

Effective date: 20000830

STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: ROCKSTAR BIDCO, LP, NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NORTEL NETWORKS LIMITED;REEL/FRAME:027164/0356

Effective date: 20110729

AS Assignment

Owner name: ROCKSTAR CONSORTIUM US LP, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ROCKSTAR BIDCO, LP;REEL/FRAME:032399/0442

Effective date: 20120509

AS Assignment

Owner name: RPX CLEARINGHOUSE LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ROCKSTAR CONSORTIUM US LP;ROCKSTAR CONSORTIUM LLC;BOCKSTAR TECHNOLOGIES LLC;AND OTHERS;REEL/FRAME:034924/0779

Effective date: 20150128

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, IL

Free format text: SECURITY AGREEMENT;ASSIGNORS:RPX CORPORATION;RPX CLEARINGHOUSE LLC;REEL/FRAME:038041/0001

Effective date: 20160226

AS Assignment

Owner name: RPX CORPORATION, CALIFORNIA

Free format text: RELEASE (REEL 038041 / FRAME 0001);ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:044970/0030

Effective date: 20171222

Owner name: RPX CLEARINGHOUSE LLC, CALIFORNIA

Free format text: RELEASE (REEL 038041 / FRAME 0001);ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:044970/0030

Effective date: 20171222

AS Assignment

Owner name: JEFFERIES FINANCE LLC, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:RPX CLEARINGHOUSE LLC;REEL/FRAME:046485/0644

Effective date: 20180619

AS Assignment

Owner name: RPX CLEARINGHOUSE LLC, CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:054305/0505

Effective date: 20201023