US20050063242A1 - Embedded software update methods and systems for digital devices - Google Patents

Embedded software update methods and systems for digital devices Download PDF

Info

Publication number
US20050063242A1
US20050063242A1 US10986258 US98625804A US2005063242A1 US 20050063242 A1 US20050063242 A1 US 20050063242A1 US 10986258 US10986258 US 10986258 US 98625804 A US98625804 A US 98625804A US 2005063242 A1 US2005063242 A1 US 2005063242A1
Authority
US
Grant status
Application
Patent type
Prior art keywords
flash
software
patch
update
digital
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.)
Abandoned
Application number
US10986258
Inventor
Yuqing Ren
Original Assignee
Yuqing Ren
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

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Abstract

A method and apparatus of updating an embedded software operative in a digital device by a software patch comprises first preparing said embedded software. The method also comprises designating at least one Flash block of a Flash memory in said digital device as Flash update block for software update programming, designating at least one area in RAM memory in said digital device as RAM update buffer for Flash programming, preparing Flash erasing function and Flash writing function, designating a memory area in said digital device as patch area, loading said embedded software into said digital device. The method then comprises generating a software patch, adapted to provide a predetermined function, transmitting said software patch to said digital device through a communications link, receiving said software patch by said digital device, updating at least one Flash block of said embedded software in the unit of Flash block said software patch.

