US20070094656A1 - Self-modifying copier for downloading executable code in a non-disruptive manner - Google Patents
Self-modifying copier for downloading executable code in a non-disruptive manner Download PDFInfo
- Publication number
- US20070094656A1 US20070094656A1 US11/583,485 US58348506A US2007094656A1 US 20070094656 A1 US20070094656 A1 US 20070094656A1 US 58348506 A US58348506 A US 58348506A US 2007094656 A1 US2007094656 A1 US 2007094656A1
- Authority
- US
- United States
- Prior art keywords
- bootstrapper
- old
- new
- copier
- runtime
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 42
- 230000006837 decompression Effects 0.000 claims description 8
- 230000006835 compression Effects 0.000 claims description 3
- 238000007906 compression Methods 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000003068 static effect Effects 0.000 abstract description 7
- 238000012986 modification Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 24
- 230000008859 change Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Definitions
- the present invention relates to logic adapted to execution on an electronic digital device for a self-modifying copier. More particularly, it relates to a self-modifying copier used to nondisruptively load code and data into a runtime area of an active digital electronic device.
- Smart devices operating under control of a digital processor today include not just traditional computer systems, but also include, for example, telephones; personal digital assistants; routers, switches, and other networking devices; media presentation, recording, and distribution systems; storage systems, databases, and data warehouses; kiosks; security monitoring equipment, devices supporting web services; space shuttles, and tractors. It is easy to imagine situations in which any of these kinds of equipment might benefit from being able to update information, including running code, on the fly nondisruptively; i.e., without interruption to active operation. We will refer to such a device operating under the control of a processor as a “system.”
- NDCL nondisruptive code load
- the normal mode of Christeson is a variety of NDCL that Gabel (U.S. Pat. No. 5,930,504) characterizes as teaching that procedures for updating a logical area within a system may reside within that same logical area; in order to avoid change or corruption during an update process if they were to remain in the affected logical area, however, those procedures are protected by copying them to a safe system memory area from which they execute the update.
- the recovery mode of Christeson is clearly disruptive, requiring a reboot of the system after a manual change in a hardware jumper setting.
- Nilsson et al. U.S. Pat. No.
- O'Brien et al. U.S. Pat. No. 6,141,771
- O'Brien et al. also allude to an alternative method of preserving a trusted machine state, one that avoids initializing the portion of memory that contains that state; no specific structure or process for reinitializing the system is described, however, for this alternative method, which is not the focus of their invention.
- Runtime memory is an area of a digital device from which a processor reads instructions.
- the word “memory” is being used generically here to include a medium to which instructions can be written and then later written over, such as random access memory or disk storage.
- Runtime memory might be volatile random access memory, or it could be nonvolatile firmware so that its contents will not be erased when the system is shut down and restarted.
- the invention applies equally to either alternative. Henceforth without loss of generality this document will describe a single area of runtime memory, while in fact a given system may have a plurality of areas of runtime memory that exploit the benefits of the invention.
- the runtime memory has some structure or format that the executing code requires to function properly.
- the executing code might access within memory certain parameters or variables about the state of the system.
- a typical state variable is an aperture setting.
- the logic requires these variables to be found in portions of runtime memory whose locations are usually known and constant.
- Another example of a required format within runtime memory is the start of the code that executes when the system is initialized (i.e., rebooted).
- the structure of runtime memory therefore, typically consists of a plurality of segments.
- Both the old version and the new version of what occupies that memory namely the old runtime version before the update and the new runtime version afterwards, will be some combination taken from code modules, data modules, and modules that combine both code and data.
- the data might consist of system parameters, but in general it can be virtually anything that can be represented digitally, such as statistical data, transactional data, images, or music.
- the new version is first loaded into a shadow area of memory. It will often be the case that the memory in the shadow area will have faster and more robust performance than some external medium, such as slow disk, containing the new code version. Thus, the preliminary shadowing operation will both shorten the process of upgrading and reduce the risk of errors.
- the area from which the new version is transferred as the source area, which might be shadow memory or any other medium.
- the process of copying the new version is fairly straightforward, consisting essentially of copier instructions in the runtime memory superposing segments of the new version into corresponding segments containing the old version.
- the copier could be static, and would typically itself occupy a code segment.
- the copying process in this case is not entirely trivial, however, because consideration must be given to currently executing processes, system interrupts occurring while the transfer is occurring, and so forth.
- the upgrade process can be significantly more complicated if it is done in place, that is, by directly overwriting the runtime area.
- a structural modification might include, for example, one or more of the following: a change in the starting address of a segment; a change in the ending address of a segment; the addition of a new code or data segment; and the deletion of an existing code or data segment.
- the structural modification could obviously leave some segments intact, although the content (i.e., code or data) of such segments might change with the upgrade.
- a static copier within the runtime area would not contain logic to anticipate how the segments might be rearranged in the next upgrade iteration, nor, indeed, all succeeding ones. Consequently, there is a puzzle regarding how the processor can execute code in the runtime area that effects the structural change, when the nature of the desired change is embodied only in the new version, residing in the typically nonexecutable source area.
- the solution employed by the present invention is for a runtime area copier module to consist of two parts: a bootstrapper and a dynamic copier part.
- the content of the bootstrapper will typically, but not necessarily, be static through upgrades, while the dynamic copier part has the opportunity to change from one runtime version to the next.
- Two essential functions of the bootstrapper are to copy the new version of the dynamic copier part into runtime memory and to cause the new dynamic copier part to begin execution.
- the bootstrapper will have fixed start and ending addresses in the runtime area, while the dynamic part (which will be replaced and typically overwritten during the NDCL) will have a fixed start address.
- the entire copier will reside within a runtime memory segment having fixed starting and ending addresses, with enough space available for the dynamic part of the copier to expand within the segment over a number of anticipated upgrade cycles. Instructions within the new dynamic part of the copier, once loaded into runtime memory and executed, will produce the intended runtime area structural change and load in the remainder of the new version of code and data.
- the content of the bootstrapper can remain static in either of two ways.
- One alternative is for instructions in the static copier part of runtime memory to be overwritten with identical instructions from the source region as the copier executes. This approach has an advantage of simplicity, in that the entire runtime version is overwritten.
- the second alternative is for the copier to only overwrite its dynamic part, which will be faster, although usually only slightly faster, than a complete overwrite. Performance of the copier can be improved by the utilization of a processor instruction cache, when available.
- the processor instruction cache can also facilitate changes to the bootstrapper part of the copier.
- state information about the system is stored in a trusted system state segment that is left untouched during upgrades of the executable code.
- the trusted system segment will have fixed start and end addresses.
- the copying process involves decompression, decryption, or other similar operations being applied to some or all of the information being copied.
- FIG. 1 is a conceptual block diagram illustrating several elements of an embodiment of the present invention.
- FIG. 2 is a diagram of an exemplary structuring of memory in the runtime area and a shadow (source) area.
- FIG. 3 is a flowchart illustrating an embodiment of the runtime area upgrade process.
- FIG. 4 is a conceptual block diagram illustrating a processor having an instruction cache and a data cache.
- FIG. 5 is a flowchart illustrating an embodiment of the runtime area upgrade process utilizing a processor instruction cache.
- FIG. 1 is a conceptual block diagram showing one embodiment of the invention.
- the system 105 is an electronic digital device that contains a processor 108 and a runtime area 110 .
- the processor 108 can be a microcontroller on an integrated circuit board, a central processor of a supercomputer, or anything in between.
- the system 105 could be, for example, a computer, a digital camera, a portable media player, or a mobile phone.
- the runtime area 110 is an area of memory from within which the processor 108 can execute instructions represented in digital form (i.e., software code).
- the runtime area 110 is represented on a medium that is both readable and writable.
- the arrow labeled 190 indicates that the processor 108 has access to data and code for execution, both located in this area.
- This medium will be referred to as memory, although it need not be conventional volatile memory.
- the runtime area 110 contains at least two modules, one of which is a copier 120 .
- the other module could be an old code module 160 , a old data module 170 , or some combination of code and data. More typically, in addition to the copier 120 , the runtime area 110 will contain at least an old code module 160 , an old data module 170 , and a fixed content module 115 , whose content remains the same through all upgrades.
- the runtime area 110 might, in fact, contain a plurality of some or all of these module types.
- a particular example of a fixed content module 115 is a trusted system state 116 , which contains system state information and other parameters that are located in fixed, well-known locations, to ensure reliability of processing and continuity through upgrades of the system 105 .
- the upgrade process includes copying a new version 101 of runtime area content (hereinafter, “new version”) from a source area 111 into the runtime area 110 , replacing portions of the old version 100 , but not any fixed content modules 115 . It is well-known in the art that other steps and other components will typically be involved for a code upgrade to be done nondisruptively. The scope of the invention encompasses any such ancillary steps and components when used in combination with core concepts of the present invention.
- the source area 111 could be located internally within the system 105 , or it might be external.
- the large outer rectangle in the FIG. 1 suggests an internal source area 111
- a dashed line 106 suggests the alternative of an external source area 111 .
- the new version 101 might have a collection of modules that are in correspondence with the original modules. For example, every old code module could have a corresponding new code module, and conversely. This need not be the case, however.
- FIG. 1 shows that the source area 111 has a new second code module 181 .
- the figure is also suggestive of some other kinds of restructuring of the content of the runtime area 110 that an upgrade might accomplish.
- the new data module 171 has a different size from the old data module 170 (namely, larger), while the new code module 161 is smaller than its counterpart old code module 160 .
- the modules in the source area 111 are also arranged differently from those in the runtime area 110 , suggesting that the same might be true after the new modules have been installed into the runtime area 110 .
- the upgrade process can result in a restructuring of the content within runtime area 110 that can qualitatively be simple or complex. Additions and deletions of modules, rearrangements of locations, and changes in module sizes are among the possible restructuring possibilities.
- the invention accomplishes the upgrade, including any concomitant runtime area 110 restructuring, using a self-modifying copier 120 .
- a self-modifying copier 120 At the start of the upgrade process, there are two versions of the copier 120 , an old copier module 130 within the runtime area 110 , and a new copier module 131 , within the source area 111 .
- the old copier module 130 includes two parts, an old bootstrapper 140 and an old copier dynamic part 150 .
- the new copier module 131 includes a new copier dynamic part 151 .
- Each “part” is actually code, so, for example, “new copier dynamic code” is an alternative term for that part.
- the old bootstrapper 140 causes the new copier dynamic part 151 to be copied into the runtime area 110 , and thereafter causes the processor 108 to execute the new copier dynamic part 151 .
- the new copier dynamic part 151 contains logic for loading the new runtime content version 101 into the runtime area 110 , including any restructuring required within the runtime area 110 to accommodate the various modules of the new version 101 .
- Logic in the modules in the runtime area 110 can consequently be unaware about how the runtime area 110 might be reconfigured during an upgrade. In effect, the old copier module 130 knows how to kick off the upgrade process and the new copier module 131 , specifically the new copier dynamic part 151 , takes over from there.
- FIG. 1 logic in the new copier dynamic part 151 to copy and arrange the various modules of the new runtime content version 101 is suggested by arrows labeled 196 .
- the copying process might also accomplish one or more incidental tasks on portions of the new runtime content version 101 , including decompression, decoding, decryption, or even code assembly or compilation.
- the new copier module 131 might also include a new bootstrapper 141 .
- the fact that a new bootstrapper 141 is optional is suggested in FIG. 1 by its enclosure within a dashed line. If it exists at all, the new bootstrapper 141 is typically identical to the old bootstrapper 140 . While overwriting the old bootstrapper 140 with an identical version of itself might seem redundant, in some situations there might be good motivation to do so stemming from hardware or software considerations. It is also conceivable that the designers of the system 105 might want to leave open the possibility of improving or fixing bugs within the old bootstrapper 140 , in which case the new bootstrapper 141 could have some differences from the old bootstrapper 140 .
- the runtime area 110 includes a runtime area copier section 210 , a runtime area code section 220 , a runtime area data section 230 .
- the source area 111 includes corresponding sections, specifically a source area copier section 211 , a source area code section 221 , a source area data section 231 .
- the runtime area 110 contains an additional section, a fixed content section 200 .
- the fixed content section 200 which can contain any kind of digital content such as code or data, remains untouched during the upgrade process.
- the fixed content section 200 contains a trusted system state 116 .
- the starting and ending memory addresses within the runtime area 110 are fixed and the sections are contiguous.
- the runtime area code section 220 extends up to the start of the runtime area data section 230 .
- the old code module 160 does not fully occupy the runtime area code section 220 .
- a code expansion area 260 remains vacant, providing limited room for the code module in the runtime area 110 to grow from one upgrade iteration to the next.
- the fixed content section 200 includes a fixed content section expansion area 240
- the runtime area copier section 210 includes a copier expansion area 250
- the runtime area data section 230 includes a data expansion area 270 .
- a runtime area 110 structure including segments with fixed starting and ending addresses, while not essential to the invention, is often convenient so that system 105 logic can anticipate where to find particular information regardless of upgrades.
- the old copier module 130 is divided into an old bootstrapper 140 and an old copier dynamic part 150 .
- the old bootstrapper 140 has static start and end addresses, contained in memory extending up to the start of the old copier dynamic part 150 . Because, in this embodiment of the invention, the bootstrapper remains unchanged through the upgrade, the copier expansion area 250 is exclusively dedicated to potential expansion of the copier dynamic part.
- the source area 111 A few things are worthy of notice in the source area 111 .
- the sizes of the new copier dynamic part 151 , the new code module 161 , and the new data module 171 differ from their respective counterparts in the old runtime content version 100 .
- the new bootstrapper 141 is identical in size to the old bootstrapper 140 because it is identical in content.
- Each content module in the source area 111 would be copied into the runtime area 110 , beginning at the start address of the corresponding memory section there. In this configuration, the old copier module 130 would entirely overwrite itself with the new copier module 131 during the upgrade process.
- the new copier dynamic part 151 might have several tasks effecting the restructuring of the runtime area 110 .
- the logic of the new copier dynamic part 151 must be aware of the format of the new version 101 , such as the starting and ending addresses of the new data module 171 within the source area 111 , so that the segments of the runtime area 110 can be appropriately populated.
- Another possibility is that logic executing on the processor 108 might rely upon knowledge of the ending addresses of the portions of the memory sections actually in use (or equivalently the starting addresses of the expansion areas). This information might be stored by the new copier dynamic part 151 during NDCL at previously specified locations within the trusted system state 116 .
- FIG. 3 is a flowchart illustrating an embodiment of the invention in which at the start 300 of the process, the new runtime content version 101 is staged 310 into a source area 111 that is a shadow area containing fast memory.
- the source area 111 might be external to the system 105 , or might consist of a read-only medium, such as a compact disk.
- the processor 108 (or, more precisely, code executing on the processor) initiates 320 execution of the old copier module 130 , specifically the old bootstrapper 140 . Whether the next step, in which the old bootstrapper 140 overwrites 330 itself with a new bootstrapper 141 from the source area 111 is included depends upon embodiment, as previously discussed.
- the copier 120 copies the new copier dynamic part 151 into the runtime area 110 as a replacement for the old copier dynamic part 150 .
- Some responsibility for this task must fall on the old bootstrapper 140 , although the new copier dynamic part 151 might also participate in copying itself after it has begun executing 350 .
- step 360 which is an optional step that has been included in this particular embodiment, the copier 120 decompresses some or all of the modules of the new runtime content version 101 .
- this step might be done at alternative locations in the flowchart.
- the new copier module 131 might be decompressed by the old bootstrapper 140 between steps 320 and 330 . Decompression might be done all at once, or it might be done in smaller bits; for example, code might be decompressed on the fly, one instruction at a time.
- steps that are presented for convenience of illustration as sequential in the flowchart might actually occur together in a single step; for example, steps 360 and 370 might be carried out in combination or in parallel.
- step 370 the new copier dynamic part 151 , now resident itself within the runtime area 110 , copies the remainder of the new runtime content version 101 modules from the source area 111 to the runtime area 110 , reconfiguring the runtime area 110 appropriately.
- a processor 108 might have instruction cache 410 , data cache 420 , or, as illustrated by FIG. 4 , both. Physically, the cache 400 might be housed within the processor 108 itself, but could be separate. Within the conceptual framework illustrated by FIG. 1 , the cache 400 will be within the system 105 but outside both the runtime area 110 and the source area 111 . Either cache 400 type might be implemented in one or more separate units, so when we refer to “the data cache,” we mean as many individual units of data cache as are involved within the particular context.
- instruction cache 410 offers advantages in terms of processor 108 performance and a safe area where a small piece of code such as the old bootstrapper 140 can execute. This approach allows the old bootstrapper 140 to conveniently overwrite and even modify itself during the upgrade.
- FIG. 5 is a flowchart illustrating the interplay between the instruction cache 410 , the data cache 420 , and the runtime area 110 during copying of the new bootstrapper 141 and the new copier dynamic part 151 .
- FIG. 5 in effect adds cache-specific implementation details to FIG. 3 , which also pertains to configurations in which cache is either not present or has been disabled.
- FIG. 5 assumes that the processor 108 has both instruction cache 410 and data cache 420 enabled, but variants of FIG. 5 for which either type is not present are straightforward and within the scope of the invention.
- the process starts 500 with the new version being staged 510 into a source area 111 , which in this embodiment is a shadow area within fast memory to improve performance.
- the old bootstrapper 140 is placed within instruction cache 410 . This can be done manually by loading and locking the instruction cache 410 , or automatically if the system 105 provides a command to cause the processor 108 to do so according to algorithms of the processor 108 .
- the old bootstrapper 140 within the instruction cache 410 will typically be an instruction loop adapted to copying the new bootstrapper 141 and the new copier dynamic part 151 from the source area 111 into the runtime area 110 . Execution of the old bootstrapper 140 is initiated in step 520 .
- having the old bootstrapper 140 within the instruction cache 410 in effect allows the bootstrapper to be conveniently modified as it overwrites 530 the runtime area 110 copy of itself.
- the old copier dynamic part 150 is replaced 540 by the new copier dynamic part 151 by being partly or wholly overwritten.
- processors 108 are often configured under the assumption that they will not be overwriting their own instruction set, many processors 108 will behave as if the new version 101 being copied from the source area 111 is data, not instructions. Unless the data cache 420 has been disabled (which may be preferable), the processor 108 might copy at least some portion of the new version 101 into its data cache 420 for faster availability of the “data”. Code in the data cache 420 is not in the runtime area 110 , where it is needed for completion of the upgrade. Flushing 545 the data cache 420 fixes this problem, returning the instructions contained therein to the memory of the runtime area 110 .
- the system 105 typically provides specific assembly level instructions for operations such as loading and invalidating the instruction cache 410 and for disabling and flushing the data cache 420 .
- the step 560 of decompressing some or all of the information being transferred from the source area 111 to the runtime area 110 is optional.
- Other similar operations, such as decryption, decoding, compression, encryption, or encoding can also be done optionally.
- the new copier dynamic part 151 completes the copying and rearrangement of the runtime area 110 , while keeping the fixed content section 200 intact.
- the present invention is not limited to all the above details, as modifications and variations may be made without departing from the intent or scope of the invention.
- the functionality of the tracking camera could be split between two cameras, one dedicated to viewing presets and the other to tracking movement of a presenter, without departing from the central concept of integrating preset sensing zones with tracking away from those zones.
- other forms of devices might be used to configure a controller. Consequently, the invention should be limited only by the following claims and equivalent constructions.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
Description
- The present application is a continuation-in-part of, and claims benefit from, U.S. patent application Ser. No. 10/228,044, filed Aug. 27, 2002, and incorporated herein by reference in its entirety.
- The present invention relates to logic adapted to execution on an electronic digital device for a self-modifying copier. More particularly, it relates to a self-modifying copier used to nondisruptively load code and data into a runtime area of an active digital electronic device.
- The field of computing technology advances at almost a lightening pace. Equipment rarely has more than a five year life. In most instances, the life is only two to three years. In some instances, it is possible to replace various pieces of the equipment. In other instances, all that is required is a modification to existing code.
- “Smart” devices operating under control of a digital processor today include not just traditional computer systems, but also include, for example, telephones; personal digital assistants; routers, switches, and other networking devices; media presentation, recording, and distribution systems; storage systems, databases, and data warehouses; kiosks; security monitoring equipment, devices supporting web services; space shuttles, and tractors. It is easy to imagine situations in which any of these kinds of equipment might benefit from being able to update information, including running code, on the fly nondisruptively; i.e., without interruption to active operation. We will refer to such a device operating under the control of a processor as a “system.”
- It is desirable to provide an apparatus and method that enables running code on such systems to be upgraded to add functionality or fix bugs without any system down time. The device would run or operate in real time and continue to process requests. A process that updates a system without requiring it to shut down is often referred to as a nondisruptive code load (NDCL).
- A variety of approaches to NDCL have been implemented. Christeson et al. (U.S. Pat. No. 5,579,522) teach a computer system having two update modes, normal and recovery, selectable from outside the computer's enclosure using a hardware jumper. In a normal update mode, an operating system is transferred to and caused to execute in volatile random access memory. The system's BIOS and flash memory may be used in this initialization. An update program is then executed within the operating system, providing a user with update selections to save, verify or update nonvolatile memory areas, including the system BIOS or flash memory. A recovery update mode causes a special recovery BIOS to be executed in the event that the normal BIOS has been corrupted, thereby overwriting the normal BIOS of a computer system. The normal mode of Christeson is a variety of NDCL that Gabel (U.S. Pat. No. 5,930,504) characterizes as teaching that procedures for updating a logical area within a system may reside within that same logical area; in order to avoid change or corruption during an update process if they were to remain in the affected logical area, however, those procedures are protected by copying them to a safe system memory area from which they execute the update. The recovery mode of Christeson is clearly disruptive, requiring a reboot of the system after a manual change in a hardware jumper setting. In the context of a telecommunications switching system, Nilsson et al. (U.S. Pat. No. 5,410,703) teach maintaining an old software version effectively in parallel with a new version, gradually switching traffic over to the new version. Ishii et al. (U.S. Pat. No. 5,835,761) discuss performance improvements during NDCL that can be achieved by first copying the new code version into a shadow area of fast memory.
- The parameters and variables required to keep the system operational must be preserved through a nondisruptive code load. The patent of O'Brien et al. (U.S. Pat. No. 6,141,771) teaches copying a trusted machine state to a second portion of memory, reinitializing some portion of memory that does not include the trusted machine state, and then restoring the trusted machine state to either the original memory area or to a new memory area. O'Brien et al. also allude to an alternative method of preserving a trusted machine state, one that avoids initializing the portion of memory that contains that state; no specific structure or process for reinitializing the system is described, however, for this alternative method, which is not the focus of their invention.
- The central concept of the present invention is an executable self-modifying copier, resident in runtime memory. Runtime memory is an area of a digital device from which a processor reads instructions. The word “memory” is being used generically here to include a medium to which instructions can be written and then later written over, such as random access memory or disk storage. Runtime memory might be volatile random access memory, or it could be nonvolatile firmware so that its contents will not be erased when the system is shut down and restarted. The invention applies equally to either alternative. Henceforth without loss of generality this document will describe a single area of runtime memory, while in fact a given system may have a plurality of areas of runtime memory that exploit the benefits of the invention.
- The runtime memory has some structure or format that the executing code requires to function properly. For example, the executing code might access within memory certain parameters or variables about the state of the system. For example, within a digital camera, a typical state variable is an aperture setting. The logic requires these variables to be found in portions of runtime memory whose locations are usually known and constant. Another example of a required format within runtime memory is the start of the code that executes when the system is initialized (i.e., rebooted). The structure of runtime memory, therefore, typically consists of a plurality of segments. Both the old version and the new version of what occupies that memory, namely the old runtime version before the update and the new runtime version afterwards, will be some combination taken from code modules, data modules, and modules that combine both code and data. The data might consist of system parameters, but in general it can be virtually anything that can be represented digitally, such as statistical data, transactional data, images, or music.
- In one embodiment of the invention, the new version is first loaded into a shadow area of memory. It will often be the case that the memory in the shadow area will have faster and more robust performance than some external medium, such as slow disk, containing the new code version. Thus, the preliminary shadowing operation will both shorten the process of upgrading and reduce the risk of errors. We will refer to the area from which the new version is transferred as the source area, which might be shadow memory or any other medium.
- If the arrangement of the segments in the runtime area is unchanging through every upgrade, then the process of copying the new version is fairly straightforward, consisting essentially of copier instructions in the runtime memory superposing segments of the new version into corresponding segments containing the old version. In other words, the copier could be static, and would typically itself occupy a code segment. The copying process in this case is not entirely trivial, however, because consideration must be given to currently executing processes, system interrupts occurring while the transfer is occurring, and so forth.
- If, on the other hand, the structure of the runtime area must be changed with the new version, then the upgrade process can be significantly more complicated if it is done in place, that is, by directly overwriting the runtime area. Such a structural modification might include, for example, one or more of the following: a change in the starting address of a segment; a change in the ending address of a segment; the addition of a new code or data segment; and the deletion of an existing code or data segment. The structural modification could obviously leave some segments intact, although the content (i.e., code or data) of such segments might change with the upgrade.
- In general, a static copier within the runtime area would not contain logic to anticipate how the segments might be rearranged in the next upgrade iteration, nor, indeed, all succeeding ones. Consequently, there is a puzzle regarding how the processor can execute code in the runtime area that effects the structural change, when the nature of the desired change is embodied only in the new version, residing in the typically nonexecutable source area.
- The solution employed by the present invention is for a runtime area copier module to consist of two parts: a bootstrapper and a dynamic copier part. The content of the bootstrapper will typically, but not necessarily, be static through upgrades, while the dynamic copier part has the opportunity to change from one runtime version to the next. Two essential functions of the bootstrapper are to copy the new version of the dynamic copier part into runtime memory and to cause the new dynamic copier part to begin execution. In one embodiment of the invention, the bootstrapper will have fixed start and ending addresses in the runtime area, while the dynamic part (which will be replaced and typically overwritten during the NDCL) will have a fixed start address. In some embodiments, the entire copier will reside within a runtime memory segment having fixed starting and ending addresses, with enough space available for the dynamic part of the copier to expand within the segment over a number of anticipated upgrade cycles. Instructions within the new dynamic part of the copier, once loaded into runtime memory and executed, will produce the intended runtime area structural change and load in the remainder of the new version of code and data.
- The content of the bootstrapper can remain static in either of two ways. One alternative is for instructions in the static copier part of runtime memory to be overwritten with identical instructions from the source region as the copier executes. This approach has an advantage of simplicity, in that the entire runtime version is overwritten. The second alternative is for the copier to only overwrite its dynamic part, which will be faster, although usually only slightly faster, than a complete overwrite. Performance of the copier can be improved by the utilization of a processor instruction cache, when available. The processor instruction cache can also facilitate changes to the bootstrapper part of the copier.
- In some embodiments of the invention, state information about the system is stored in a trusted system state segment that is left untouched during upgrades of the executable code. The trusted system segment will have fixed start and end addresses. In some embodiments, the copying process involves decompression, decryption, or other similar operations being applied to some or all of the information being copied.
-
FIG. 1 is a conceptual block diagram illustrating several elements of an embodiment of the present invention. -
FIG. 2 is a diagram of an exemplary structuring of memory in the runtime area and a shadow (source) area. -
FIG. 3 is a flowchart illustrating an embodiment of the runtime area upgrade process. -
FIG. 4 is a conceptual block diagram illustrating a processor having an instruction cache and a data cache. -
FIG. 5 is a flowchart illustrating an embodiment of the runtime area upgrade process utilizing a processor instruction cache. - The present invention provides an apparatus and method for installing executable code or data in a manner that is non-disruptive to the system, so that the system is able to continue operating without the need to sacrifice any system down time.
FIG. 1 is a conceptual block diagram showing one embodiment of the invention. Thesystem 105 is an electronic digital device that contains aprocessor 108 and aruntime area 110. Theprocessor 108 can be a microcontroller on an integrated circuit board, a central processor of a supercomputer, or anything in between. Thesystem 105 could be, for example, a computer, a digital camera, a portable media player, or a mobile phone. Theruntime area 110 is an area of memory from within which theprocessor 108 can execute instructions represented in digital form (i.e., software code). Theruntime area 110 is represented on a medium that is both readable and writable. The arrow labeled 190 indicates that theprocessor 108 has access to data and code for execution, both located in this area. This medium will be referred to as memory, although it need not be conventional volatile memory. Theruntime area 110 contains at least two modules, one of which is a copier 120. The other module could be anold code module 160, aold data module 170, or some combination of code and data. More typically, in addition to the copier 120, theruntime area 110 will contain at least anold code module 160, anold data module 170, and a fixedcontent module 115, whose content remains the same through all upgrades. Theruntime area 110 might, in fact, contain a plurality of some or all of these module types. A particular example of a fixedcontent module 115 is a trustedsystem state 116, which contains system state information and other parameters that are located in fixed, well-known locations, to ensure reliability of processing and continuity through upgrades of thesystem 105. - The upgrade process includes copying a
new version 101 of runtime area content (hereinafter, “new version”) from asource area 111 into theruntime area 110, replacing portions of theold version 100, but not any fixedcontent modules 115. It is well-known in the art that other steps and other components will typically be involved for a code upgrade to be done nondisruptively. The scope of the invention encompasses any such ancillary steps and components when used in combination with core concepts of the present invention. - The
source area 111 could be located internally within thesystem 105, or it might be external. The large outer rectangle in theFIG. 1 suggests aninternal source area 111, while a dashedline 106 suggests the alternative of anexternal source area 111. - The
new version 101 might have a collection of modules that are in correspondence with the original modules. For example, every old code module could have a corresponding new code module, and conversely. This need not be the case, however.FIG. 1 , for example, shows that thesource area 111 has a newsecond code module 181. The figure is also suggestive of some other kinds of restructuring of the content of theruntime area 110 that an upgrade might accomplish. For example, thenew data module 171 has a different size from the old data module 170 (namely, larger), while thenew code module 161 is smaller than its counterpartold code module 160. The modules in thesource area 111 are also arranged differently from those in theruntime area 110, suggesting that the same might be true after the new modules have been installed into theruntime area 110. In general, the upgrade process can result in a restructuring of the content withinruntime area 110 that can qualitatively be simple or complex. Additions and deletions of modules, rearrangements of locations, and changes in module sizes are among the possible restructuring possibilities. - The invention accomplishes the upgrade, including any
concomitant runtime area 110 restructuring, using a self-modifying copier 120. At the start of the upgrade process, there are two versions of the copier 120, anold copier module 130 within theruntime area 110, and anew copier module 131, within thesource area 111. - In the embodiment of the invention illustrated in
FIG. 1 , theold copier module 130 includes two parts, anold bootstrapper 140 and an old copierdynamic part 150. Thenew copier module 131 includes a new copierdynamic part 151. (Each “part” is actually code, so, for example, “new copier dynamic code” is an alternative term for that part.) Theold bootstrapper 140 causes the new copierdynamic part 151 to be copied into theruntime area 110, and thereafter causes theprocessor 108 to execute the new copierdynamic part 151. The adaptation of logic within theold bootstrapper 140 to copying thenew copier module 131, at least the new copierdynamic part 151 but possibly also, as discussed below, thenew bootstrapper 141, is indicated by the arrow labeled 195 inFIG. 1 . - The new copier
dynamic part 151 contains logic for loading the newruntime content version 101 into theruntime area 110, including any restructuring required within theruntime area 110 to accommodate the various modules of thenew version 101. For convenience, we will exclude the new version of the copier 120 from the term newruntime content version 101. Logic in the modules in theruntime area 110 can consequently be ignorant about how theruntime area 110 might be reconfigured during an upgrade. In effect, theold copier module 130 knows how to kick off the upgrade process and thenew copier module 131, specifically the new copierdynamic part 151, takes over from there. InFIG. 1 , logic in the new copierdynamic part 151 to copy and arrange the various modules of the newruntime content version 101 is suggested by arrows labeled 196. The copying process might also accomplish one or more incidental tasks on portions of the newruntime content version 101, including decompression, decoding, decryption, or even code assembly or compilation. - The
new copier module 131 might also include anew bootstrapper 141. The fact that anew bootstrapper 141 is optional is suggested inFIG. 1 by its enclosure within a dashed line. If it exists at all, thenew bootstrapper 141 is typically identical to theold bootstrapper 140. While overwriting theold bootstrapper 140 with an identical version of itself might seem redundant, in some situations there might be good motivation to do so stemming from hardware or software considerations. It is also conceivable that the designers of thesystem 105 might want to leave open the possibility of improving or fixing bugs within theold bootstrapper 140, in which case thenew bootstrapper 141 could have some differences from theold bootstrapper 140. - Referring now to
FIG. 2 , we see a simple embodiment of the concepts that were illustrated inFIG. 1 in which theruntime area 110 and thesource area 111 each consist of a respective block of memory. Here, thesource area 111 is actually a shadow area into which the newruntime content version 101 has been staged (i.e., preloaded) to reduce the time required for the upgrade process. Theruntime area 110 includes a runtimearea copier section 210, a runtimearea code section 220, a runtimearea data section 230. Thesource area 111 includes corresponding sections, specifically a sourcearea copier section 211, a sourcearea code section 221, a sourcearea data section 231. As their names suggest, these sections contain a copier, code, and data, respectively. Theruntime area 110 contains an additional section, a fixedcontent section 200. The fixedcontent section 200, which can contain any kind of digital content such as code or data, remains untouched during the upgrade process. In the embodiment ofFIG. 2 , the fixedcontent section 200 contains a trustedsystem state 116. - In the embodiment illustrated by
FIG. 2 , the starting and ending memory addresses within theruntime area 110 are fixed and the sections are contiguous. Thus, for example, the runtimearea code section 220 extends up to the start of the runtimearea data section 230. Theold code module 160, however, does not fully occupy the runtimearea code section 220. Acode expansion area 260 remains vacant, providing limited room for the code module in theruntime area 110 to grow from one upgrade iteration to the next. Similarly, the fixedcontent section 200 includes a fixed contentsection expansion area 240, the runtimearea copier section 210 includes acopier expansion area 250, and the runtimearea data section 230 includes adata expansion area 270. Aruntime area 110 structure including segments with fixed starting and ending addresses, while not essential to the invention, is often convenient so thatsystem 105 logic can anticipate where to find particular information regardless of upgrades. - In the exemplary embodiment, the
old copier module 130 is divided into anold bootstrapper 140 and an old copierdynamic part 150. Theold bootstrapper 140 has static start and end addresses, contained in memory extending up to the start of the old copierdynamic part 150. Because, in this embodiment of the invention, the bootstrapper remains unchanged through the upgrade, thecopier expansion area 250 is exclusively dedicated to potential expansion of the copier dynamic part. - A few things are worthy of notice in the
source area 111. The sizes of the new copierdynamic part 151, thenew code module 161, and thenew data module 171 differ from their respective counterparts in the oldruntime content version 100. On the other hand, thenew bootstrapper 141 is identical in size to theold bootstrapper 140 because it is identical in content. Each content module in thesource area 111 would be copied into theruntime area 110, beginning at the start address of the corresponding memory section there. In this configuration, theold copier module 130 would entirely overwrite itself with thenew copier module 131 during the upgrade process. - Even in the relatively simple embodiment shown in
FIG. 2 , the new copierdynamic part 151 might have several tasks effecting the restructuring of theruntime area 110. As a minimum, the logic of the new copierdynamic part 151 must be aware of the format of thenew version 101, such as the starting and ending addresses of thenew data module 171 within thesource area 111, so that the segments of theruntime area 110 can be appropriately populated. Another possibility is that logic executing on theprocessor 108 might rely upon knowledge of the ending addresses of the portions of the memory sections actually in use (or equivalently the starting addresses of the expansion areas). This information might be stored by the new copierdynamic part 151 during NDCL at previously specified locations within the trustedsystem state 116. -
FIG. 3 is a flowchart illustrating an embodiment of the invention in which at thestart 300 of the process, the newruntime content version 101 is staged 310 into asource area 111 that is a shadow area containing fast memory. In other embodiments, thesource area 111 might be external to thesystem 105, or might consist of a read-only medium, such as a compact disk. The processor 108 (or, more precisely, code executing on the processor) initiates 320 execution of theold copier module 130, specifically theold bootstrapper 140. Whether the next step, in which theold bootstrapper 140 overwrites 330 itself with anew bootstrapper 141 from thesource area 111 is included depends upon embodiment, as previously discussed. In thenext step 340, the copier 120 copies the new copierdynamic part 151 into theruntime area 110 as a replacement for the old copierdynamic part 150. Some responsibility for this task must fall on theold bootstrapper 140, although the new copierdynamic part 151 might also participate in copying itself after it has begun executing 350. - In
step 360, which is an optional step that has been included in this particular embodiment, the copier 120 decompresses some or all of the modules of the newruntime content version 101. Note that this step might be done at alternative locations in the flowchart. For example, thenew copier module 131 might be decompressed by theold bootstrapper 140 betweensteps runtime content version 101 will need decompression but not others. Analogously todecompression 360, steps (not shown) might be added to the process for decoding or decrypting various modules of the newruntime content version 101, with similar configuration flexibility. Of course, such secondary processes as decompression, decoding, and decryption might not be required at all in some embodiments. Instep 370, the new copierdynamic part 151, now resident itself within theruntime area 110, copies the remainder of the newruntime content version 101 modules from thesource area 111 to theruntime area 110, reconfiguring theruntime area 110 appropriately. - The discussion so far has not addressed details regarding treatment of
cache 400 that might be available to theprocessor 108. Aprocessor 108 might haveinstruction cache 410,data cache 420, or, as illustrated byFIG. 4 , both. Physically, thecache 400 might be housed within theprocessor 108 itself, but could be separate. Within the conceptual framework illustrated byFIG. 1 , thecache 400 will be within thesystem 105 but outside both theruntime area 110 and thesource area 111. Eithercache 400 type might be implemented in one or more separate units, so when we refer to “the data cache,” we mean as many individual units of data cache as are involved within the particular context. - Despite some perils for the unwary described below, the availability of
instruction cache 410 offers advantages in terms ofprocessor 108 performance and a safe area where a small piece of code such as theold bootstrapper 140 can execute. This approach allows theold bootstrapper 140 to conveniently overwrite and even modify itself during the upgrade. -
FIG. 5 is a flowchart illustrating the interplay between theinstruction cache 410, thedata cache 420, and theruntime area 110 during copying of thenew bootstrapper 141 and the new copierdynamic part 151.FIG. 5 in effect adds cache-specific implementation details toFIG. 3 , which also pertains to configurations in which cache is either not present or has been disabled. - The availability, types, and implementation of
cache 400 tend to be specific to a family ofprocessors 108, or even to asingle processor 108 model.FIG. 5 assumes that theprocessor 108 has bothinstruction cache 410 anddata cache 420 enabled, but variants ofFIG. 5 for which either type is not present are straightforward and within the scope of the invention. - The process starts 500 with the new version being staged 510 into a
source area 111, which in this embodiment is a shadow area within fast memory to improve performance. Instep 515, theold bootstrapper 140 is placed withininstruction cache 410. This can be done manually by loading and locking theinstruction cache 410, or automatically if thesystem 105 provides a command to cause theprocessor 108 to do so according to algorithms of theprocessor 108. Theold bootstrapper 140 within theinstruction cache 410 will typically be an instruction loop adapted to copying thenew bootstrapper 141 and the new copierdynamic part 151 from thesource area 111 into theruntime area 110. Execution of theold bootstrapper 140 is initiated instep 520. In addition tobetter processor 108 performance, having theold bootstrapper 140 within theinstruction cache 410 in effect allows the bootstrapper to be conveniently modified as it overwrites 530 theruntime area 110 copy of itself. Next, the old copierdynamic part 150 is replaced 540 by the new copierdynamic part 151 by being partly or wholly overwritten. - Because the copier 120 is self-modifying code, the distinction between “data” and “instructions” is obscured. Because
processors 108 are often configured under the assumption that they will not be overwriting their own instruction set,many processors 108 will behave as if thenew version 101 being copied from thesource area 111 is data, not instructions. Unless thedata cache 420 has been disabled (which may be preferable), theprocessor 108 might copy at least some portion of thenew version 101 into itsdata cache 420 for faster availability of the “data”. Code in thedata cache 420 is not in theruntime area 110, where it is needed for completion of the upgrade.Flushing 545 thedata cache 420 fixes this problem, returning the instructions contained therein to the memory of theruntime area 110. - Because the
instruction cache 410 still contains theold bootstrapper 140, a command is issued to invalidate 547 the contents of theinstruction cache 410, which forces theprocessor 108 to fetch its instructions fromruntime area 110 memory, hence refreshing itself and initiating execution of the new copierdynamic part 151. Thesystem 105 typically provides specific assembly level instructions for operations such as loading and invalidating theinstruction cache 410 and for disabling and flushing thedata cache 420. As inFIG. 3 thestep 560 of decompressing some or all of the information being transferred from thesource area 111 to theruntime area 110 is optional. Other similar operations, such as decryption, decoding, compression, encryption, or encoding can also be done optionally. Finally, the new copierdynamic part 151 completes the copying and rearrangement of theruntime area 110, while keeping the fixedcontent section 200 intact. - The present invention is not limited to all the above details, as modifications and variations may be made without departing from the intent or scope of the invention. For example, the functionality of the tracking camera could be split between two cameras, one dedicated to viewing presets and the other to tracking movement of a presenter, without departing from the central concept of integrating preset sensing zones with tracking away from those zones. As another example, other forms of devices might be used to configure a controller. Consequently, the invention should be limited only by the following claims and equivalent constructions.
Claims (22)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/583,485 US20070094656A1 (en) | 2002-08-27 | 2006-10-18 | Self-modifying copier for downloading executable code in a non-disruptive manner |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/228,044 US7185331B2 (en) | 2002-08-27 | 2002-08-27 | Method and apparatus for downloading executable code in a non-disruptive manner |
US11/583,485 US20070094656A1 (en) | 2002-08-27 | 2006-10-18 | Self-modifying copier for downloading executable code in a non-disruptive manner |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/228,044 Continuation-In-Part US7185331B2 (en) | 2002-08-27 | 2002-08-27 | Method and apparatus for downloading executable code in a non-disruptive manner |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070094656A1 true US20070094656A1 (en) | 2007-04-26 |
Family
ID=31976003
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/228,044 Expired - Fee Related US7185331B2 (en) | 2002-08-27 | 2002-08-27 | Method and apparatus for downloading executable code in a non-disruptive manner |
US11/583,485 Abandoned US20070094656A1 (en) | 2002-08-27 | 2006-10-18 | Self-modifying copier for downloading executable code in a non-disruptive manner |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/228,044 Expired - Fee Related US7185331B2 (en) | 2002-08-27 | 2002-08-27 | Method and apparatus for downloading executable code in a non-disruptive manner |
Country Status (5)
Country | Link |
---|---|
US (2) | US7185331B2 (en) |
EP (1) | EP1535149A4 (en) |
AU (1) | AU2003262850A1 (en) |
CA (1) | CA2496946A1 (en) |
WO (1) | WO2004021113A2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060152524A1 (en) * | 2005-01-12 | 2006-07-13 | Eastman Kodak Company | Four color digital cinema system with extended color gamut and copy protection |
CN100464522C (en) * | 2007-05-17 | 2009-02-25 | 华为技术有限公司 | Process upgrading method and system |
US10534598B2 (en) * | 2017-01-04 | 2020-01-14 | International Business Machines Corporation | Rolling upgrades in disaggregated systems |
US11153164B2 (en) | 2017-01-04 | 2021-10-19 | International Business Machines Corporation | Live, in-line hardware component upgrades in disaggregated systems |
US20220382563A1 (en) * | 2021-05-31 | 2022-12-01 | Autochips Inc. | Program startup method, electronic system, and non-transitory storage medium |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7313681B2 (en) * | 2003-11-20 | 2007-12-25 | International Business Machines Corporation | Apparatus, system, and method for adapter fastload |
US7752617B2 (en) * | 2003-11-20 | 2010-07-06 | International Business Machines Corporation | Apparatus, system, and method for updating an embedded code image |
US20060248107A1 (en) * | 2005-04-11 | 2006-11-02 | Coronado Juan A | Apparatus system and method for updating software while preserving system state |
US8230414B1 (en) * | 2005-06-16 | 2012-07-24 | Infinera Corporation | Software distribution and cache management across client machines on a network |
US7797694B2 (en) * | 2005-09-19 | 2010-09-14 | Adc Telecommunications, Inc. | Mechanism to upgrade system capability without affecting service |
US20070113051A1 (en) * | 2005-10-17 | 2007-05-17 | Honeywell International Inc. | Apparatus and method for live loading of control applications in a process control environment |
US7430626B2 (en) * | 2006-01-30 | 2008-09-30 | Adc Telecommunications, Inc. | Bi-directional data control state machine |
US7823020B2 (en) * | 2006-08-30 | 2010-10-26 | International Business Machines Corporation | System and method for applying a destructive firmware update in a non-destructive manner |
US8515727B2 (en) * | 2008-03-19 | 2013-08-20 | International Business Machines Corporation | Automatic logic model build process with autonomous quality checking |
US8219794B1 (en) * | 2009-11-03 | 2012-07-10 | Network Appliance, Inc. | Non-disruptive firmware upgrade of a storage shelf |
US9092474B2 (en) | 2010-10-12 | 2015-07-28 | Sap Se | Incremental conversion of database objects during upgrade of an original system |
US8984514B2 (en) | 2010-11-30 | 2015-03-17 | Sap Se | Modifying scheduled execution of object modification methods associated with database objects |
US8527471B2 (en) * | 2010-12-27 | 2013-09-03 | Sap Ag | Shadow system mirroring of an original system during uptime of an upgrade process |
US9626390B2 (en) | 2010-12-27 | 2017-04-18 | Sap Se | Shadow system start during upgrade of an original system |
US9213728B2 (en) | 2011-12-14 | 2015-12-15 | Sap Se | Change data capturing during an upgrade |
KR101357951B1 (en) * | 2012-03-02 | 2014-02-04 | 엘에스산전 주식회사 | Method for maintaining firmware of digital protective relay and the digital protective relay performing the same |
US9516094B2 (en) * | 2012-05-17 | 2016-12-06 | Microsoft Technology Licensing, Llc | Event-responsive download of portions of streamed applications |
US9043654B2 (en) | 2012-12-07 | 2015-05-26 | International Business Machines Corporation | Avoiding processing flaws in a computer processor triggered by a predetermined sequence of hardware events |
CN107391127A (en) * | 2017-07-06 | 2017-11-24 | 上海斐讯数据通信技术有限公司 | Software version information store method and system |
US10552185B2 (en) * | 2018-05-24 | 2020-02-04 | International Business Machines Corporation | Lightweight and precise value profiling |
CN110688132A (en) * | 2018-07-05 | 2020-01-14 | 阿里巴巴集团控股有限公司 | Upgrading encryption machine, data import and request migration method, device and equipment |
CN114489711A (en) * | 2021-12-17 | 2022-05-13 | 北京镁伽科技有限公司 | Terminal upgrade method, device and storage medium |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930504A (en) * | 1996-07-22 | 1999-07-27 | Intel Corporation | Dynamic nonvolatile memory update in a computer system |
US6141771A (en) * | 1998-02-06 | 2000-10-31 | International Business Machines Corporation | Method and system for providing a trusted machine state |
US20040123282A1 (en) * | 2000-11-17 | 2004-06-24 | Rao Bindu Rama | Mobile handset with a fault tolerant update agent |
US20040163080A1 (en) * | 2003-01-10 | 2004-08-19 | Amitabh Menon | Multiple patches to on-chip ROM in a processor with a multilevel memory system without affecting performance |
US20040250245A1 (en) * | 2003-06-04 | 2004-12-09 | Rao Bindu Rama | Network having customizable generators and electronic device having customizable updating software |
US20060010435A1 (en) * | 2001-10-31 | 2006-01-12 | Microsoft Corporation | Dynamic software update |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179734A (en) * | 1984-03-02 | 1993-01-12 | Texas Instruments Incorporated | Threaded interpretive data processor |
IT1254937B (en) * | 1991-05-06 | 1995-10-11 | DYNAMIC UPDATE OF NON-VOLATILE MEMORY IN A COMPUTER SYSTEM | |
US5878256A (en) * | 1991-10-16 | 1999-03-02 | International Business Machine Corp. | Method and apparatus for providing updated firmware in a data processing system |
US5410703A (en) * | 1992-07-01 | 1995-04-25 | Telefonaktiebolaget L M Ericsson | System for changing software during computer operation |
US5339430A (en) * | 1992-07-01 | 1994-08-16 | Telefonaktiebolaget L M Ericsson | System for dynamic run-time binding of software modules in a computer system |
US5481713A (en) * | 1993-05-06 | 1996-01-02 | Apple Computer, Inc. | Method and apparatus for patching code residing on a read only memory device |
WO1995018491A2 (en) * | 1993-12-29 | 1995-07-06 | Novalink Tech Inc | Data communication device |
GB2290890B (en) * | 1994-06-29 | 1999-03-24 | Mitsubishi Electric Corp | Information processing system |
JP2940480B2 (en) * | 1996-07-05 | 1999-08-25 | 日本電気株式会社 | Computer system |
US6324411B1 (en) * | 1997-05-20 | 2001-11-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Background software loading in cellular telecommunication systems |
US6189145B1 (en) * | 1997-05-28 | 2001-02-13 | International Business Machines Corporation | Concurrent patch to logical partition manager of a logically partitioned system |
US5920725A (en) * | 1997-07-02 | 1999-07-06 | Adaptivity Inc. | Run-time object-synthesis and transparent client/server updating of distributed objects using a meta server of all object descriptors |
US6009520A (en) * | 1997-12-10 | 1999-12-28 | Phoenix Technologies, Ltd | Method and apparatus standardizing use of non-volatile memory within a BIOS-ROM |
US6138274A (en) * | 1998-01-23 | 2000-10-24 | Lucent Technologies, Inc. | Method and apparatus for updating an online computer program |
US6202208B1 (en) * | 1998-09-29 | 2001-03-13 | Nortel Networks Limited | Patching environment for modifying a Java virtual machine and method |
JP2000242484A (en) * | 1999-02-24 | 2000-09-08 | Hitachi Ltd | How to change the control program |
US6715068B1 (en) * | 1999-03-31 | 2004-03-30 | Fuji Photo Optical Co., Ltd. | Multi-microcomputer system |
US6397385B1 (en) * | 1999-07-16 | 2002-05-28 | Excel Switching Corporation | Method and apparatus for in service software upgrade for expandable telecommunications system |
WO2002017073A1 (en) * | 2000-08-22 | 2002-02-28 | Novatel Wireless, Inc. | Over the air rf wireless data modem programming |
US20020073410A1 (en) * | 2000-12-13 | 2002-06-13 | Arne Lundback | Replacing software at a telecommunications platform |
US6778974B2 (en) * | 2001-02-02 | 2004-08-17 | Matrix Semiconductor, Inc. | Memory device and method for reading data stored in a portion of a memory device unreadable by a file system of a host device |
US6442660B1 (en) * | 2001-03-21 | 2002-08-27 | Sharp Laboratories Of America, Inc. | Dynamic system relocation based on availability of system memory |
-
2002
- 2002-08-27 US US10/228,044 patent/US7185331B2/en not_active Expired - Fee Related
-
2003
- 2003-08-26 EP EP03791757A patent/EP1535149A4/en not_active Withdrawn
- 2003-08-26 AU AU2003262850A patent/AU2003262850A1/en not_active Abandoned
- 2003-08-26 WO PCT/US2003/026582 patent/WO2004021113A2/en not_active Application Discontinuation
- 2003-08-26 CA CA002496946A patent/CA2496946A1/en not_active Abandoned
-
2006
- 2006-10-18 US US11/583,485 patent/US20070094656A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930504A (en) * | 1996-07-22 | 1999-07-27 | Intel Corporation | Dynamic nonvolatile memory update in a computer system |
US6141771A (en) * | 1998-02-06 | 2000-10-31 | International Business Machines Corporation | Method and system for providing a trusted machine state |
US20040123282A1 (en) * | 2000-11-17 | 2004-06-24 | Rao Bindu Rama | Mobile handset with a fault tolerant update agent |
US20060010435A1 (en) * | 2001-10-31 | 2006-01-12 | Microsoft Corporation | Dynamic software update |
US20040163080A1 (en) * | 2003-01-10 | 2004-08-19 | Amitabh Menon | Multiple patches to on-chip ROM in a processor with a multilevel memory system without affecting performance |
US20040250245A1 (en) * | 2003-06-04 | 2004-12-09 | Rao Bindu Rama | Network having customizable generators and electronic device having customizable updating software |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060152524A1 (en) * | 2005-01-12 | 2006-07-13 | Eastman Kodak Company | Four color digital cinema system with extended color gamut and copy protection |
US7362336B2 (en) * | 2005-01-12 | 2008-04-22 | Eastman Kodak Company | Four color digital cinema system with extended color gamut and copy protection |
CN100464522C (en) * | 2007-05-17 | 2009-02-25 | 华为技术有限公司 | Process upgrading method and system |
US20100058315A1 (en) * | 2007-05-17 | 2010-03-04 | Huawei Technologies Co., Ltd. | Method and system for process upgrade |
US8495610B2 (en) * | 2007-05-17 | 2013-07-23 | Huawei Technologies Co., Ltd. | Method and system for process upgrade |
US10534598B2 (en) * | 2017-01-04 | 2020-01-14 | International Business Machines Corporation | Rolling upgrades in disaggregated systems |
US10970061B2 (en) | 2017-01-04 | 2021-04-06 | International Business Machines Corporation | Rolling upgrades in disaggregated systems |
US11153164B2 (en) | 2017-01-04 | 2021-10-19 | International Business Machines Corporation | Live, in-line hardware component upgrades in disaggregated systems |
US20220382563A1 (en) * | 2021-05-31 | 2022-12-01 | Autochips Inc. | Program startup method, electronic system, and non-transitory storage medium |
US12159147B2 (en) * | 2021-05-31 | 2024-12-03 | Autochips Inc. | Program startup method, electronic system, and non-transitory storage medium |
Also Published As
Publication number | Publication date |
---|---|
CA2496946A1 (en) | 2004-03-11 |
US7185331B2 (en) | 2007-02-27 |
WO2004021113A3 (en) | 2004-04-08 |
EP1535149A2 (en) | 2005-06-01 |
EP1535149A4 (en) | 2005-12-21 |
AU2003262850A1 (en) | 2004-03-19 |
US20040044997A1 (en) | 2004-03-04 |
WO2004021113A2 (en) | 2004-03-11 |
AU2003262850A8 (en) | 2004-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070094656A1 (en) | Self-modifying copier for downloading executable code in a non-disruptive manner | |
US7698698B2 (en) | Method for over-the-air firmware update of NAND flash memory based mobile devices | |
US8041988B2 (en) | Firmware update for consumer electronic device | |
US8539471B2 (en) | Updating firmware of an electronic device | |
US6668261B1 (en) | Method of upgrading a program using associated configuration data | |
US8032740B2 (en) | Update in-use flash memory without external interfaces | |
US9081639B2 (en) | System and method for remotely re-imaging a computer system | |
JP2000357095A (en) | Method and device for downloading software to embedded system | |
US10592354B2 (en) | Configurable recovery states | |
US7313681B2 (en) | Apparatus, system, and method for adapter fastload | |
US7546596B2 (en) | Non-disruptive method, system and program product for overlaying a first software module with a second software module | |
US10564894B2 (en) | Free space pass-through | |
KR101850275B1 (en) | Method for generating boot image for fast booting and image forming apparatus for performing the same, method for performing fast booting and image forming apparatus for performing the same | |
KR101850272B1 (en) | Method for updating boot image for fast booting and image forming apparatus for performing the same | |
KR20130040638A (en) | Method for restoring error of boot image for fast booting and image forming apparatus for performing the same | |
EP4105776B1 (en) | Method and apparatus for firmware patching | |
KR100321999B1 (en) | Method for program patch using script | |
US10185574B2 (en) | Live imaging of a device | |
US20220108017A1 (en) | Firmware to restore configurable option | |
CN119013655A (en) | Unified package for embedded systems | |
KR20040052305A (en) | System and method for loading operating system for embedded system | |
CN119376800A (en) | A multi-firmware loading optimization method and corresponding embedded system | |
CN114610352A (en) | Application program execution method and device, computer equipment and storage medium | |
CN118672569A (en) | Method for constructing easy-maintenance high-reliability embedded system software and storage medium | |
KR20000023322A (en) | A method and system for updating memory in a processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MCDATA CORPORATION, COLORADO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TALATI, NARESH;BODNER, ANTON, JR.;REEL/FRAME:018779/0602;SIGNING DATES FROM 20061130 TO 20061219 |
|
AS | Assignment |
Owner name: BANK OF AMERICA, N.A. AS ADMINISTRATIVE AGENT, CAL Free format text: SECURITY AGREEMENT;ASSIGNORS:BROCADE COMMUNICATIONS SYSTEMS, INC.;FOUNDRY NETWORKS, INC.;INRANGE TECHNOLOGIES CORPORATION;AND OTHERS;REEL/FRAME:022012/0204 Effective date: 20081218 Owner name: BANK OF AMERICA, N.A. AS ADMINISTRATIVE AGENT,CALI Free format text: SECURITY AGREEMENT;ASSIGNORS:BROCADE COMMUNICATIONS SYSTEMS, INC.;FOUNDRY NETWORKS, INC.;INRANGE TECHNOLOGIES CORPORATION;AND OTHERS;REEL/FRAME:022012/0204 Effective date: 20081218 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: INRANGE TECHNOLOGIES CORPORATION, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:034792/0540 Effective date: 20140114 Owner name: BROCADE COMMUNICATIONS SYSTEMS, INC., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:034792/0540 Effective date: 20140114 Owner name: FOUNDRY NETWORKS, LLC, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:034792/0540 Effective date: 20140114 |