Description

    RELATED APPLICATION (FOR US)
  • [0001]
    The present application is a continuation of a prior patent application, Ser. No. 10/876,503, filed Jun. 24, 2004, which is a continuation of application, Ser. No. 10/195,199, filed on Jul. 15, 2002, now U.S. Pat. No. 6,760,908, claiming priority from provisional applications, Application No. 60/305,704, entitled “Embedded Software Patch System”, filed on Jul. 16, 2001, and No. 60/354,915, entitled “Embedded Software Patch System”, filed Feb. 8, 2002. The prior applications are hereby incorporated into this application by reference as if fully set forth herein.
  • FIELD OF THE INVENTION
  • [0002]
    The present invention is related to digital electronics products with embedded software operating systems, and more particularly related to methods of updating, correcting, modifying or upgrading the embedded software in such digital devices before or after the products have been released to market.
  • ART BACKGROUND
  • [0003]
    For the digital devices, such as cellular phones, PDAs and set-top boxes, their digital technology is based on large-scale embedded software system. Despite improvement in various stages of digital device development and manufacturing, after a digital device has been released to the field, manufactures will sometimes go through improvement, enhancement or upgrades, which may require a change in the embedded software.
  • [0004]
    Software update systems for embedded software have been in use by industry. However, they have not provided an efficient way for updating embedded software with small amount of update data. They also have failed to teach how to transmit such software update data to the digital devices. For example, U.S. Pat. No. 5,699,275, to Beasley, teaches the use of “rewrite” to update embedded software in a digital device that uses Flash/ROM memory. Nowadays, as the size of embedded software in digital devices gets bigger and bigger, “rewrite” is both time-consuming and costly and hence not an efficient method for a real commercial system.
  • [0005]
    A software update system for digital devices is best understood from a system architecture perspective. Reference is to FIG. 1, where a simplified conventional microprocessor system is illustrated. A microprocessor system in a typical digital device may comprise a Central Processing Unit (“CPU”) 100, Random Access Memory (“RAM”) 110, Flash/ROM memory 120, and some peripheral devices 130. A software program resides in Flash/ROM memory 120, and is read by CPU 100 during execution. Flash is a type of constantly-powered nonvolatile memory that can be erased and reprogrammed in units of memory called blocks. The term “ROM” stands for “Read Only Memory”.
  • [0006]
    Similar to the microprocessor system of FIG. 1, a Digital Signal Processor (“DSP”) system in a conventional digital device may comprise a DSP core 200, RAM 210, Flash/ROM memory 220, and some peripheral devices 230, as shown in FIG. 2. A software program resides in Flash/ROM memory 220, and is read by DSP core 200 during execution.
  • [0007]
    As is well understood, a typical digital device, e.g. a digital cellular phone, normally contains a microprocessor system, and may also contain a DSP system. A typical software update system can be configured or adapted to reside in the embedded software of the microprocessor system and/or the DSP system of a digital device. A simplified drawing of a conventional software architecture of a software update system in a digital device is illustrated in FIG. 3.
  • [0008]
    Referring to FIG. 3, the patch receiving module 300 is for receiving software patch data. It may include mechanism for data receiving either from wired link or wireless link, mechanism for data error detection and/or mechanism for data security check. After the patch receiving module 300 correctly receives patch data, it will pass the patch data to the patch programming module 310. The patch programming module 310 is for writing patch data into the patch database 320 and/or some program code areas. It may include program for writing data into Flash, NVM, EEPROM memory, and/or other types of memory. The patch database 320 is a memory area in Flash memory and/or other types of memory, which is for containing patch data.
  • [0009]
    It would be desirable to have an effective patch update system for the embedded software in digital devices.
  • SUMMARY OF THE PRESENT INVENTION
  • [0010]
    The present invention is directed to a method of updating embedded software using software patches. This approach can separately update one or multiple parts of the embedded software without changing program code of the other parts. Such updates can be transmitted to the target digital devices through wireless or wired transmission.
  • [0011]
    In accordance with one embodiment of the present invention, a method and apparatus of updating an embedded software operative in a digital device by a software patch is disclosed. The method comprises preparing said embedded software, which comprises designating at least one Flash block of a Flash memory in said digital device as Flash update block for software update programming, designating at least one area in RAM memory in said digital device as RAM update buffer for Flash programming, preparing Flash erasing function and Flash writing function, designating a memory area in said digital device as patch area, loading said embedded software into said digital device. The method then comprises generating a software patch, adapted to provide a predetermined function, transmitting said software patch to said digital device through a communications link, receiving said software patch by said digital device, updating at least one Flash block of said embedded software in the unit of Flash block with said software patch.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
  • [0012]
    1. A method and system of updating one or multiple software functions of embedded software without changing software code in the other functions is disclosed. In the following detailed description, numerous specific details are set forth to provide a full understanding of the present invention. It will be obvious, however, to one ordinarily skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and techniques have not been shown in detail so as to avoid unnecessarily obscuring the present invention. Additionally, headings are used throughout the description as a matter of convenience and for ease of references only. It should note that what is meant by “embedded software” herein is the software program written in C/C++/Java/Assembler, or other software programming languages, as well as any executable machine code of CPU/Microprocessor or DSP (“Digital Signal Processor”), for operating the digital devices. It should also be noted that what is meant by “software patch” herein is a block of software update data for updating the embedded software in the digital devices.
  • [0013]
    2. Composition of Software Update System
  • [0014]
    The embedded software in a digital device is typically stored in ROM/Flash memory, and the present invention is directed to updating the embedded software stored in Flash memory. The software update system of the present invention can be configured or adapted to reside in the embedded software of the microprocessor system and/or the DSP system of a digital device. The software update system in accordance with one embodiment of the present invention, when it is implemented in a digital device, may be structured to comprise a software module 300 for patch receiving, a software module 310 for patch programming and a patch database 320, as illustrated by FIG. 3.
  • [0015]
    3. Software Update Methods
  • [0016]
    3.1 Flash Memory Composition
  • [0017]
    The software update methodology of the present invention will now be described first with references to a basic Flash memory composition and operation. As shown in FIG. 4, a typical Flash memory chip is composed by multiple Flash banks, Bank-1, Bank-2, . . . Bank-N, and each bank can be further separated into multiple Flash blocks. For example, Bank-1 can be separated into Block-1, Block-2, . . . , Block-M. Though some other terms, such as Flash “partition”, can also be used to represent a Flash “bank”, in this application, only the term Flash “bank” is used to represent the meaning.
  • [0018]
    The embedded software in a digital device is typically programmed into K banks of the Flash memory, Bank-1, Bank-2, . . . , Bank-K, where K is the total number of the Flash banks that the embedded software occupied, and K is less or equal to N, where N is the total number of banks allocated.
  • [0019]
    In a typical Flash memory chip, such as the Intel 28F320W30 Flash memory chip, only one Flash bank at a time can be in the state of active programming or erasing. While writing or programming data into an area in a Flash bank, for example Flash Bank-A, it is not permissible to read any data stored in that Flash Bank-A, though some values of Flash registers can be read or using some addresses in the Flash Bank-A. However, when writing data into the Flash Bank-A, it is permissible to read data stored in any other Flash banks different from Bank-A. When erasing operation is performed on a Flash bank, each Flash block in the Flash bank can be separately erased.
  • [0020]
    Flash memory has a feature that each data bit of the memory can only be changed from state “1” to state “0” during Flash programming or data writing. A data bit in Flash memory cannot be changed separately from state “0” to state “1”. It depends on Flash erasing, for example, erasing a Flash block, to reset all the data bits in the Flash block to state “1”. Therefore when a part of the program code in Flash memory needs to be updated, it is not possible, nor permissible, to directly over-write the original program code with the new updated program code, without erasing the corresponding Flash block.
  • [0021]
    3.2 Using Flash Block as the Unit for Software Update
  • [0022]
    Due to the above limitations of conventional Flash memory operation, some methods of utilizing instead the Flash bank as the unit to update embedded software have been developed by those in the art. They use the Flash bank as the basic unit, because it is possible to read data from a Flash bank and simultaneously write data into another Flash bank. They use an entire Flash bank as a “buffer” to temporarily store the updated software during software updating process. During software updating, and the embedded software is updated in the unit of Flash bank.
  • [0023]
    However, using a Flash bank as a “buffer” is not an efficient way for utilizing Flash memory, because a Flash bank can have several mega bits, which is quite a big area. In some digital devices, one entire Flash bank may not be available as a buffer just for software update purpose. Even if the bank may be available, updating an entire bank has proved to be an extremely wasteful and inefficient way of updating what may be a minor code revision.
  • [0024]
    As will be described, the present invention is directed to the use of a Flash block, which is much smaller than a Flash bank, as the “buffer” for software update, and the embedded software is updated in the unit of a Flash block, instead of the unit of a Flash bank. With this methodology, only one Flash block will be enough as the buffer for the purpose of software update programming, which is much smaller than one Flash bank. Another advantage of this methodology is that, because it becomes possible to make software update in the unit of a Flash block, software updating can be performed in a more precise and efficient way than the conventional method based on the unit of a Flash bank. Thus, the software update programming can be completed in a shorter period of time.
  • [0025]
    3.3 Updating Software Directly in Original Flash Area
  • [0026]
    When the original embedded software is located in a first Flash bank, the aforementioned Beasley's U.S. Pat. No. 5,699,275 disclosed a method of writing new program into a second Flash bank and using the second Flash bank for execution after a system reset. However, as discussed before, it is not an efficient way of using Flash memory by allocating a big blank Flash bank for containing the entire new version of the embedded software while the original is running in another Flash bank. And this problem, as well as its limitation, will be more exacerbated when the embedded software becomes big, occupying multiple Flash banks.
  • [0027]
    In order to efficiently use Flash memory, this invention is directed to a methodology to make software update directly at the original Flash area, without the need of preparing a big blank Flash bank for containing the entire new version of the embedded software. In accordance with this method, the embedded software is updated in the unit of Flash block, and the updated program code is still allocated at the original Flash blocks. Therefore, a software update system in accordance with the present invention will greatly save the Flash memory usage for software update.
  • [0028]
    The details of performing software update in the unit of Flash block are disclosed in the following sections.
  • [0029]
    3.4 Putting Flash Programming Functions Into RAM Memory
  • [0030]
    Flash programming functions, such as data writing function and flash erasing function are stored in Flash memory, for example, in a Flash bank, Bank-K. Here more specifically, the Flash programming functions refer to a “Flash-Writing-Function” and a “Flash-Erasing-Function”. The Flash-Writing-Function is a function to write or program data into Flash memory. The Flash-Erasing-Function is a function to erase a block of Flash memory.
  • [0031]
    Let us look at an example that during software update, it is necessary to update some program code in the flash Bank-K. If the Flash programming functions stored in the Bank-K are also running on the Bank-K, the CPU/DSP needs to read program instructions of the Flash programming functions from Bank-K for execution, while performing Flash programming of software-update actions, such as data writing or flash erasing, on the same Bank-K for updating some program code in the Bank-K. However, as previously discussed, it is not possible to perform reading and writing operation simultaneously on the same Flash bank. In accordance with the present invention, Flash programming functions, i.e. the Flash-Writing-Function and the Flash-Erasing-Function, are copied into RAM memory, and then run in the RAM memory. When the Flash programming functions are running in RAM memory, and it becomes possible to perform Flash data writing and Flash block erasing operations on Bank-K, for updating the embedded software located in the Bank-K, thus avoiding the otherwise prohibited simultaneous data reading and writing operations on the Bank-K during Flash programming.
  • [0032]
    Some existing program compilers can also support putting software functions into RAM memory and running those functions in RAM memory, by setting some configuration parameters for software compilation (including module linking). In this case, copying the Flash programming functions into RAM memory can be done by the compilers. If a software compiler does not support this function, some software functions can be created for achieving the similar actions, and added into the embedded software.
  • [0033]
    Note that if a digital device has enough Flash memory space, but very limited RAM memory space, the Flash programming functions can be put into a Flash bank separated from the Flash banks containing the embedded software that may need to be updated, instead of being put into RAM memory. This Flash bank is thus used for the purpose of Flash programming for the other Flash banks. This method can be used as a replacement of the above method of using RAM memory.
  • [0034]
    3.5 Using a Buffer in RAM Memory
  • [0035]
    During software update, sometimes it may be desirable to copy some program code from one block, Block-A, of a Flash bank to another block, Block-B, in the same Flash bank. However, as previously discussed, it is not possible to perform reading and writing operation simultaneously on the same Flash bank. To overcome this problem, a memory area located in RAM memory is utilized for buffering data during Flash programming. The buffer in RAM memory can be named as “RAM-Update-Buffer”. The size of RAM-Update-Buffer can be decided based on how large the space in RAM memory in the digital device can be used for software updating.
  • [0036]
    As shown in FIG. 5, when performing Flash programming with the RAM-Update-Buffer, for example, in the same Flash bank, copying some program code from Block-A to Block-B, the program code will be first copied into the RAM-Update-Buffer from Block-A, and then be programmed into Block-B by reading the data from the RAM-Update-Buffer. In this way, the otherwise prohibited simultaneous reading and writing operations on the same Flash bank can be avoided. If the RAM-Update-Buffer is no big enough to contain the whole program code that need to be copied, the program code that needs to be copied can be separated into multiple parts to ensure each part can fit into the RAM-Update-Buffer. In this case, Flash programming is performed for each part of the program code, by first copying the code into the RAM-Update-Buffer from Block-A, and then writing the code into Block-B by reading the code from the RAM-Update-Buffer.
  • [0037]
    As a summary, copying data from a Flash block, Block-A, into another Flash block, Block-B, can be performed in the following steps.
  • [0038]
    Copying Data From Block-A to Block-B:
  • [0039]
    Step1: Check the length of the data to be copied from the Block-A with the size of the RAM-Update-Buffer, and copy the amount of the data in the Block-A that can fit into the RAM-Update-Buffer into the RAM-Update-Buffer.
  • [0040]
    Step2: Run the flash programming functions in the RAM memory to read the data from the RAM-Update-Buffer and write the data into the Block-B.
  • [0041]
    Step3: If there is still data left in the Block-A that need to be copied into the Block-B, go back to Step1 for further copying, until all the data is copied into the Block-B.
  • [0042]
    3.6 Updating a Flash Block
  • [0043]
    When some part of the embedded software in a digital device needs to be updated, a corresponding software patch can be generated to contain the information of update code for updating the part of the embedded software. The software patch can be sent to the digital device via a communication link, either a wired link or a wireless link.
  • [0044]
    After correctly receiving the software patch by the patch receiving module 300 in FIG. 3, the digital device passes the patch data to the patch programming module 310. The patch programming module 310 is for writing patch data into the patch database 320 and/or the program code area of the part that needs to be updated.
  • [0045]
    As discussed on the above Section 3.1 to Section 3.5, this invention uses a Flash block as a “buffer” for software update, and performs software update in the unit of Flash block. In order to support the software update, the following preparation should preferably be performed.
  • [0046]
    Pre-Process Preparation:
  • [0047]
    (1) Reserve one Flash block as a buffer for update-programming purpose, as discussed in Section 3.2. This block can be named as “Update-Buffer-Block”. If the sizes of Flash blocks are not identical, one or multiple Flash blocks shall be reserved to ensure having enough buffer space for buffering the data of the biggest Flash block. Here for convenience, the term of “Update-Buffer-Block” is still used for the cases that multiple Flash blocks are used for data buffering, because they can be treated as a single buffer. The buffer erasing operation should be performed for each block when necessary.
  • [0048]
    (2) Reserve a RAM-Update-Buffer in RAM memory, as discussed in Section 3.5. The size of the RAM-Update-Buffer is assumed to be T bytes.
  • [0049]
    (3) Placing the Flash programming functions, i.e., the Flash-Writing-Function and the Flash-Erasing-Function, into RAM memory for running, as discussed in Section 3.4.
  • [0050]
    If the program code of in a Flash bank, more specifically in a Flash block of the bank, needs to be updated, here the Flash block is named as “Block-A”, the update programming can be performed with the following steps. Note that these steps are only for exemplary purpose to show the inventions details, implementation details may vary based on the situation of the embedded software and the digital device. FIG. 6 also shows the exemplary programming steps for illustration purposes.
  • [0051]
    Flash Block Updating Process for Updating Flash Block-A:
  • [0052]
    Step 1:
  • [0053]
    Erase the Update-Buffer-Block by running the Flash-Erasing-Function in the RAM memory, so that all the data bits in the Update-Buffer-Block are in state “1”.
  • [0054]
    Step 2:
  • [0055]
    Copy the program code of the Block-A into the Update-Buffer-Block, except the part of the program code to be updated. That means, the corresponding code area in the Update-Buffer-Block for the part of the program code to be updated, which can be named as “Update-Area”, should not be written with the original program code of Block-A. The process of copying data from the Block-A into the Update-Buffer-Block is previously described by the process of “copying data from Block-A to Block-B” in Section 3.5. If necessary, other methods of copying data from one FLASH block to another FLASH block can be used.
  • [0056]
    Step 3:
  • [0057]
    Copy the updated program code into the Update-Area of the Update-Buffer-Block. If the updated program code is stored in an area of Flash memory beforehand, the process of copying the updated program code into the Update-Area of the Update-Buffer-Block may follow the process of “copying data from Block-A to Block-B” previously described in Section 3.5, if necessary, other methods of copying data from one FLASH block to another FLASH block.
  • [0058]
    Step 4:
  • [0059]
    Erase Block-A by running the Flash-Erasing-Function in RAM memory.
  • [0060]
    Step 5:
  • [0061]
    Copy the content in the Update-Buffer-Block into Block-A. The process of copying data from the Update-Buffer-Block into the Block-A may follow the process of “copying data from Block-A to Block-B” previously described in Section 3.5, if necessary, other methods of copying data from one FLASH block to another FLASH block can be used.
  • [0062]
    With the above exemplary steps, the program code in Block-A that needs to be updated can be replaced with the new program code, while the other code in the Block-A remains unchanged and also the program code in other Flash blocks remain unchanged. Note that the above Step 3 can be skipped if a step of copying the updated program code directly into the corresponding Update-Area of the Block-A is added after the above Step 5. In this case, the Update-Area of the Update-Buffer-Block in the above Step 5 is “empty,” i.e. filled with hexadecimal “0×FF”, when the entire block is copied back to the Block-A. The program update code then overwrites the now-empty Update-Area in the Block-A, thus effecting a Block update.
  • [0063]
    If there are multiple Flash blocks in the digital device that need to be updated, the above Update-Programming steps can be carried out for each of the blocks.
  • [0064]
    In order to ensure that the Update-Programming can be performed successfully, it may be necessary to ensure that there will be no task switching happening during the process of the Update-Programming in the Real Time Operation System of the digital device. This can preferably be achieved by setting the task or thread for the Update-Programming in the Real Time Operation System to the highest priority, and disabling the interrupt functions of CPU/DSP during the Update-Programming.
  • [0065]
    As can be appreciated, the Flash Block Updating methodology described above can be done without having to pre-process or prepare any insertion or jump checkpoints into the code during initial programming. Also, the existing code in the digital device does not need to be altered to accommodate the Updating methodology, thus making it quite compatible with the goal of providing software updates to any electronic or digital devices already out in the field.
  • [0066]
    3.7 Software Update Methodology
  • [0067]
    Several software update methods are disclosed in this section, in accordance with the previously described “Method of updating Flash block” in section 3.6.
  • [0068]
    One embodiment of the software update is now described with reference to FIG. 7. Here, after a software patch or program code of update has been received, it can be programmed into an update code area or patch area in Flash memory. When CPU/DSP execution is running to the part of program that needs to be updated, the CPU/DSP execution can be directed to the place of the updated program code in the update code area, or patch area, and uses the updated program code for execution, instead of using the original part of program for execution. To redirect the CPU/DSP execution, at the beginning of the program part to be updated, a jumping instruction can be allocated for jumping to the patch area. The software modification on the original code area, such as allocating a jumping instruction over the original code, can be performed with the update method described in Section 3.6, based on the Flash block update on the corresponding Flash blocks. As such, by allocating a jumping instruction at the beginning of the program to be updated using the aforementioned Flash block update methodology, the CPU/DSP execution can be redirected to the update code area, where the software patch or program code of update has been received and programmed.
  • [0069]
    FIG. 8 shows another embodiment of the software update methodology, where some updated program code (Update Program Code Part 1) can be directly put into the program code area of the part that needs to be updated, while other updated program code (Update Program Code Part 2) can be put into the Update Code Area. When the size of the updated program code is bigger than the size of the part of the original program code that needs to be updated, Update Code Area can be used to contain the program code portion that cannot fit into the original location in the program code area. The patch programming on the original code area can be performed with the method described in Section 3.6, based on the Flash block update.
  • [0070]
    FIG. 9 shows yet another embodiment of the update methodology, where the updated program code can be directly put into the program code area of the part that needs to be updated. This can be used in the case when the size of the updated program code is not bigger than the size of the part of the original program code that needs to be updated. At the end of such update program, a jump or skip instruction is added so that CPU execution can jump over or skip the portion of the original code that is now obsolete. The patch programming on the original code area can be performed with the method described in Section 3.6, based on the Flash block update.
  • [0071]
    4. Methods of Error Recovery During Software Update
  • [0072]
    During the process of updating software, errors or interrupts, such as electricity power loss, could happen. For example, when a cellular phone, or a digital device, is performing software update using the method introduced in Section 3, and during the Step 5 of Section 3.6, there is a power loss, e.g. exhausted battery. As a result of the power loss, the program code in the Update-Buffer-Block cannot be correctly copied into Block-A. When the cell phone is turned back on, after re-charging or replacing the battery, a CPU/DSP execution error will happen at Block-A, because there is no correct program code there. In accordance with another aspect of the invention, a methodology of error recovery for patch programming is introduced, which is shown in FIG. 10.
  • [0073]
    As shown in FIG. 10, for achieving error recovery from power loss, a software routine, named “Update-Programming-Checking-Routine”, can be put at or close to the bootstrap code (program execution start point), so that when the embedded software starts to run from power-on or system reset, it will execute the Update-Programming-Checking-Routine. Though this routine is always executed from power-on or system reset, it only becomes effective after the cell phone or digital device is powered back on, after certain interruption. The Update-Programming-Checking-Routine checks whether there are any patch programming tasks that have not been completed for software update. If there are such incomplete tasks, patch programming for software update will be executed to complete the tasks. Then, the execution is back to the original program for system power-on.
  • [0074]
    In order to prevent data loss, after correctly receiving a software patch or a piece of new program code for software update, the digital device can write the new program code into Flash memory for buffering, so that even if there is a power loss during software update process, the received program code will not be lost. This area can be named as “Patch-Data-Buffer”. Some flag parameters can be used as the status indication of update-programming, which can be named as “Patch-Programming-Flag”. The Patch-Programming-Flags can be saved in an area of Flash memory. For example, a Patch-Programming-Flag composed by 5 bits, or n bits, can be reserved in an area of Flash memory to indicate the status of the 5 steps, or n steps, of the patch programming discussed in the above Section 3.6. All the bits of the flag are all in state “1” at first. When one step of the 5 steps is completed, one corresponding bit of the flag will be changed from “1” to “0”. After returning from a power loss occurring at one of the 5 steps, patch programming can be restarted by the Update-Programming-Checking-Routine. For example, if the power loss happened before Step 4, patch programming can be re-started from Step 1. And if the power loss happened after Step 4, patch programming can be re-started from Step 4 of Section 3.6.
  • [0075]
    After the update programming for a patch has been completed, the Flash area for the Patch-Data-Buffer and the Flash area for the Patch-Programming-Flags can be erased so that the next patch can reuse the same areas. In order to erase these areas, that is to set all the bits in the areas back to the state of ‘1’, the method of Section 3.6 for updating a Flash block can be used to update every bit in these areas to “1”. As discussed in Section 3.6, the update can be carried out in the unit of Flash block, and the bit values of the areas in the corresponding Flash blocks can be changed back to state of“1”.
  • [0076]
    5. Methods of Patch Code Generation
  • [0077]
    As is well understood by those skilled in the art, a software patch is the replacement of a piece of the original program code. When a programmer finishes the changes on the program source code, the program source code can be compiled into an object file. The object file includes the information of an executable command code, though some parameters, such as the offsets of function calls, need to be updated by the linker of the compiler. After linking stage of the software compilation, a “map” file of the executable embedded software can be generated by the linker software. The map file may include information of variables and function addresses.
  • [0078]
    In accordance with yet another aspect of the invention, a methodology of patch generation is introduced. A software patch can be composed by new program code and its corresponding location or memory address information in the embedded software of the digital device. The information in the object files of the new program code and the map files of both the original executable embedded software and the updated executable embedded software can be used for generating a software patch. For example, for updating an original software function with a new version of the function, the information of the corresponding executable CPU instruction code from the new object file generated based on the new version of the function, can be extracted and used as the updated program code in a patch for updating the function. Furthermore, in the map file of the original executable embedded software, the information of the function addresses can be used in the patch as the address information related to place that the patch code need to be written on.
  • [0079]
    Some software tools can also be developed for the automatic patch generation based on the information from the object file and the map file.
  • [0080]
    6. Patch Transmission and Patch Receiving
  • [0081]
    6.1 Patch Data Transmission.
  • [0082]
    First, we describe how the software patch may be transmitted from a patch server (to be described below) to digital devices. By “patch server,” it should be appreciated by those skilled in the art that it may be a system that can dispatch or transmit a software patch to one or more digital devices in the field, preferably through existing communication infrastructure or channels, such as a wireless link, or a wired connection. The patch server may have any level of automation for its operation. Upon transmission, a digital device receives patch data with its Patch Receiving Module 300 shown in FIG. 3. During or after the patch data transmission, the digital device may send signals (or messages) to the patch server for acknowledgment.
  • [0083]
    For transmitting patch data to digital cellular phones, SMS (Short Message Service) messages can be used for this purpose. SMS messages can be sent to cellular phones based on GSM, GPRS, WCDMA, CDMA or other wireless and wired technologies. Both point-to-point SMS messages and broadcast SMS messages can be used for patch transmission. Sometimes, broadcast SMS messages are also called with some other names, such as cell broadcast SMS messages. When broadcast SMS messages are used for patch transmission, some fields of the SMS messages can be set to some values, for example, some “reserved values”, so that the digital devices that have not installed the patch system can simply discard the SMS messages, and only the digital devices that have the patch system installed will process the SMS messages for software update. For example, in the SMS message defined in the GSM standard, there is a field named “Coding Group” that may have some “reserved” values not being used. In the SMS messages used for carrying patch data, the “Coding Group” can be set to one of the reserved values, so that the digital device without having patch system will simple discard the SMS messages without displaying the SMS message content to users because the digital devices cannot process the reserved “Coding Group”. But for those digital devices that have the patch system installed can process the SMS messages for software update based on a predetermined protocol.
  • [0084]
    Sometimes, the digital device needs to send a message to patch server to inquire available patches or reporting patching status of the digital device. The identification number of patch server, such as a phone number or platform number can be pre-installed into the digital device, so that the digital device can use the server number to send the necessary messages to the patch server.
  • [0085]
    Sometimes, the patch server needs to use the identification number of the digital device, such as a phone number to send update notice to the digital device. The identification number and other related information of the digital device can be registered on the patch server for this purpose. Many methods of the registration can be considered. For example the digital device information can be registered by the digital device user on a web site by entering the information of the digital device and the corresponding identification number; or the digital device user can send a message to the patch server including the product information and the product identification number.
  • [0086]
    For error detection, before patch transmission, patch data can be processed with information of CRC (Cyclic Redundancy Codes), checksum or other schemes as can readily be implemented by those skilled in the art. After the digital device receives a patch, the patch data is checked with CRC process to detect transmission errors.
  • [0087]
    In the event that a digital device cannot correctly receive patch data, the patch server shall re-send the patch data to the digital device. For example, patch retransmission can be based on a timer-based mechanism: The patch server has a timer for patch retransmission. After the patch server sends out a patch to a digital device, it will start the timer. If the patch server does not receive any corresponding reply message (e.g., patching status report) from the digital device when the timer times out, the patch server will re-send the patch data packets to the digital device. In some special cases where a patch server does not receive any reply messages from the digital device after the patch server has performed patch re-transmission for a predetermined number of times, the patch server may stop the retransmission for a while. It should be appreciated by those skilled in the art that other ways of timing the transmission and re-transmission of patches can readily be implemented in connection with the teaching of the present invention.
  • [0088]
    In the previous example of using SMS messages, there is one patch signaling message named Patch Status Report, which is sent from a digital device to a patch server and contains the current patch status information of the digital device. If the digital device receives a patch without error, it will send Patch Status Report via a reverse SMS message to the patch server at the time:
      • (a) when the digital device finds out that the received patch had been already programmed successfully, or
      • (b) when the digital device successfully finishes the patch programming.
  • [0091]
    6.2 Patch Data Encryption.
  • [0092]
    Before patch data is transmitted to a digital device, it can be encrypted for security protection. And after receiving the encrypted patch data, the digital device decrypts the patch data before using it. This is important to the cases such as using SMS message for patch data transmission, because SMS messages may be sent from any people to any cellular phones. This invention discloses some methods for patch encryption.
  • [0093]
    6.2.1 Dynamically Generating Encryption Keys With a Predetermined Algorithm
  • [0094]
    Before patch data is transmitted to a digital device, the patch data can be encrypt with one or multiple encryption algorithms, such as Triple-DES etc. These encryption algorithms normally need encryption keys for encryption calculation. For security protection, the encryption keys can be generated based on a highly complicated and secured software function, and can be named as “Encryption-Key-Generation-Function”. Only the patch generator, such as in a patch server, and the digital device have the Encryption-Key-Generation-Function. When this function is put into the digital device, it can be put into a safe place in the digital device, such as SIM card of cellular phones for further protection. Without understanding the Encryption-Key-Generation-Function, it is not possible to correctly generate encryption keys, and patch data cannot be encrypted correctly. With this method, encryption becomes more secure, because encryption keys are not unchangeable and saved in a digital device, instead, the encryption keys can be dynamically generated by an algorithm and can be changeable.
  • [0095]
    6.2.2 Secret-Data for Encryption
  • [0096]
    As shown in FIG. 11, the Encryption-Key-Generation-Function can have multiple input parameters, which can be named as “Secret-Data”. The Secret-Data can be some predetermined parameters. The Secret-Data can also be some dynamically generated parameters. For example, the Secret-Data can be generated based on patch identifier information of a specific patch. Because the patch identifier is different from one patch to another patch, the Secret-Data of patch identifier is also different, and thus the generated encryption keys from Encryption-Key-Generation-Function are different from one patch to another patch. And in this case, the patch identifier information can be acknowledged between patch generator and the digital device for patch encryption and patch decryption. Some other information such as date and time information can also be used as an element for dynamically generating the Secret-Data, so that the encryption keys generated by the Encryption-Key-Generation-Function becomes time-sensitive.
  • [0097]
    6.2.3 Secret-Data for Encryption Transmitted From Digital Device
  • [0098]
    As shown in FIG. 12, some Secret-Data can also be generated dynamically by digital device and sent to the patch generator for patch encryption. For example, a big random number can be generated in a digital device and sent to patch generator when the digital device inquires whether there are patches available for software update, and the patch generator can use this number for encrypting patch for this digital device. The encryption process may have the following steps.
  • [0099]
    Step 1: A digital device generates a Secret-Data.
  • [0100]
    Step 2: The generated Secret-Data is sent from the digital device to a patch generator.
  • [0101]
    Step 3: The Secret-Data is used for encrypting a patch in the patch generator.
  • [0102]
    Step 4: The encrypted patch from Step 3 is sent to the digital device.
  • [0103]
    Step 5: The digital device uses the Secret-Data generated in Step 1 to decrypt the received patch.
  • [0104]
    6.3 Patch Data Composition.
  • [0105]
    With reference to FIG. 13, the composition of patch data is now further described. Patch data is preferably separated into several patch data packets, and one patch data packet can be carried by one message.
  • [0106]
    In the exemplary use of SMS messages, one patch data packet may be carried by one SMS message. In order to identify a patch SMS message from other regular SMS messages, some characters in a patch SMS message can be set to some predefined special characters or numbers by the patch server before patch delivery.
  • [0107]
    The relation between patch data and patch data packets is shown in FIG. 13. A patch data packet can be separated into packet overhead field and payload data field. It should be appreciated by those skilled in the art that other ways of design packet overhead for transmitting patch data packets can readily be implemented in connection with the teaching of the present invention.
  • [0108]
    The payload data in the patch data packet may contain the whole or one part of patch data.
  • [0109]
    If some part in the new program code used for updating is similar or identical to some part in the original program code, some instruction of using the original code can be put into the patch, instead of the new code itself. In general, when a piece of program needs to be updated, only the information of the difference between the new code and the original code should be put into patch. In this way, the duplicated information of program code can be removed from a patch, in order to reduce the patch size. After receiving such a patch, the digital device can restore the new program code by using the information of the original program code and the difference information between the new code and the original code.
  • [0110]
    7. Collecting and Reporting Software Error Information in Digital Devices
  • [0111]
    It is preferable to collect information about the software errors existing in the embedded software of a digital device and report the information to software developer, so that the software developer can create the corresponding software patches to fix the errors in the digital device, or modify the corresponding software program to remove the errors from future digital devices. Here some methods are disclosed for collecting and reporting the information about the software errors. FIG. 14 describes a system for collecting and reporting information about software errors.
  • [0112]
    Collecting Information About Software Errors in a Digital Device
  • [0113]
    Useful information related to software errors can be collected and recorded into the error database 1430. Here two types of information—software error traces and system reset information are used 1410 to show how to collect and record the information.
  • [0114]
    When a software developer creates a software program, some software traces can be inserted into the program so that the software developer can detect how the software is running by looking at the trace output. Especially, some traces can be inserted for software error cases, so that when software problems happen, the corresponding traces can be output for software debugging purposes. The information about those errors traces can be sent to the error database 1430 for further processing.
  • [0115]
    When some fatal software errors happen and cannot be recovered, the CPU/DSP in the digital device may reset. For example, when CPU/DSP is instructed to read data from a memory address where actually there is no memory there, an internal error will happen to cause CPU reset. Any useful information related to a reset can be retrieved and recorded. For example,
      • Call stack information: information of procedures, programs, and methods that are executing right before reset.
      • Reset type: the information about why reset is performed.
      • Time stamp: time information when error or reset occurs
  • [0119]
    Saving Error Information
  • [0120]
    The information of software errors, such as error traces and reset information can be saved in the error database 1430, which is an area of Non-Volatile memory. The information of error traces can be saved into error database when error traces is produced. The information of system reset can be saved into error database right before the system reset, or for some cases after the system reset.
  • [0121]
    Error Information Processing
  • [0122]
    When it is necessary to analyze the error information, the data saved in the error database can be retrieved for further processing 1440. For example, the data can be analyzed and summarized, so that it becomes easier for the software developer to understand. The data can be compressed to remove redundancy and un-important part before being transferred to an outside server or database.
  • [0123]
    Error Information Transmission
  • [0124]
    After the above processing step, the compressed data can be transferred 1450 to an outside server or a database, and later on, the software developer can use the data to find the software errors and make the corresponding corrections. For example, for a typical digital cellular phone, the compressed data can be put into SMS messages for transmission. To enhance security, the data can be further encrypted before transmission; and at receiver side, the received data will be decrypted.
  • [0125]
    Although the invention is described herein with reference to the preferred embodiment, one skilled in the art will readily appreciate that other applications may be substituted for those set forth herein without departing from the scope of the present invention. Accordingly, the invention should only be limited by the claims included below.
  • [0126]
    Glossary of Abbreviations
  • [0127]
    ASCII. American Standards Committee for Information Interchange
  • [0128]
    CPU. Central Processing Unit.
  • [0129]
    DSP. Digital Signal Processor
  • [0130]
    Flash. A type of constantly-powered nonvolatile memory that can be erased and reprogrammed in units of memory called blocks.
  • [0131]
    MCU. Micro Processor Unit.
  • [0132]
    PDA. Personal Digital Assistant
  • [0133]
    RAM. Random Access Memory.
  • [0134]
    ROM. Read-Only Memory.
  • [0135]
    SMS. Short Message Service.

Claims (35)

  1. 1. A method of updating an embedded software operative in a digital device by a software patch, comprising:
    preparing said embedded software comprising:
    designating at least one Flash block of a Flash memory in said digital device as Flash update block for software update programming;
    designating at least one area in RAM memory in said digital device as RAM update buffer for Flash programming;
    preparing Flash erasing function and Flash writing function;
    designating a memory area in said digital device as patch area;
    loading said embedded software into said digital device;
    generating a software patch, adapted to provide a predetermined function;
    transmitting said software patch to said digital device through a communications link;
    receiving said software patch by said digital device;
    updating at least one Flash block of said embedded software in the unit of Flash block with said software patch.
  2. 2. The method of claim 1, wherein said updating at least one Flash block comprises at least one of the following:
    allocating a jump instruction at the beginning of the program part of the embedded software to be updated, for jumping to said patch area when running a new update code in said patch area;
    overwriting some part of the program part of the embedded software to be updated with a new update code, and allocating, at the end of the part, a jumping instruction for jumping to said patch area when running the new update code in said patch area;
    overwriting the program part of the embedded software to be updated with the new update code.
  3. 3. The method of claim 1, wherein said step of preparing Flash erasing function and Flash writing function further comprises:
    putting at least one function of said Flash erasing function and said Flash writing function into RAM memory.
  4. 4. The method of claim 3, wherein said step of putting Flash programming functions into RAM memory comprises at least one of the following:
    using a software function for copying said Flash programming functions into RAM memory, and
    using a software compiler for allocating said Flash programming functions into RAM memory
  5. 5. The method of claim 3, wherein said Flash function is run in one of the following ways:
    a) in said RAM memory;
    b) in at least one software interrupt handler routine;
    c) in highest priority task of software operation system of said embedded software.
  6. 6. The method of claim 1, wherein said updating further comprises:
    erasing said Flash update block;
    copying data from said Flash block into said Flash update block, except the part to be updated;
    writing update data into the part to be updated in said Flash update block;
    erasing said Flash block;
    copying data from said Flash update block into said Flash block;
  7. 7. The method of claim 1, wherein said updating at least one Flash block further comprises:
    erasing said Flash update block;
    copying data in from Flash block into said Flash update block, except the part to be updated;
    erasing said Flash block;
    copying data from said Flash update block into said Flash block;
    writing update data into the part to be updated in said Flash block;
  8. 8. The method of claim 6, wherein said copying data from a first Flash block to a second Flash block comprises:
    checking whether said data can fit into said RAM update buffer, and if not, separating said data into multiple parts to ensure each part of said data can fit into said RAM update buffer;
    for each part, performing the steps of:
    reading said data from said first Flash block and writing said data into said RAM update buffer;
    reading said data from said RAM update buffer and writing said data into said second Flash block.
  9. 9. The method of claim 7, wherein said copying data from a first Flash block to a second Flash block comprises:
    checking whether said data can fit into said RAM update buffer, and if not, separating said data into multiple parts to ensure each part of said data can fit into said RAM update buffer;
    for each part, performing the steps of:
    reading said data from said first Flash block and writing said data into said RAM update buffer;
    reading said data from said RAM update buffer and writing said data into said second Flash block.
  10. 10. The method of claim 1, wherein said preparing said embedded software further comprises:
    allocating at least one update programming checking routine at or close to the bootstrap code (program execution start point), to check whether there are any patch programming tasks that have not been completed for software update, and
    if yes, executing patch programming for software update to complete the tasks;
    returning execution to the original program for system power-on.
  11. 11. The method of claim 10, further comprising:
    using at least one bit of Flash memory as patch programming flag to indicate patch programming status.
  12. 12. The method of claim 1, wherein said step of generating a software patch further comprises:
    using at least one of the following information to generate said software patch:
    Object file of the new program code;
    Software function and variable map file generated by software compiler.
  13. 13. The method of claim 1, wherein said step of transmitting said software patch further comprises:
    using at least one SMS message to carry data of said software patch.
  14. 14. The method of claim 1, wherein said step of preparing said embedded software further comprises:
    pre-installing identification information of patch server into said digital device.
  15. 15. The method of claim 1, further comprising:
    registering an identification number and other related information of the digital device on the patch server, using at least one of the following methods:
    registering the digital device information by the digital device user on a web site by entering the information of the digital device and the corresponding identification number;
    sending by the digital device user of a message to the patch server including the product information and the product identification number.
  16. 16. The method of claim 1, further comprising:
    said digital device sending at least one message to the patch server for at least one of the following:
    for reporting patching status;
    for inquiring available patch information.
  17. 17. The method of claim 1, wherein said step of generating a software patch further comprises:
    adding at lest one of the following data to said software patch for data error detection:
    CRC (“Cyclic Redundancy Codes”) data;
    Checksum data.
  18. 18. The method of claim 1, wherein said step of generating a software patch further comprises: encrypting said software patch before patch transmission.
  19. 19. The method of claim 18, further comprising:
    encrypting said software patch using at least one of the following information:
    identification information of said software patch;
    identification information of said digital device;
    time information;
    dynamically generated secret data.
  20. 20. The method of claim 18, further comprising the following steps:
    said digital device generating secret-data and sending said secret-data to a patch generator;
    said patch generator receiving said secret-data to encrypt said software patch using said secret-data;
    said patch generator sending encrypted software patch generated to said digital device;
    said digital device receiving said encrypted software patch and uses said secret-data generated to decrypt said received encrypted software patch.
  21. 21. The method of claim 1, wherein said step of generating a software patch further comprises:
    putting the information of the difference between the new code and the original code into said software patch to reduce transmission amount.
  22. 22. A method of updating an embedded software operative in a digital device by using a software patch, comprising:
    designating at least one Flash block of a FLASH memory in said digital device as Flash update block for software update programming;
    designating at least one area in a RAM memory in said digital device as RAM update buffer for Flash programming;
    designating a patch area in said digital device;
    preparing said embedded software;
    preparing said software patch;
    loading said embedded software into said digital device;
    preparing said software patch for transmission to said digital device through a communication link.
  23. 23. The method of claim 22, further comprising:
    encrypting said software patch prior to transmission, with an encryption key generation function.
  24. 24. A method of updating an embedded software operative in a digital device, comprising:
    receiving a software patch by said digital device through a communications link;
    updating at least one predetermined Flash block of a FLASH memory of said digital device containing said embedded software, in the unit of Flash block with said software patch, by at least one of the following:
    a) allocating, at the beginning of the program part to be updated, a jumping instruction for jumping to said patch area for running the new code in said patch area;
    b) overwriting some part of the program part to be updated with the new update code, and at the end of the part, allocating a jumping instruction for jumping to said patch area for running the new code in said patch area;
    c) overwriting the program part to be updated with the new update code.
  25. 25. The method of claim 24, wherein said software patch is encrypted and has an encryption key generation function, which is placed in a predetermined safe place for safekeeping.
  26. 26. A method of updating an embedded software operative in a digital device, comprising:
    receiving a software patch by said digital device through a communication link;
    designating a first Flash block in said Flash memory;
    designating a second Flash block (“Update Buffer Block”) in a Flash memory of said digital device;
    copying good code that does not need to be updated from said first Flash block to a first predetermined location of said Update Buffer Block;
    writing said software patch (“Program Update Code”) to a second predetermined location of said Update Buffer Block;
    erasing said first Flash block;
    copying said entire Update Buffer Block to said first Flash block, wherein said first Flash block is now updated.
  27. 27. A method of updating an embedded software operative in a digital device, comprising:
    receiving a software patch by said digital device through a communication link;
    designating a first Flash block in said Flash memory;
    designating a second Flash block (“Update Buffer Block”) in said Flash memory of said digital device;
    copying good code from a first Flash block to a first predetermined location of said Update Buffer Block;
    erasing said first Flash block;
    copying said entire Update Buffer Block to said first Flash block;
    writing said software patch (“Program Update Code”) to a predetermined location of said first Flash block, wherein said first Flash block is now updated with the Program Update Code.
  28. 28. A method of updating an embedded software operative in a digital device, said method comprising:
    providing a Flash memory in said digital device;
    storing said embedded software as program code in said Flash memory (“Program Code Area”);
    designating a patch area within said Flash memory;
    receiving a software patch by said digital device through a communication link;
    programming said software patch into said patch area as update program code;
    inserting a jump instruction to a location in said Program Code Area, which is the beginning of a portion of said program code to be updated, said jump instruction causing execution of said program code to be jumped to said update program code.
  29. 29. A method of updating an embedded software operative in a digital device, said method comprising:
    providing a Flash memory in said digital device;
    storing said embedded software in said Flash memory (“Program Code Area”);
    designating a patch area within said Flash memory;
    receiving a software patch by said digital device through a communication link;
    programming a first portion of said software patch as a first portion of updated program code into said Program Code Area;
    programming at least a second portion of said software patch into said patch area as a second portion of updated program code;
    inserting a jump instruction to a location in said Program Code Area, which is the end of said first portion of said updated program code, said jump instruction causing execution to jump to said second portion of said updated program code after execution of said first portion of said updated program code.
  30. 30. A method of updating an embedded software operative in a digital device, said method comprising:
    providing a Flash memory in said digital device;
    storing said embedded software in said Flash memory (“Program Code Area”);
    designating a patch area within said Flash memory;
    receiving a software patch by said digital device through a communication link;
    programming said software patch as updated program code into said Program Code Area;
    if said updated program code can be fully contained in said Program Code Area, inserting a jump instruction to the end of said updated program code, said jump instruction causing execution to jump to the remaining of said Program Code Area after execution of said updated program code.
  31. 31. A method of managing software error information in a software program operative in a digital device, said method comprising:
    allocating an area in non-volatile memory for use by an error database in said digital device;
    inserting a plurality of software traces into said software program, said traces monitoring operating condition of said software program and outputting error information when encountering software errors;
    transmitting said error information to said error database;
    processing said error information in said error database;
    retrieving said error information from said error database for analysis.
  32. 32. The method of claim 31, wherein said retrieving said error information comprises transmitting said error information via SMS messages from said digital device.
  33. 33. The method of claim 31, further comprising:
    collecting reset information for system resets in said digital device;
    transmitting said reset information to said error database;
    processing said reset information in said error database;
    retrieving said reset information from said error database for analysis.
  34. 34. The method of claim 33, wherein said retrieving said reset information comprises transmitting said reset information via SMS messages from said digital device.
  35. 35. The method of claim 33, wherein said reset information comprises at least one of the following:
    call stack information;
    reset type information;
    time stamp.
US10986258 2001-07-16 2004-11-09 Embedded software update methods and systems for digital devices Abandoned US20050063242A1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US30570401 true 2001-07-16 2001-07-16
US35491502 true 2002-02-08 2002-02-08
US10195199 US6760908B2 (en) 2001-07-16 2002-07-15 Embedded software update system
US10876503 US20040237068A1 (en) 2001-07-16 2004-06-24 Embedded software update system
US10986258 US20050063242A1 (en) 2001-07-16 2004-11-09 Embedded software update methods and systems for digital devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10986258 US20050063242A1 (en) 2001-07-16 2004-11-09 Embedded software update methods and systems for digital devices

Publications (1)

Publication Number Publication Date
US20050063242A1 true true US20050063242A1 (en) 2005-03-24

Family

ID=26974732

Family Applications (3)

Application Number Title Priority Date Filing Date
US10195199 Expired - Fee Related US6760908B2 (en) 2001-07-16 2002-07-15 Embedded software update system
US10876503 Abandoned US20040237068A1 (en) 2001-07-16 2004-06-24 Embedded software update system
US10986258 Abandoned US20050063242A1 (en) 2001-07-16 2004-11-09 Embedded software update methods and systems for digital devices

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US10195199 Expired - Fee Related US6760908B2 (en) 2001-07-16 2002-07-15 Embedded software update system
US10876503 Abandoned US20040237068A1 (en) 2001-07-16 2004-06-24 Embedded software update system

Country Status (6)

Country Link
US (3) US6760908B2 (en)
EP (1) EP1410181A1 (en)
JP (1) JP2004536405A (en)
KR (1) KR20040022451A (en)
CN (1) CN1529847A (en)
WO (1) WO2003009136A1 (en)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030142556A1 (en) * 2002-01-29 2003-07-31 Lohse Martin A. Differential flash memory programming technique
US20080196021A1 (en) * 2007-02-08 2008-08-14 Microsoft Corporation Accessible Limited Distribution Release Software Change Catalog
US20090019435A1 (en) * 2007-07-12 2009-01-15 Sauer-Danfoss Inc. System and method for over the air programming
WO2009051760A1 (en) * 2007-10-17 2009-04-23 Hewlett-Packard Development Company, L.P. Mobile handset employing efficient backup and recovery of blocks during update
US20090122906A1 (en) * 2007-11-12 2009-05-14 Motorola, Inc. Method and apparatus for encoding a modulated signal in a communication system
US20090305687A1 (en) * 2005-11-30 2009-12-10 Simone Baldan Method and System for Updating Applications in Mobile Communications Terminals
US7673297B1 (en) * 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
CN101930375A (en) * 2010-08-26 2010-12-29 深圳市共进电子有限公司 Self-adaptive program data updating method of memory space in single user optical network unit
US20110136427A1 (en) * 2009-07-13 2011-06-09 Al Qalqili Eyad Ali Mohammad Method and system for transmitting and/or receiving advertisment and data contents on a mobile communication device with a display mechanisem
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US8578361B2 (en) 2004-04-21 2013-11-05 Palm, Inc. Updating an electronic device with update agent code
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US9392017B2 (en) 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller

Families Citing this family (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321356B2 (en) * 2000-05-18 2012-11-27 United Parcel Service Of America, Inc. System and method for calculating real-time costing information
US8725656B1 (en) 2000-05-18 2014-05-13 United Parcel Service Of America, Inc. Freight rate manager
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US20030140126A1 (en) * 2001-03-30 2003-07-24 Vitria Technology, Inc. Method of deployment for concurrent execution of multiple versions of an integration model
US7613716B2 (en) * 2001-07-20 2009-11-03 The Mathworks, Inc. Partitioning for model-based design
US7069546B2 (en) * 2001-12-03 2006-06-27 Corrigent Systems Ltd. Generic framework for embedded software development
US20030191823A1 (en) * 2002-04-03 2003-10-09 Aplion Networks, Inc. System and method for providing customizable device capabilities to network equipment in a non-service affecting manner
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US20040015943A1 (en) * 2002-07-17 2004-01-22 Ying-Chou Chen Embedded computer system equipped with an upgradeable software library
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
DE10260103A1 (en) * 2002-12-19 2004-07-01 Robert Bosch Gmbh Method and apparatus for modifying software in a control unit as well as corresponding control unit
US9092286B2 (en) * 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
WO2004066091A3 (en) * 2003-01-21 2009-04-09 Bitfone Corp Update system capable of updating software across multiple flash chips
EP1597668A4 (en) * 2003-02-11 2009-12-23 Hewlett Packard Development Co Electronic device supporting multiple update agents
US6886472B2 (en) * 2003-02-20 2005-05-03 General Electric Company Method and system for autonomously resolving a failure
JP4523991B2 (en) * 2003-03-25 2010-08-11 株式会社リコー Terminal, method, system, and program
GB2403303B (en) * 2003-06-23 2005-08-17 Matsushita Electric Ind Co Ltd Embedded device with software registry
JP2005050073A (en) * 2003-07-28 2005-02-24 Matsushita Electric Ind Co Ltd Data restoration method, and data recorder
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
WO2005024628A3 (en) * 2003-09-03 2005-05-26 Bitfone Corp Tri-phase boot process in electronic devices
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7624393B2 (en) * 2003-09-18 2009-11-24 International Business Machines Corporation Computer application and methods for autonomic upgrade maintenance of computer hardware, operating systems and application software
CN101917242B (en) * 2003-11-04 2013-02-27 韩国电子通信研究院 Apparatus and method for receiving data broadcasting service to support connection with mobile networks
WO2005048604A1 (en) * 2003-11-17 2005-05-26 Samsung Electronics Co., Ltd. Method for updating software of a target device using an extended identifier in digital broadcasting
US7409538B2 (en) * 2003-12-18 2008-08-05 International Business Machines Corporation Update in-use flash memory without external interfaces
EP1569102B1 (en) * 2004-02-27 2010-04-28 Telefonaktiebolaget LM Ericsson (publ) Flash memory programming
KR100620729B1 (en) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 Method for building software image
US7600216B2 (en) * 2004-04-22 2009-10-06 Gteko, Ltd Method for executing software applications using a portable memory device
US20050251798A1 (en) * 2004-05-05 2005-11-10 News, Iq, Inc. System and method for inventory control and management
US7559058B2 (en) * 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching
US8539469B2 (en) 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7373492B2 (en) * 2004-08-30 2008-05-13 Lehman Brothers Inc. Boot disk management utility
FR2875921B1 (en) * 2004-09-27 2006-12-01 Gemplus Sa Download campaign data in portable communicating objects
US20060075401A1 (en) * 2004-10-05 2006-04-06 Microsoft Corporation Patch installation control
KR100784783B1 (en) * 2004-12-07 2007-12-14 한국전자통신연구원 System for support of embedded software development methodology with quantitative process management
US8019725B1 (en) 2004-12-15 2011-09-13 Apple Inc. Software update management
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
CN100435108C (en) 2004-12-22 2008-11-19 迅杰科技股份有限公司 Firmware repairing method for memory device
US7426571B2 (en) * 2005-01-06 2008-09-16 Dell Products L.P. Providing files to an information handling system using a remote access controller
US7734574B2 (en) * 2005-02-17 2010-06-08 International Business Machines Corporation Intelligent system health indicator
US20060200656A1 (en) * 2005-03-03 2006-09-07 Cardinell Charles S Apparatus and method to capture data from an embedded device
US7606370B2 (en) * 2005-04-05 2009-10-20 Mcafee, Inc. System, method and computer program product for updating security criteria in wireless networks
US7822972B2 (en) * 2005-04-05 2010-10-26 Mcafee, Inc. Remotely configurable bridge system and method for use in secure wireless networks
US7757274B2 (en) 2005-04-05 2010-07-13 Mcafee, Inc. Methods and systems for exchanging security information via peer-to-peer wireless networks
US7761710B2 (en) * 2005-04-05 2010-07-20 Mcafee, Inc. Captive portal system and method for use in peer-to-peer networks
US20060248107A1 (en) * 2005-04-11 2006-11-02 Coronado Juan A Apparatus system and method for updating software while preserving system state
CN100521676C (en) 2005-04-14 2009-07-29 华为技术有限公司 Method and apparatus for realizing independent staging business software in set-top box
US20060265692A1 (en) * 2005-05-20 2006-11-23 Mengjin Su Method, apparatus, and computer program product for code patching
US8399390B2 (en) 2005-06-29 2013-03-19 Exxonmobil Chemical Patents Inc. HVI-PAO in industrial lubricant and grease compositions
US7667874B2 (en) * 2005-07-06 2010-02-23 Xerox Corporation Method and system for improving print quality
WO2007011462A1 (en) 2005-07-19 2007-01-25 Exxonmobil Chemical Patents Inc. Lubricants from mixed alpha-olefin feeds
WO2007011459A1 (en) 2005-07-19 2007-01-25 Exxonmobil Chemical Patents Inc. Polyalpha-olefin compositions and processes to produce the same
EP1934727A1 (en) * 2005-08-23 2008-06-25 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US7577872B2 (en) * 2005-08-26 2009-08-18 Home Box Office Dynamic system diagnosis
US20070074187A1 (en) * 2005-09-29 2007-03-29 O'brien Thomas E Method and apparatus for inserting code fixes into applications at runtime
CN100416503C (en) 2005-11-04 2008-09-03 中兴通讯股份有限公司 Method for updating version of software
US20070132774A1 (en) * 2005-12-01 2007-06-14 Samsung Electronics Co., Ltd. System and method for a patch minimization tool
DE102005059319A1 (en) 2005-12-09 2007-06-14 Robert Bosch Gmbh File device operating method, involves storing data, which is stored on segment, and providing data for data conditions, where portion of data is converted, and converted data is stored on another segment during operation of device
EP1808764B1 (en) * 2005-12-20 2010-12-15 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Generating incremental program updates
US7603113B2 (en) 2005-12-31 2009-10-13 Adobe Systems Incorporated Using local codecs
US7660558B2 (en) 2005-12-31 2010-02-09 Adobe Systems Incorporated Interrupting and resuming a media player
KR100717110B1 (en) 2006-02-21 2007-05-04 삼성전자주식회사 Rom data patch circuit, embedded system including the same and method of patching rom data
KR100746036B1 (en) 2006-02-23 2007-07-30 삼성전자주식회사 Apparatus and method for controlling flash memory
US8921290B2 (en) 2006-06-06 2014-12-30 Exxonmobil Research And Engineering Company Gear oil compositions
US8834705B2 (en) 2006-06-06 2014-09-16 Exxonmobil Research And Engineering Company Gear oil compositions
US8501675B2 (en) 2006-06-06 2013-08-06 Exxonmobil Research And Engineering Company High viscosity novel base stock lubricant viscosity blends
US8535514B2 (en) 2006-06-06 2013-09-17 Exxonmobil Research And Engineering Company High viscosity metallocene catalyst PAO novel base stock lubricant blends
US8299007B2 (en) 2006-06-06 2012-10-30 Exxonmobil Research And Engineering Company Base stock lubricant blends
WO2008005581A3 (en) * 2006-07-07 2008-11-13 United Parcel Service Inc Compiled data for software applications
US8112747B2 (en) * 2006-11-27 2012-02-07 Sap Ag Integrated software support for a distributed business application with seamless backend communications
US20130167024A1 (en) 2006-12-05 2013-06-27 Adobe Systems Incorporated Embedded document within an application
US8533820B2 (en) * 2006-12-12 2013-09-10 International Business Machines Corporation Reserved write positions on install media
FR2911023B1 (en) * 2006-12-29 2009-04-17 Radiotelephone Sfr Process for securisation of a stream of data.
DE102007003580A1 (en) * 2007-01-24 2008-07-31 Giesecke & Devrient Gmbh Installing a patch in a smart card module
US7743339B1 (en) * 2007-02-01 2010-06-22 Adobe Systems Incorporated Rendering text in a brew device
EP1956482B1 (en) * 2007-02-09 2011-08-17 Telefonaktiebolaget LM Ericsson Generating delta updates for a processing device
US8589779B2 (en) * 2007-03-08 2013-11-19 Adobe Systems Incorporated Event-sensitive content for mobile devices
CA2686170A1 (en) * 2007-05-24 2008-12-04 Facebook, Inc. Personalized platform for accessing internet applications
DE502007006736D1 (en) * 2007-10-16 2011-04-28 Siemens Ag A method for automatically modifying a program
US8213923B1 (en) * 2007-11-02 2012-07-03 Trend Micro Incorporated Product update via voice call in mobile security
EP2229625B1 (en) 2007-12-13 2011-08-31 Telefonaktiebolaget LM Ericsson (publ) Updating firmware of an electronic device
US8839225B2 (en) * 2008-01-23 2014-09-16 International Business Machines Corporation Generating and applying patches to a computer program code concurrently with its execution
US9469704B2 (en) 2008-01-31 2016-10-18 Exxonmobil Chemical Patents Inc. Utilization of linear alpha olefins in the production of metallocene catalyzed poly-alpha olefins
FR2928754B1 (en) * 2008-03-13 2012-05-18 Sagem Securite Card system integrated with a modified operating program and corresponding method change
US8865959B2 (en) 2008-03-18 2014-10-21 Exxonmobil Chemical Patents Inc. Process for synthetic lubricant production
CN105175597A (en) 2008-03-31 2015-12-23 埃克森美孚化学专利公司 Production of Shear-Stable High Viscosity PAO
US9058230B1 (en) * 2008-05-27 2015-06-16 Symantec Operating Corporation Online expert system guided application installation
WO2009156790A1 (en) * 2008-06-23 2009-12-30 Freescale Semiconductor, Inc. Patching of a read-only memory
US8394746B2 (en) 2008-08-22 2013-03-12 Exxonmobil Research And Engineering Company Low sulfur and low metal additive formulations for high performance industrial oils
US8930930B2 (en) 2008-09-04 2015-01-06 International Business Machines Corporation Updating a computer system
US8312447B2 (en) * 2008-09-25 2012-11-13 Microsoft Corporation Managing updates using compiler and linker information
US8247358B2 (en) 2008-10-03 2012-08-21 Exxonmobil Research And Engineering Company HVI-PAO bi-modal lubricant compositions
KR101016916B1 (en) * 2008-10-30 2011-02-22 한국항공우주산업 주식회사 Method of Data Injection of Embedded System of Aircraft for Test and Flight Simulation
US20100180104A1 (en) * 2009-01-15 2010-07-15 Via Technologies, Inc. Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor
US9104521B2 (en) * 2009-03-16 2015-08-11 Tyco Electronics Subsea Communications Llc System and method for remote device application upgrades
JP5310324B2 (en) * 2009-07-07 2013-10-09 株式会社リコー The information processing apparatus, information processing method, and program
US8716201B2 (en) 2009-10-02 2014-05-06 Exxonmobil Research And Engineering Company Alkylated naphtylene base stock lubricant formulations
WO2011079042A3 (en) 2009-12-24 2011-09-09 Exxonmobil Chemical Patents Inc. Process for producing novel synthetic basestocks
US8598103B2 (en) 2010-02-01 2013-12-03 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low, medium and high speed engines by reducing the traction coefficient
US8759267B2 (en) 2010-02-01 2014-06-24 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8728999B2 (en) 2010-02-01 2014-05-20 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8642523B2 (en) 2010-02-01 2014-02-04 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8748362B2 (en) 2010-02-01 2014-06-10 Exxonmobile Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed gas engines by reducing the traction coefficient
CN102156661B (en) * 2010-02-11 2013-06-12 华为技术有限公司 Method, device and system for online activating patches
US9815915B2 (en) 2010-09-03 2017-11-14 Exxonmobil Chemical Patents Inc. Production of liquid polyolefins
CN101950254B (en) * 2010-09-16 2014-07-30 新邮通信设备有限公司 Software updating method and system thereof
US20120284498A1 (en) * 2011-05-06 2012-11-08 Asmedia Technology Inc. Flash device and associated booting method
DE102012103654A1 (en) 2011-05-17 2012-11-22 International Business Machines Corp. Installing and testing an application on a heavily used computer platform
CN103890151B (en) 2011-10-10 2016-01-20 埃克森美孚化学专利公司 The method of poly-α- olefin composition and preparation of poly-α- olefin composition
JP5886099B2 (en) * 2012-03-21 2016-03-16 日立オートモティブシステムズ株式会社 Automotive electronic control unit
CN102707978A (en) * 2012-05-18 2012-10-03 苏州万图明电子软件有限公司 Update software of image device
US9817656B2 (en) 2012-08-24 2017-11-14 Ca, Inc. Hot rollback of updated agent
US9798557B2 (en) * 2012-08-24 2017-10-24 Ca, Inc. Injection of updated classes for a java agent
CN102880494B (en) * 2012-09-26 2016-02-10 浙江大学 Local micro code update method of and a system for satellite systems
US8930932B2 (en) 2012-10-09 2015-01-06 Futurewei Technologies, Inc. In-service software patch
US9547581B2 (en) 2013-10-01 2017-01-17 Wipro Limited Systems and methods for fixing software defects in a binary or executable file
US9736098B2 (en) * 2014-02-07 2017-08-15 Lenovo (Singapore) Pte. Ltd. Email-based software delivery
US9547489B2 (en) * 2014-03-31 2017-01-17 Qualcomm Incorporated System and method for modifying a sequence of instructions in a read-only memory of a computing device
US9715402B2 (en) * 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
EP3040858A1 (en) * 2014-12-31 2016-07-06 Echelon Corporation A method and system of processing an image update
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9886263B2 (en) 2015-03-24 2018-02-06 Oracle International Corporation Techniques for efficient application configuration patching
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
CN106354524A (en) 2015-07-17 2017-01-25 飞思卡尔半导体公司 System and method for updating firmware in real time
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
CN106055979A (en) * 2016-05-24 2016-10-26 百度在线网络技术(北京)有限公司 Kernel fixing method and apparatus
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment

Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802549A (en) * 1995-12-14 1998-09-01 International Business Machines Corporation Method and apparatus for patching pages of ROM
US5933595A (en) * 1996-06-20 1999-08-03 Sharp Kabushiki Kaisha Computer apparatus having electrically rewritable nonvolatile memory, and nonvolatile semiconductor memory
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer
US20010000816A1 (en) * 1998-05-11 2001-05-03 Baltar Robert L. Volatile lock architecture for individual block locking on flash memory
US6237091B1 (en) * 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
US6256232B1 (en) * 2000-07-07 2001-07-03 Institute For Information Industry Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same
US6266736B1 (en) * 1997-01-31 2001-07-24 Sony Corporation Method and apparatus for efficient software updating
US6357021B1 (en) * 1999-04-14 2002-03-12 Mitsumi Electric Co., Ltd. Method and apparatus for updating firmware
US6378069B1 (en) * 1998-11-04 2002-04-23 Nortel Networks Limited Apparatus and methods for providing software updates to devices in a communication network
US20020073304A1 (en) * 2000-12-07 2002-06-13 Marsh James L. System and method for updating firmware
US6507881B1 (en) * 1999-06-10 2003-01-14 Mediatek Inc. Method and system for programming a peripheral flash memory via an IDE bus
US6529416B2 (en) * 2000-11-30 2003-03-04 Bitmicro Networks, Inc. Parallel erase operations in memory systems
US20030079216A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Apparatus and method of using a hybrid of fixed media data and network-based data to provide software changes
US20030165076A1 (en) * 2001-09-28 2003-09-04 Gorobets Sergey Anatolievich Method of writing data to non-volatile memory
US6640334B1 (en) * 1999-09-27 2003-10-28 Nortel Networks Limited Method and apparatus of remotely updating firmware of a communication device
US6769059B1 (en) * 1999-12-17 2004-07-27 Intel Corporation System for updating computer's existing video BIOS without updating the whole computer's system BIOS
US6813571B2 (en) * 2001-02-23 2004-11-02 Power Measurement, Ltd. Apparatus and method for seamlessly upgrading the firmware of an intelligent electronic device
US20050097543A1 (en) * 2003-10-30 2005-05-05 Kabushiki Kaisha Toshiba Electronic apparatus and embedded software updating method
US6896486B2 (en) * 2002-09-18 2005-05-24 Mikuni Corporation Water pump

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954941A (en) 1988-08-31 1990-09-04 Bell Communications Research, Inc. Method and apparatus for program updating
DE69033438D1 (en) * 1989-04-13 2000-03-02 Sandisk Corp Replacement of faulty memory cells of a EEprommatritze
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
US5675803A (en) * 1994-01-28 1997-10-07 Sun Microsystems, Inc. Method and apparatus for a fast debugger fix and continue operation
US5666293A (en) 1994-05-27 1997-09-09 Bell Atlantic Network Services, Inc. Downloading operating system software through a broadcast channel
US5699275A (en) 1995-04-12 1997-12-16 Highwaymaster Communications, Inc. System and method for remote patching of operating code located in a mobile unit
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US5689825A (en) 1995-07-28 1997-11-18 Motorola, Inc. Method and apparatus for downloading updated software to portable wireless communication units
US5896566A (en) 1995-07-28 1999-04-20 Motorola, Inc. Method for indicating availability of updated software to portable wireless communication units
US5907708A (en) * 1996-06-03 1999-05-25 Sun Microsystems, Inc. System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof
US5848064A (en) 1996-08-07 1998-12-08 Telxon Corporation Wireless software upgrades with version control
JP3755204B2 (en) 1996-09-20 2006-03-15 カシオ計算機株式会社 Communication apparatus, communication control method and communication system
US5923886A (en) 1997-01-04 1999-07-13 Inventec Corporation Automatic memory space switching method
US5936667A (en) 1997-05-13 1999-08-10 Sony Corporation System and method for testing and updating stored content of a remote transmitter for an entertainment system
US6049830A (en) 1997-05-13 2000-04-11 Sony Corporation Peripheral software download of a broadcast receiver
US6002941A (en) 1997-12-17 1999-12-14 Motorola, Inc. Method and apparatus for implementing a service in a wireless communication system
US6167567A (en) * 1998-05-05 2000-12-26 3Com Corporation Technique for automatically updating software stored on a client computer in a networked client-server environment
US6330715B1 (en) 1998-05-19 2001-12-11 Nortel Networks Limited Method and apparatus for managing software in a network system
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
US6353926B1 (en) 1998-07-15 2002-03-05 Microsoft Corporation Software update notification
US6366898B2 (en) 1998-09-21 2002-04-02 Sun, Microsystems, Inc. Method and apparatus for managing classfiles on devices without a file system
US6202208B1 (en) * 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6594822B1 (en) * 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6434744B1 (en) * 1999-03-03 2002-08-13 Microsoft Corporation System and method for patching an installed application program
US6223291B1 (en) 1999-03-26 2001-04-24 Motorola, Inc. Secure wireless electronic-commerce system with digital product certificates and digital license certificates
US6321380B1 (en) * 1999-06-29 2001-11-20 International Business Machines Corporation Method and apparatus for modifying instruction operations in a processor
US6397385B1 (en) 1999-07-16 2002-05-28 Excel Switching Corporation Method and apparatus for in service software upgrade for expandable telecommunications system
US7032213B1 (en) * 1999-09-01 2006-04-18 Microsoft Corporation Fixing incompatible applications using a light debugger
US20020012329A1 (en) 2000-06-02 2002-01-31 Timothy Atkinson Communications apparatus interface and method for discovery of remote devices
US20020026474A1 (en) 2000-08-28 2002-02-28 Wang Lawrence C. Thin client for wireless device using java interface
GB2366693B (en) 2000-08-31 2002-08-14 F Secure Oyj Software virus protection

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802549A (en) * 1995-12-14 1998-09-01 International Business Machines Corporation Method and apparatus for patching pages of ROM
US5933595A (en) * 1996-06-20 1999-08-03 Sharp Kabushiki Kaisha Computer apparatus having electrically rewritable nonvolatile memory, and nonvolatile semiconductor memory
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
US6266736B1 (en) * 1997-01-31 2001-07-24 Sony Corporation Method and apparatus for efficient software updating
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer
US20010000816A1 (en) * 1998-05-11 2001-05-03 Baltar Robert L. Volatile lock architecture for individual block locking on flash memory
US6237091B1 (en) * 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
US6378069B1 (en) * 1998-11-04 2002-04-23 Nortel Networks Limited Apparatus and methods for providing software updates to devices in a communication network
US6357021B1 (en) * 1999-04-14 2002-03-12 Mitsumi Electric Co., Ltd. Method and apparatus for updating firmware
US6507881B1 (en) * 1999-06-10 2003-01-14 Mediatek Inc. Method and system for programming a peripheral flash memory via an IDE bus
US6640334B1 (en) * 1999-09-27 2003-10-28 Nortel Networks Limited Method and apparatus of remotely updating firmware of a communication device
US6769059B1 (en) * 1999-12-17 2004-07-27 Intel Corporation System for updating computer's existing video BIOS without updating the whole computer's system BIOS
US6256232B1 (en) * 2000-07-07 2001-07-03 Institute For Information Industry Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same
US6529416B2 (en) * 2000-11-30 2003-03-04 Bitmicro Networks, Inc. Parallel erase operations in memory systems
US20020073304A1 (en) * 2000-12-07 2002-06-13 Marsh James L. System and method for updating firmware
US6813571B2 (en) * 2001-02-23 2004-11-02 Power Measurement, Ltd. Apparatus and method for seamlessly upgrading the firmware of an intelligent electronic device
US20030165076A1 (en) * 2001-09-28 2003-09-04 Gorobets Sergey Anatolievich Method of writing data to non-volatile memory
US20030079216A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Apparatus and method of using a hybrid of fixed media data and network-based data to provide software changes
US6896486B2 (en) * 2002-09-18 2005-05-24 Mikuni Corporation Water pump
US20050097543A1 (en) * 2003-10-30 2005-05-05 Kabushiki Kaisha Toshiba Electronic apparatus and embedded software updating method

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7593269B2 (en) 2002-01-29 2009-09-22 Agere Systems Inc. Differential flash memory programming technique
US7313030B2 (en) * 2002-01-29 2007-12-25 Agere Systems Inc. Differential flash memory programming technique
US20080068894A1 (en) * 2002-01-29 2008-03-20 Agere Systems Inc. Differential flash memory programming technique
US7920425B2 (en) 2002-01-29 2011-04-05 Agere Systems Inc. Differential flash memory programming technique
US20090296485A1 (en) * 2002-01-29 2009-12-03 Agere Systems Inc. Differential flash memory programming technique
US20030142556A1 (en) * 2002-01-29 2003-07-31 Lohse Martin A. Differential flash memory programming technique
US7673297B1 (en) * 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
US8578361B2 (en) 2004-04-21 2013-11-05 Palm, Inc. Updating an electronic device with update agent code
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US8588756B2 (en) * 2005-11-30 2013-11-19 Telecom Italia S.P.A. Method and system for updating applications in mobile communications terminals
US20090305687A1 (en) * 2005-11-30 2009-12-10 Simone Baldan Method and System for Updating Applications in Mobile Communications Terminals
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US9081638B2 (en) 2006-07-27 2015-07-14 Qualcomm Incorporated User experience and dependency management in a mobile device
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US8819668B2 (en) 2007-02-08 2014-08-26 Microsoft Corporation Accessible limited distribution release software change catalog
US20080196021A1 (en) * 2007-02-08 2008-08-14 Microsoft Corporation Accessible Limited Distribution Release Software Change Catalog
US20090019435A1 (en) * 2007-07-12 2009-01-15 Sauer-Danfoss Inc. System and method for over the air programming
US7802129B2 (en) 2007-10-17 2010-09-21 Hewlett-Packard Development Company, L.P. Mobile handset employing efficient backup and recovery of blocks during update
GB2468225A (en) * 2007-10-17 2010-09-01 Hewlett Packard Development Co Mobile handset employing efficient backup and recovery of blocks during update
GB2468225B (en) * 2007-10-17 2012-04-25 Hewlett Packard Development Co Mobile handset using a parity block to recover a block corrupted during the update of non-volatile memory
WO2009051760A1 (en) * 2007-10-17 2009-04-23 Hewlett-Packard Development Company, L.P. Mobile handset employing efficient backup and recovery of blocks during update
DE112008002767B4 (en) * 2007-10-17 2017-01-26 Qualcomm Incorporated Mobile hand-held device that uses an efficient backup and retrieval of blocks during an update
US20090106580A1 (en) * 2007-10-17 2009-04-23 Marko Slyz Mobile handset employing efficient backup and recovery of blocks during update
US8009757B2 (en) 2007-11-12 2011-08-30 Motorola Mobility, Inc. Method and apparatus for encoding a modulated signal in a communication system
US20090122906A1 (en) * 2007-11-12 2009-05-14 Motorola, Inc. Method and apparatus for encoding a modulated signal in a communication system
US8666305B2 (en) * 2009-07-13 2014-03-04 Eyad Ali Mohammad AL QALQILI Method and system for transmitting and/or receiving advertisement and data contents on a mobile communication device with a display mechanism
US20110136427A1 (en) * 2009-07-13 2011-06-09 Al Qalqili Eyad Ali Mohammad Method and system for transmitting and/or receiving advertisment and data contents on a mobile communication device with a display mechanisem
US9392017B2 (en) 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
CN101930375A (en) * 2010-08-26 2010-12-29 深圳市共进电子有限公司 Self-adaptive program data updating method of memory space in single user optical network unit
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller

Also Published As

Publication number Publication date Type
KR20040022451A (en) 2004-03-12 application
JP2004536405A (en) 2004-12-02 application
WO2003009136A1 (en) 2003-01-30 application
US6760908B2 (en) 2004-07-06 grant
US20030084434A1 (en) 2003-05-01 application
EP1410181A1 (en) 2004-04-21 application
US20040237068A1 (en) 2004-11-25 application
CN1529847A (en) 2004-09-15 application

Similar Documents

Publication Publication Date Title
US6772955B2 (en) Memory card
US6622199B1 (en) Method for minimizing data relocation overhead in flash based file systems
US20050132351A1 (en) Updating electronic device software employing rollback
US5856659A (en) Method of securely modifying data on a smart card
US20040098715A1 (en) Over the air mobile device software management
US20070055969A1 (en) System and method for updating firmware
US7904895B1 (en) Firmware update in electronic devices employing update agent in a flash memory card
Koshy et al. Remote incremental linking for energy-efficient reprogramming of sensor networks
US6754828B1 (en) Algorithm for non-volatile memory updates
US20070083571A1 (en) Methods and systems for updating content including a compressed version
US6343379B1 (en) Receiver and program updating method
US7698698B2 (en) Method for over-the-air firmware update of NAND flash memory based mobile devices
US20060258344A1 (en) Mobile handset update package generator that employs nodes technique
US7971199B1 (en) Mobile device with a self-updating update agent in a wireless network
US7082549B2 (en) Method for fault tolerant updating of an electronic device
US20100012732A1 (en) Installing a patch in a smart card module
US20050216530A1 (en) Method and apparatus for updating a stored version of content stored in a storage device
US20030182569A1 (en) Secure device
CN1475909A (en) realization of isertion type system soft ware patch and control method
US6330712B1 (en) Compressed data patch system
CN1372662A (en) Running and testing applications
US20040040020A1 (en) Electronic device with an update agent that employs preprocessing techniques for update
US20060123032A1 (en) Reorganizing images in static file system differencing and updating
US7228527B1 (en) Method and system for structuring a procedure
US7644404B2 (en) Network having customizable generators and electronic device having customizable updating software