US20030182414A1 - System and method for updating and distributing information - Google Patents
System and method for updating and distributing information Download PDFInfo
- Publication number
- US20030182414A1 US20030182414A1 US10/311,462 US31146203A US2003182414A1 US 20030182414 A1 US20030182414 A1 US 20030182414A1 US 31146203 A US31146203 A US 31146203A US 2003182414 A1 US2003182414 A1 US 2003182414A1
- Authority
- US
- United States
- Prior art keywords
- update
- operating code
- code
- resident
- updated
- 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 title claims abstract description 246
- 238000003860 storage Methods 0.000 claims abstract description 166
- 230000008569 process Effects 0.000 claims description 155
- 238000004891 communication Methods 0.000 claims description 59
- 230000006870 function Effects 0.000 claims description 50
- 238000009826 distribution Methods 0.000 claims description 49
- 230000009466 transformation Effects 0.000 claims description 27
- 238000009434 installation Methods 0.000 claims description 26
- 230000001413 cellular effect Effects 0.000 claims description 7
- 230000002452 interceptive effect Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000012937 correction Methods 0.000 claims description 5
- 230000005055 memory storage Effects 0.000 claims description 5
- 230000003287 optical effect Effects 0.000 claims description 5
- 230000001131 transforming effect Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 238000010348 incorporation Methods 0.000 claims 1
- 230000015654 memory Effects 0.000 abstract description 134
- 238000005516 engineering process Methods 0.000 abstract description 9
- 239000003795 chemical substances by application Substances 0.000 description 88
- 101150060512 SPATA6 gene Proteins 0.000 description 84
- 238000007726 management method Methods 0.000 description 40
- 238000012546 transfer Methods 0.000 description 40
- 238000011900 installation process Methods 0.000 description 35
- 238000010200 validation analysis Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 16
- 238000012300 Sequence Analysis Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 208000032368 Device malfunction Diseases 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
- 230000003936 working memory Effects 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/658—Incremental updates; Differential updates
-
- 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
-
- 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/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
Definitions
- the present invention generally relates to information updating systems, and more particularly, to a software system and method for updating information which reduces the size of an update and distributes the update in a platform independent manner.
- Some of the concerns which the developer must address include the substantial amount of resources required to store and provide updates to a large customer base, technical support issues related to helping customers properly apply the updates, and the methods by which the updates are distributed to the customers in a timely and efficient manner.
- Even if a customer is able to retrieve the update he is faced with the problem of insuring its proper installation. Improper installation of an update package may result in software failure or render the device to which the update is applied inoperative and place a further burden on the developer in resolving customer-related update problems.
- the present invention satisfies aforementioned needs for efficient updating of digital information sequences that comprise software, devices, and data. Further, these digital information sequences may be stored and used in various forms, including but not limited to files, memory locations, or embedded storage locations.
- the system and methods described herein provide a developer with an improved ability to create update information as needed and additionally allow users to proceed through a simplified update path which is not error-prone and can be performed more quickly than through the use of existing technologies.
- the invention comprises a system for updating a plurality of distributed electronic devices with an updated operating code comprising a first plurality of digital information sequences wherein each of the plurality of electronic devices include a resident operating code comprising a second plurality of digital information sequences that are stored within the electronic device.
- the system further comprises an update generator that compares an image of the first plurality of digital information sequences comprising the updated operating code to an image of the second plurality of digital information sequences comprising the resident operating code and identifies differences between of the updated operating code and the resident operating code and thereafter generates an update package comprising an instruction set which specifies how to generate the updated operating code utilizing at least a portion of the second plurality of digital information sequences of the resident operating code.
- the system further comprises a distribution system that distributes the update package to the electronic devices such that the update package is received by the electronic devices and stored therein.
- the system further comprises a plurality of client modules that are respectively resident on each of the plurality of electronic devices, wherein the plurality of client modules access the distribution system and receive the update package and wherein the instruction set of the update package is executed by the client modules so as to generate the updated operating code by utilizing a least a portion of the second plurality of digital information sequences from the resident operating code.
- the invention comprises a system for updating an electronic device containing a first plurality of data sequences comprising a first code version to a second code version comprising a second plurality of data sequences using a update package comprising a plurality of transformation instructions which transform the first code version into the second code version.
- the system further comprises an update generator that performs a version comparison between the first code version and the second code version to identify pattern differences between the first plurality of data sequences and the second plurality of data sequences, wherein the identified pattern differences are encoded using the transformation instructions which identify portions of the first plurality of data sequences that can be used in the construction of the identified pattern differences, and thereafter forming the update package using the transformation instructions.
- the system further comprises a distribution system that receives the update package from the update generator and distributes the update package to the electronic device.
- the system further comprises an update agent resident on the electronic device that executes the transformation instructions of the update package thereby transforming the first code version resident in the electronic device into the updated second code version.
- the invention comprises a system for updating a plurality of distributed electronic devices with an updated operating code that comprises a plurality of data blocks wherein each of the plurality of distributed electronic devices include a resident operating code that is stored as plurality of data blocks.
- the system further comprises an update generator that compares the plurality of data blocks of the resident operating code with the plurality of data blocks of the updated operating code and thereby generates an update package comprising an instruction set which indicates how to generate the updated operating code utilizing at least in part the plurality of data blocks of the resident operating code.
- the system further comprises a distribution system that includes the update package and is accessible by each of the plurality of distributed electronic devices.
- the system further comprises a plurality of client modules that are respectively resident on each of the plurality of distributed electronic set, wherein the plurality of client modules accesses the distribution system so as to be able to receive the update package, wherein the instruction set provides instructions to the client modules such that the client modules generates at least a portion of the plurality of data blocks comprising the updating operating code by utilizing the plurality of data blocks comprising the resident operating code.
- the invention comprises a system for updating a plurality of distributed electronic devices with an updated operating code that comprises a plurality of data blocks wherein each of the plurality of distributed electronic devices include a resident operating code that is stored as plurality of data blocks.
- the system further comprises an update generator that compares the plurality of data blocks of the resident operating code with the plurality of data blocks of the updated operating code and thereby identifies update data blocks that are different between the update operating code and the resident operating code wherein the update generator generates an update package comprising an instruction set which indicates how to transform the resident operating code into the updated operating code and how to generate the update data blocks utilizing at least in part the plurality of data blocks of the resident operating code.
- the system further comprises a distribution system that includes the update package and is accessible by each of the plurality of distributed electronic devices.
- the system further comprises a plurality of client modules that are respectively resident on each of the plurality of distributed electronic set, wherein the plurality of client modules accesses the distribution system so as to be able to receive the update package, wherein the instruction set provides instructions to the client modules such that the client modules modifies the resident operating code into the updated operating code and wherein the client modules generates at least a portion of the update data blocks by utilizing the received instruction set to perform operations on the data blocks of the resident operating code to generate the update data blocks.
- the invention comprises a method of updating a resident operating code stored in a first storage section of an electronic device into an updated operating code.
- the method further comprises the step of developing an update package comprising a plurality of transformation operations to transform the resident operating code into the updated operating code.
- the method further comprises the step of transferring the update package to the electrical device.
- the method further comprises the step of copying a portion of the resident operating code into a second storage section.
- the method further comprises the step of updating the portion of the resident operating code stored in the second storage section using the transformation operations of the update package to transform the resident operating code into updated operating code.
- the method further comprises the step of replacing the portion of resident operating code stored in the first storage section with the portion of updated operating code stored in the second storage section.
- the method further comprises the step of repeating steps of copying, updating, and replacing noted above until the resident operating code has been fully updated to the updated operating code.
- the invention comprises an updatable electronic device comprising a non-volatile storage section having operating code stored therein, a volatile storage section that is adapted to receive an update package comprising a plurality of instructions via a communications medium, and a controller that implements the instructions of the update package to update the operating code stored in the non-volatile storage section.
- the controller is configured to sequentially (i) retrieve original portions of operating code from the non-volatile storage section into the volatile storage section and (ii) apply the instructions of the update package to the retrieved portions in the volatile storage section to thereby transform the retrieved original operating code portion into an updated operating code portion and then (iii) replace the original operating code portion with the updated operating code portion.
- FIG. 1A is a block diagram illustrating one embodiment of an update management and distribution system.
- FIG. 1B is a block diagram illustrating another embodiment of an update management and distribution system including an update server array.
- FIG. 1C is a block diagram illustrating another embodiment of an update management and distribution system including an update server array having an update store and an update device server.
- FIG. 1D is a block diagram illustrating another embodiment of an update distribution system including an update server array having an update store and a plurality of update device servers.
- FIG. 2A is a flowchart illustrating one embodiment of an update installation process.
- FIG. 2B is a flowchart illustrating another embodiment of an update installation process.
- FIG. 3 is a flowchart illustrating one embodiment of an update creation process.
- FIG. 4 illustrates one embodiment of a hash array.
- FIG. 5 is a flowchart illustrating one embodiment of an instruction set generation process.
- FIG. 6A illustrates one embodiment of a run length encoding instruction.
- FIG. 6B illustrates one embodiment of an existing sequence instruction.
- FIG. 6C illustrates one embodiment of a hash instruction.
- FIG. 6D illustrates one embodiment of a default instruction.
- FIG. 7 illustrates one embodiment of a reconstructed digital information sequence.
- FIG. 8A illustrates one embodiment of an exemplary memory or storage architecture.
- FIG. 8B illustrates one embodiment of a non-volatile memory or storage area.
- FIG. 9 is a flowchart illustrating one embodiment of a bank-by-bank update method.
- FIG. 10 illustrates one embodiment of the application of an update package using the bank-by-bank update process.
- FIG. 11 is a flowchart illustrating one embodiment of a fault tolerance process.
- FIG. 12 is a flowchart illustrating one embodiment of a signature creation and authentication process.
- FIG. 1A illustrates one embodiment of an update distribution system 100 .
- the update distribution system 100 includes an update generator 102 and a client device 104 .
- the update generator 102 receives a first code version 106 , such as an old version of a software application, and a second code version 108 , such as a new version of a software application.
- the update generator 102 produces an update package 110 comprising an instruction set which represents a plurality of operations that are desirably used to transform the first original code version 106 into the second updated code version.
- the update package 110 is then transferred to a client device 104 via a communications medium.
- Viable communications media may include hardwired media, removable storage media, wireless media, volatile and non-volatile memory based media, and the Internet.
- Other communications media may include by way of example, local area networks (LANs), wide area networks (WANs), public Internets, private Internets, a private computer network, a secure Internet, a private network, a public network, a value-added network, interactive television networks, wireless data transmission networks, two-way cable networks, interactive kiosk networks, and the like.
- the client device 104 may comprise numerous types of devices capable of receiving and processing the update package 110 , such as computers, personal digital assistants (PDAs), hardwired phones, mobile phones, pagers, electronic peripheral devices, appliances, and other such devices capable of being configured to receive the update package.
- PDAs personal digital assistants
- the instruction set utilizes a conversion process employed by the client device 104 to efficiently convert the existing first code version 106 to the second code version 108 .
- the instruction set and the implementation of the conversion process will be discussed in greater detail herein below.
- At least one method by which the client device 104 may securely and reliably obtain the update package 110 from the update generator 102 may occur by transfer of information in the form of the update package 110 through at least one of the above-mentioned communications media types.
- the client device 104 may further be equipped with the capability to bi-directionally communicate with the update generator 102 .
- the client device 104 transfers identity information, including type, model, and/or make of the device, as well as the version of operational software or applications currently in use by the client device 104 .
- the update generator 102 receives the identity information from the client device 104 and subsequently generates the desired update package 110 required and/or requested by the client device 104 .
- the update generator 102 may be equipped with the ability to generate and provide a plurality of update packages 110 , which reference a plurality of operational software versions or applications, prior to receiving the identity information.
- the update generator 102 may retrieve from memory or storage an archived version of the desired update package 110 a.
- the update generator 102 may create a version manifest, which comprises a list of archived update packages 110 including operational software version information for a wide range of particular client devices 104 . Once the update package 110 is generated, validated, and deemed available, the update generator 102 may function as a server and transfer the desired update package 110 to the client device 104 as requested or required. It will be appreciated that one or more update packages 110 may be generated and archived as updated versions of operational software become available.
- update packages 110 can be prepared for use with hardware update systems, such as may be required, for example, to update non-volatile memory components or portable electronic devices.
- One desirable feature of the update management system is that it may be readily adapted for use in wireless update procedures or over the air (OTA) updating.
- OTA over the air
- This method allows updates for software or firmware components in devices without hardware changes.
- the updating methods described herein can further be used to update a client device including applications, operational functionality, operating system software and the like.
- the updating operations can correct errors or problems with existing code resident in the device, add new features or functionality, change or modify resident applications, or perform other desired update operations in a manner that will be described in greater detail herein below.
- the update generator 102 comprises a single computing device or server component which is responsible for both generating and distributing update packages 110 .
- the update generator 102 is equipped to run specialized software to construct the instruction set of the update package 110 for the client device 104 .
- the update generator 102 creates the update package 110 by comparing the first code version 106 to the second code version 108 .
- the update package 110 desirably includes mathematical operations and instructions coded into the instruction set which transform the first code version 106 into the second code version 108 .
- a principle feature of the update management system is that update packages 110 are generated in such a way so as to utilize existing code or information resident on the device.
- the methods for update package generation are specifically designed to analyze the differences between the code versions 106 , 108 and make use of existing information sequences in the device when possible to transform the first code version 106 into the second code version 108 .
- This feature is significant in that it significantly reduces the size of the update package compared to conventional methods.
- the file size of the update package 1107 may be reduced by more than 90 percent with respect to the first code version 106 .
- the update package 110 since the file size of the update package 110 is relatively small and compact, the update package 110 may be easily transferred and stored in a memory component of the client device 104 without significantly altering the memory allocation size and bandwidth specifications of the client device 104 .
- the update generator 102 generates and archives a plurality of update packages 110 for distribution to one or more different types of client devices 104 . Each client device 104 may then request transfer of the desired update package 110 which is selectively sent by the server.
- FIG. 1B illustrates another embodiment of an update distribution system 120 .
- the update distribution system 120 is similar in scope and functionality to the update distribution system 100 of FIG. 1A except that the update distribution system 120 is illustrated with separate computing components including an update server array 122 .
- the update distribution system 120 includes the update generator 102 , the update server array 122 , and a plurality of client devices 104 a, 104 b, 104 c.
- the update generator 102 is shown to generate the plurality of update packages 110 a, 110 b, 110 c and transfer the plurality of update packages 110 a, 110 b, 110 c to the update server array 122 .
- the update server array 122 subsequently transfers the plurality of update packages 110 a , 110 b , 110 c to the plurality of client devices 104 a , 104 b , 104 c.
- the update server array 122 comprises one or more computing devices, which may be configured to store and archive the plurality of update packages 110 a , 110 b , 110 c transferred from the update generator 100 .
- Storage components include, but are not limited to, hard drives, magnetic tape drives, random access memory (RAM), read only memory (ROM), and removable RAM and/or ROM-based storage media including compact discs, floppy disks, magnetic tape.
- the update server array 122 may be equipped with the capability to independently and bi-directionally communicate with the plurality of client devices 104 a , 104 b , 104 c , wherein the update server array 122 receives identity information, including, type, model, and make of the device, and version of operational software or firmware currently in use on client devices 104 a , 104 b , 104 c .
- the client devices 104 a , 104 b , 104 c may request update packages 110 a , 110 b , 110 c as needed or desired.
- the update server array 122 receives the identity information from individual client devices 104 a , 104 b , 104 c along with a request for transfer of a specified update package 110 a , 110 b , 110 c .
- the update server array 122 subsequently locates the requested archived update packages and transfers the requested update package to the client device.
- the update server array 122 may further automatically transfer the update package 110 to the client device 104 without a request from the client device 104 .
- the update server array 122 may coordinate the transfer of a plurality of update packages 110 a , 110 b , 110 c to the plurality of client devices 104 a , 104 b , 104 c through at least one of the various above-mentioned communication media types for the purpose of increased flexibility and efficiency of update distribution.
- the update server array 122 After receiving the identity information from at least one of the plurality of client devices 104 a , 104 b , 104 c , the update server array 122 retrieves from memory or storage archive the required version of the update packages 110 a , 110 b , 110 c and subsequently transfers the desired update package 110 a , 110 b , 110 c to the particular client device 104 a , 104 b , 104 c . In one embodiment, the update server array 122 may automatically transfer the update packages 110 a , 110 b , 110 c to the client devices 104 a , 104 b , 104 c without a request from the client devices 104 a , 104 b , 104 c.
- the update server array 122 may create a server manifest comprising a list of archived update packages 110 a , 110 b , 110 c including operational software version information, which pertain to a wide range of particular client devices 104 a , 104 b , 104 c depending on the identity, make, and model of the client devices 104 a , 104 b , 104 c .
- the update server array 122 may transfer the server manifest to the one or more client devices 104 a , 104 b , 104 c .
- the one or more client devices 104 a , 104 b , 104 c then review the manifest and submit a request for the update package 110 a , 110 b , 110 c to be transferred from the update server array 122 to the one or more client devices 104 a , 104 b , 104 c making the request.
- the update package 110 may be sent from the update generator 100 to the update server array 122 through at least one of the above-mentioned communications media, which promotes increased availability of the update packages 110 a , 110 b , 110 c to the one or more client devices 104 a , 104 b , 104 c .
- the update server array 122 is a multi-platform computing device capable of conveniently storing a plurality of update packages 110 a , 110 b , 110 c for the various client-based devices 104 a , 104 b , 104 c and independently establishes communication with each client device 104 a , 104 b , 104 c .
- the update server array 122 may recognize the one or more client devices 104 a , 104 b , 104 c to determine the required and/or desired update packages 110 a , 110 b , 110 c needed by the one or more client devices 104 a , 104 b , 104 c .
- the update package 110 may be sent to the client device 104 and further processed by the client device 104 using software components capable of decoding the update package 110
- update server array 122 and update generator 102 may comprise a singular entity with the necessary scope and functionality to serve as both the update server array 122 and the update generator 102 .
- the update computing architecture of the update server array 122 includes an additional component referred to as a collector, which collects information and updates for other devices capable of being updated using at least one of the update packages 110 a , 110 b , 110 c generated by the update generator 102 .
- the collector may communicate with both the update server array 122 and the one or more client devices 104 a , 104 b , 104 c to determine which client devices 104 a , 104 b , 104 c require updating and if any updates are available.
- the collector may additionally acquire the necessary updates and, at that time or at a later time, distribute them to the client devices 104 a , 104 b , 104 c .
- the large numbers of client devices 104 a , 104 b , 104 c may be subsequently updated in such a way to distribute the bandwidth requirements over the update server array 122 .
- the update packages 110 may be scheduled for delivery at various times to stagger the distribution load so that the servers are not overrun by simultaneous update requests from large numbers of client devices.
- this method of distributing updates comprises caching the information on one or more servers to scale down network traffic.
- the ‘latest’ update files can be stored on the servers and the update packages can be downloaded from the device servers directly by client/server communications without the need for additional communication between the server and the update store 133 or the update generator 102 .
- FIG. 1C illustrates still another embodiment of an update distribution system 130 .
- the update distribution system 130 includes the update generator 102 , the plurality of client devices 104 a , 104 b , 104 c , and a component version of the update server array 132 that was previously illustrated in FIG. 1B.
- the component version of the update server array 132 further comprises an update store 133 , having a management component 134 , and at least one update device server 136 .
- the update store 133 archives a plurality of update packages transferred from the update generator 102 .
- the update generator 102 generates update packages as newer versions of operational system software become available and then transfers the plurality of update packages to the update store 133 for storage and archiving in a memory or storage component.
- the update management system may be used in conjunction with over the air updating of portable electronic devices, such as cellular or mobile phones.
- Mobile communications technology is a rapidly changing field which strives to meet the rising demands and expectations of its users.
- Mobile phones are also micro-computing devices utilizing integrated operational system software.
- the operating software throughout the life of the mobile phone, may require periodic software updates for increased adaptability to changes in wireless communications technology. Updating in the mobile communications industry is complicated by the presence of many different manufacturing entities with each having their own operational software systems and user functionality being integrated into various makes and models of mobile phones.
- the update generator 102 is capable of meeting the adaptive demands of industry by generating a proper update package 110 a , 110 b , 110 c relative to the newer versions of operational software onboard the client devices 104 a , 104 b , 104 c , which pertain to the particular manufacturer's make and model of the mobile communications device.
- the client device 104 establishes a communication link with the update store 133 and transfers identity information including, type, model, and make of the device, and code version currently being used by the client device 104 .
- the update store 133 responds by transferring the server manifest, to the client.
- the server manifest contains version information describing available update packages.
- the server manifest may describe the update package characteristics such as file size so that the client can determine if enough space is available in the client storage area to receive and unpack the update package.
- a request for the appropriate update package 110 may be submitted by the client device 104 .
- the update store 133 Upon receive the request the update store 133 references and searches for the desired update package 110 , which corresponds to the correct instruction set for proper conversion of the older code version to the requested newer code version.
- the update store 133 receives the request submission, and the update management component 134 processes the request submission, and locates the desired update package 110 on the update store 133 or the update device servers 136 . Once the particular update package 110 has been located, the update management component 134 references the desired update package 110 and directs the update device server 136 to establish a communication link with the client device 104 to transfer the desired update package 110 to the client device 104 .
- the client device 104 establishes a communication link with the update device server 136 and transfers identity information including, type, model, and/or make of the device, as well as version of operational system software currently being used by the client device 104 .
- the update device server 136 a analyzes the identity information and checks the server manifest or queries the update store 133 for the presence of the update package 110 . After comparing the available versions of operational software on the server manifest or update store 133 to the onboard version of operational software transferred by the client device 104 , the update store 133 directs the transfer of the update package 110 to the client device 104 .
- the update package 110 is transferred from the update store 133 to the update device server(s) 136 for distribution to client devices 104 as requested.
- the update device server(s) 136 acts as gateways which transfer the update packages 110 to clients as requested by the update store 133 .
- Use of the update device server(s) 136 desirably improves load balancing and reduces bandwidth limitations imposed by having many client devices 104 connected to the same update package provider.
- the update management component 134 may transfer a request to the update generator 102 to generate the particular update package 110 .
- the update generator 102 transfers the update package 110 to the update store 133 for storage and request servicing.
- the update management component 134 may transfer the desired update package 110 to the update device server 136 .
- the update device server 136 may establish communication with the client device 104 b and transfer the requested update package to the client device 104 .
- FIG. 1D illustrates yet another embodiment of an update distribution system 140 .
- the update distribution system 140 includes the update generator 102 , a plurality of client devices 104 a , 104 b , 104 c , 104 d , 104 e , 104 f , 104 g , 104 h , 104 i , and another embodiment of a component version of the update server array 142 that is similar in scope and functionality of the update server array 122 as illustrated in FIG. 1C.
- the update server array 142 includes the update store 133 , comprising the update management component 132 , and a plurality of update device servers 136 a , 136 b , 136 c .
- the plurality of update device servers 136 a , 136 b , 136 c are capable of establishing a communication link with the client devices 104 a - 104 i and may bi-directionally communicate with the client devices 104 a - 104 i to send or receive version or manifest information.
- This particular embodiment illustrates that the update management component 134 of the update store 133 may communicate and coordinate the activities of a plurality of update device servers 136 a , 136 b , 136 c and direct the transfer of a plurality of archived update packages to the plurality of update device servers 136 a , 136 b , 136 c .
- this particular embodiment illustrates the flexibility, effectiveness, and efficiency of the update distribution systems 100 , 120 , 130 , 140 to distribute a large quantity of update packages 104 over one or more hardwired or wireless communications mediums, such as the Internet or wireless local area networks (WLAN).
- This embodiment of the update distribution system 140 can desirably service the update requirements for a plurality of different client services.
- the update distribution system 140 can utilize a plurality of different communications means to exchange information and update packages with the client devices.
- FIG. 2A illustrates an overview of an update query, retrieval and installation process or update installation process 200 that details the communication between the client devices and the update distribution system 140 .
- the update installation process 200 commences in a start state 202 and subsequently proceeds to a state 204 , where the client device 104 establishes a communication link with the update device server 136 .
- the update installation process 200 then proceeds to a state 206 where the client device 104 polls the update device server 136 for the server manifest.
- the server manifest may be transferred from the update store 133 to the update device server 136 , or the update device server 136 may retain the sever manifest in an onboard memory or storage component for ease of reference.
- the polled server manifest comprises information used to determine the latest available version of the software, file system, or hardware to be updated. Additionally the server manifest may contain information that describes the size of the update package and other variables used to determine whether an available update is different from the existing file, software component, or firmware present in the client device 104 . The polled server manifest may further include an update signature which identifies characteristics of the new code version.
- the update installation process advances to a state 208 where the client device 104 compares the update signature in the server manifest with that of the existing operational software present on the client device 104 .
- a comparison process may be used by the client device 104 to determine, in a state 210 , if the update package 104 should be downloaded from the update device server 136 and installed on the client device 104 .
- the update installation process 200 advances to the state 210 . If the client device 104 determines that an update version of the operational software is not desired, needed, or required in the state 210 , the update installation process 200 terminates in an end state 220 and may remain inactive until the next scheduled or user-prompted activation.
- the client device 104 determines that an update version of the operational software is desired in a state 210 , then the client device 104 requests the update package 110 from the update device server 136 in a state 212 .
- the update device server 136 transfers the request for the update package 110 to the update store 133 , where the update management component 134 searches the update store 133 for an available version of the desired update package 110 .
- the archived version of the desired update package 110 is determined to exist and is available, then the desired update package 110 is retrieved from the archival memory or storage area of the update store 133 and transferred to the update device server 136 if necessary.
- the update device server 136 transfers the desired update package 110 to the client device 104 .
- the client device 104 receives the update package 110 , and the update installation process advances to a state 216 where the client device 104 subsequently installs the update package 110 . Aspects of the installation operation will be discussed in greater detail herein below.
- the update management component 134 when in the state 214 , if the update management component 134 determines that the archived version of the desired update package 110 does not exist or is unavailable, then the update management component 134 sends a request for the desired update package 110 to be generated by the update generator 102 .
- the client device may wait for the desired update package 110 to become available. While the client device 104 waits, the update generator 102 produces the desired update package 110 and transfers the update package 110 to the update store 133 .
- the client device 104 receives the desired update package 110 for the subsequent installation in the state 216 .
- the installation operation 216 will be discussed in greater detail herein below.
- the update installation process 200 terminates in the end state 218 .
- the client device 104 may proceed to check for additional updates that may be desirably applied to other file or operational software components.
- the update installation process 200 may be repeated periodically as needed or desired for additional update queries.
- the update installation process 200 will check for the availability of an additional version (i.e. version 3) from the update store 133 and proceed to retrieve and install these incremental updates until the file of software component has been updated to the most current version available.
- the update installation process 200 may recognize the presence of multiple available updates (versions) and proceed to update the file or component using the most current version available without sequentially applying each possible update package (i.e. version 1 updated directly to version 3). Following completion of the update cycle for a particular file or software component, the update installation process 200 may determine if other files or software components require updating. Further updates may be processed as before, beginning with the comparison of the update signature state 208 until all files have been updated, and wherein the client device 104 may terminate its operation in the end state 216 and remain inactive until the next activation of the update installation process 200 .
- the client device 104 may be configured to query and retrieve updates automatically, or alternatively the update process may be a user initiated function.
- the above-mentioned update installation process 200 may be simultaneously and/or separately applied to one or more client devices through one or more update device servers without departing from the scope of the present invention. Furthermore, the above-mentioned update installation process 200 may be applied to any of the above-disclosed embodiments of the update distribution systems 100 , 120 , 130 , 140 using a similar sequence of steps as described in connection with FIG. 2A or 2 B.
- the update component 102 may remain active in the background until the next scheduled operation or alternatively be activated at the time that the update installation process 200 is desirably initiated.
- the activities comprising the update installation process 200 may further be visible or transparent to the user, according to the developer's preference.
- the client devices 104 may notify the user that an update is available and wait for permission to retrieve the update or alternatively, the client device may be configured to automatically retrieve the desired update package (either with or without notifying the user).
- FIG. 2B illustrates another embodiment of an update installation process 250 that may be used in connection with the aforementioned update distribution systems described in FIGS. 1A and 1D.
- the update installation process 250 commences in a start state 252 and subsequently proceeds to a state 254 , where the client device 104 establishes a communication link with the update device server 136 . Subsequently, the update installation process 250 proceeds to a state 256 where the update device sever 136 requests an update information query from the client device 104 .
- the update information query includes identity information, such as type, model, and make of the device, and version of operational software currently being used by the client device 104 . In one embodiment, the identity information may be automatically transferred from the client device 104 to the update device server 136 upon establishing the communication link. Additionally, the update information query may also include the update signature which identifies the characteristics of a particular file or update component in the new code version.
- the client device 104 When the update information query is transferred to and obtained by the client device 104 , the client device 104 responds by transferring the requested update information in the query to the client device 104 .
- the update installation process 250 then advances to a state 258 where the client device 104 receives and processes the update information query by comparing the update signature of the new code version of the with that of the existing code version currently in use by the client device 104 .
- a comparison process may be used by the client device 104 to determine, in the state 258 , if the update package 104 should be transferred from the update store 133 and installed on the client device 104 .
- the update installation process 250 advances to a state 260 where the update client device 104 determines the availability of the update package 110 from the update information response. If a newer code version is not available in the update store 133 , then the update installation process 250 terminates in an end state 280 , and the update installation process 250 may remain inactive until the next scheduled or user-prompted activation.
- the client device 104 may further determine, in a state 262 , from the update information query whether or not the client device 104 has enough memory available to store the update package 110 . If the client device 104 determines that enough memory or storage space is available in the client device 104 for the update package 110 , then the update device server 136 processes the client update request in a state 264 . The update device server 136 then transfers the update package 110 to the client device 104 in a state 266 .
- the update installation process After receipt of the update package 110 , the update installation process advances to a state 268 where the client device 104 installs the update package 110 .
- the update installation process 250 is then terminated in an end state 280 until another update request is made. Additionally, details of the update package installation procedure will discussed in connection with FIG. 10 herein below.
- the client device 104 determines that there is not enough memory or storage space available or allocated in the client device 104 to accommodate the update package 110 , then the client device 104 submits a request, in a state 270 to perform an allocation procedure where additional memory or storage space is freed up to accommodate the download transfer of the update package 110 .
- the client device 104 may write current files stored in a first data area (i.e. RAM) to a second data area (i.e. onboard flash memory).
- the client device 104 may compress the files stored in the first data area to make more space available for the update package.
- the client device 104 may transfer files to the update device server 136 for temporary storage until the update package 110 is installed. It will be appreciated that a combination of the aforementioned memory allocation schemes may be used to create sufficient room to receive the update package 110 . Additionally, other memory allocation schemes may be used without departing from the scope of the present invention.
- the update installation process 250 advances to a state 272 , where, if enough space is made available on the client device 104 for the download transfer, then the update installation process proceeds to the state 264 for the subsequent update request 264 , update transfer and reception 266 , and update installation 268 . Otherwise, the update installation process proceeds to terminate in the end state 280 , due to the determination by the update device server 136 that there is not enough space allocated on the client device 104 to accommodate the download transfer of the update package 110 .
- the update device server 136 may send the update package 110 to the client device 104 in subsections to accommodate the space limitations of the client device 104 . The subsections are applied sequentially to complete the update process using a limited amount of available space on the client device 104 .
- the installation procedure performs authentication and validation of the integrity of the update package 110 by the client device 104 . Thereafter, the update package is saved to non-volatile memory or storage on the client device 104 and the client device 104 is rebooted if necessary. Subsequently, the update package 110 is then decompressed and the instruction set is executed to initiate the installation of the update. It should be appreciated that the above-mentioned installation procedure may be altered or rearranged without departing from the scope of the present invention.
- update packages 110 are made available to the update server array 122 , 132 , 142 and subsequently to the requesting client devices 104 through the use of an update generator 102 and associated processes.
- FIG. 3 illustrates an update creation process 300 used to form the update package 110 .
- the update creation process 300 uses configuration parameters associated with the update generator 102 and information present in the existing code version, which is desirably updated to a newer code version.
- the update creation process 300 commences in a start state 302 and advances to a state 304 , wherein an existing file, comprising the current code version is opened.
- the current code version comprises a file or image that is a representation of the information contained in the electronic device to be updated.
- the current code version reflects the binary code or encoded information stored in the device which is identified and stored in the form of an image file.
- the current code version may reflect the contents of the memory or storage area to be updated.
- the contents of the memory or storage area may further comprise the operating system code, application code, firmware contents, or other instruction sets used by the electronic device to convey functionality.
- Updates are generated using images or simulated representations of the memory or storage area to be updated. Update operations need not operate at the instructional level but rather can operate at a high level (i.e. a file level) or at a lower level (where information comprising the instructions is represented in binary, hexadecimal, or other similar forms).
- the update process therefore recognizes the current code version based on a digital information sequence comprising a designated word sequence or pattern.
- the size or length of the work may be flexibly defined as a bit, byte, instruction, file, or other informational sequence which is subsequently compared to the desired code version represented by a second word sequence and differences between the two sequences are identified.
- the update process is not necessarily limited to a particular convention such as determining which instructions need to be replaced to obtain the desired code version, but rather, what word sequences should be changed to transform the existing code version into the desired code version.
- the update generator 102 Upon opening the image of the current code version the update generator 102 subsequently compiles a collection of digital information sequences from the image for use in a state 306 .
- the collection of digital information sequences may be used to generate an image representing the desired the second code version 108 . Details of how this collection of digital information sequences is used in instruction set generation and subsequent modification of the existing code version into the new code version will be described in greater detail with reference to FIGS. 5 and 6.
- the update generator 102 pre-processes the existing image by searching for digital information sequences that will be used to build a hash table.
- the hash table includes a plurality of hash values that comprise addresses of particular digital sequences in the first code version that are stored in a data structure for subsequent lookup and retrieval.
- the hash values correspond to digital information sequences in the existing image, which may be used to build the newer code version.
- the hash array is formed from the existing code version and identifies strings of digital information sequences in the existing code version. Further details of the hash array will be discussed in connection with FIG. 4 below.
- the update creation process 300 proceeds to a state 308 where a new file is opened that will be used to store the instructions used to transform the first code version into the second code version.
- the new file eventually become the update package 110 which is made available to the servers for transfer to the clients when updating is requested or desired.
- the update creation process 300 then advances to a state 310 where the update package 110 is generated.
- the instruction set is formed using a plurality of sequence identification and transformation functions that identify operations, instructions, parameters, or digital information sequences which, when executed in an appropriate manner, will transform the existing code version into the updated code version in an efficient manner.
- the informational composition and sequence of the existing code version is assessed and instructions are identified to transform the existing code version into the new code version.
- the update creation process 300 proceeds to a state 312 where the generated instruction set may be encoded to provide a degree of security that prevents unauthorized access to the contents of the update instruction set. Additionally, the instruction set may be further compressed by utilizing various compression schemes, such as LZW compression, to reduce the overall size of the resulting update package 110 .
- the compressed/encoded instruction set is then as the update package 110 in state 314 and may include stored header information, which is used to validate the contents of the update package 110 , identify the version of the update, and ⁇ or similar functions.
- the update package 110 may further be transferred to the plurality of update device servers 136 a , 136 b , 136 c in a state 314 , where the update package 110 is published and made accessible to the plurality of client devices 104 a - 104 i for downloading. After saving/publishing the update package 110 , the update generation process 300 terminates in an end state 316 .
- FIG. 4 illustrates one embodiment of a hash array 330 discussed in connection with FIG. 3 above.
- the hash array 330 comprises a plurality of hash values 340 - 343 that are used to store and reference one or more addresses 350 - 356 , which correspond to the position of a plurality of digital information sequences or words 360 - 366 .
- the digital information sequences or words comprise words having known lengths or sizes.
- Each word 360 - 366 may further comprise one or more bits, bytes, or other recognizable quantum of information.
- the word length used in the update process need not necessarily be fixed and may instead be flexibly assigned as determined by the update management system or the manner in which information is stored in the electronic device.
- the length of the words 360 - 366 for which hash values 340 - 343 are calculated is selected to be of a length recognized by the architecture of the electronic device. These hash values 340 - 343 are stored in the hash array. 330 and used by the update generator to determine if a desired word required in the updated code version can be obtained from the current code image.
- the length of the words 360 - 366 used in creating the hash value 340 - 343 is selected to have a discrete word length comprising one or more bits, bytes, or other commonly used quantum of information. It will be appreciated however, that other word lengths can readily be used in generating the hash value 340 - 343 .
- the update generator can create a summary or database of words that can be found in the existing code version which may be copied and utilized in forming the new code version. Additional details of the implementation of the hash table and its use in generating the update package 110 will be described in greater detail in FIGS. 6 A- 6 H herein below.
- the hash values of the hash array 330 are used to reference the words comprising the words by referring to the starting address for a particular sequence that is identified as desirably containing a string of information that can be used in construction of the new code version.
- the addresses 350 - 356 are saved into the data structure of the hash array 330 as the calculated hash values 340 - 343 which are referenced by the update generator 102 to form instructions that reference existing code section used during the update process.
- the update generator 102 assigns hash values for particular words that comprise distinct or desirable digital sequence characteristics, such as a unique sequences, frequently encountered sequences, and/or a difficult to reconstruct sequences.
- the primary function of the hash array 330 is to efficiently locate ‘identical’ word between a target sequence (e.g. a sequence required in the updated code version) and a source sequence (e.g. a sequence presently located in the existing code version).
- the hash array 330 is further used to determine the start address for the ‘identical’ word in the existing code version so that this word can be ‘recycled’ or ‘reused’ in the updated code version.
- words that are identified to already exist in the code need not be included in the update package but rather one or more instructions may instead be used to retrieve and/or copy the existing word information into new locations in the updated code.
- This feature substantially reduces the required size of the update package 110 as the instructions used are typically smaller than the corresponding sequence for which they identify. It will be appreciated that each hash value 240 - 343 may be accessed numerous times to generate the same word in one or more locations and can be used as needed to efficiently generate required words.
- One desirable feature of the hash array 330 is that it serves as a “dictionary” of available digital information sequences or words present in the existing code version.
- the update generator uses these code sequences or words to produce the new code version by rearranging and copying this information.
- the update package is desirably reduced in size as instructions for code copying and rearrangement are typically significantly smaller in size compared to the literal code sequence or word.
- a single instruction may be able to produce code equivalent to many bits or bytes of information.
- the address “a” corresponds to the address where a word 360 corresponding to the bit sequence “110010” can be found in the previous code version.
- the code generator may specify an instruction that desirably accesses this index 340 in the hash array 330 and furthermore may specify a length of information that is to be copied from the word at this location.
- bit sequences which may be obtained from the word at address “a” include “1”, “11”, “110”, “1100”, “11001”, “110010”, and so forth.
- the word at address “b” may be used to generate bit sequences including “1”, “10”, “101”, “1010”, “10100”, “101000”, “1010001”, “10100011”, and so.
- the amount of information which must be contained in the update package 110 is desirably minimized.
- the sequence corresponding to each word which is addressed by way of example may instead represent other quantum of information including one or more bits, bytes, files or other recognized sizes and lengths of information. It will therefore be appreciated that these other configurations of information can be addressed in a similar manner (ie., bit-wise addressing, byte-wise addressing, file-wise addressing, etc.)
- one or more words can be formed by linking information located at various addresses.
- the hash value 342 corresponds to the linked addresses “d”, “k”, and “s” with each address associated with a particular work 362 - 364 .
- variable portions of each word from each address may be concatenated together to generate still further combinations of word patterns.
- the addresses for a particular hash value are associated using a linked list data structure. The association of addresses can be used to concatenate information located in close logical proximity as shown for the hash value 342 and may further associate disparately arranged information as shown by the hash value 343 .
- This hash value 343 comprises the addresses “h” and “w” for the words 365 , 366 respectively which may be located in different sections of the memory or storage area that are desirably associated to form digital information sequences resulting from the combination of information located at these addresses.
- the hash value 343 may also be formed in a manner such that sequential row or bank numbers of the memory or storage area are arranged to create the desired sequence of information. For example a first bank number may correspond to a first address in the hash value 343 , a second bank number may correspond to a second bank address, and so forth. It will be appreciated that the concatenation of address information may be applied in many different combinations using a plurality of addresses to generate large numbers of possible informational sequences that can be used to form the new code version. Additional details of the memory or storage bank arrangement, the formation and configuration of the instruction set using hash values 340 - 343 , and the resultant generation of desirable digital information sequences using existing code will be described in greater detail herein below.
- FIG. 5 illustrates one embodiment of an instruction set generation process 400 , which is used by the update generator 102 to generate the instruction set used to convert the first code version into the second code version.
- this process 400 functionally describes the manner in which the instructions are selected for use in the update package 110 .
- This process 400 further identifies a plurality of instructions that perform the code conversion or version update in an efficient manner.
- the instruction set generation sequence 400 assesses numerous combinations of instructions that may be used to perform the code conversion and desirably identifies instructional combinations that reduce the amount of information that must be included in the update package 110 . This in turn reduces the size of the update package 110 and reduces the transmission time needed to send the update package 110 .
- the previous code version is desirably transformed into the new code version in a manner that further reduces the amount of information that must be included in the update package 110 .
- the instruction set generation sequence 400 commences in a start state 402 and then advances to a state 404 where the update generator 102 initializes a pointer corresponding to the beginning of the existing file or code version.
- the pointer maintains a reference position that may used by the sequence analysis functions to determine when the digital information sequence analysis is complete.
- the digital information sequence analysis comprises a plurality of comparison functions each used to analyze a corresponding instruction type. These instructions may include an existing sequence instruction, a run length instruction, a hash instruction, and a default instruction. It will be appreciated that the aforementioned instructions and corresponding comparison functions are but several of many possible instructions that may be used in the instruction set generation sequence and other instructions may be devised and used in conjunction with the update management system and methods.
- the comparison functions are applied against the code corresponding to location where the pointer indicates and a determination is made as to how much new code can be generated using each of the instructions related to the comparison functions.
- the comparison functions use the instructions to provide a separate method for representing particular code fragments.
- one instruction will provide better performance than another instruction depending on the code composition. For example, based on a given code sequence present within the existing code version at the location of the pointer, the existing sequence may be able to translate 3 words of information, the run length function 5 words of information and the hash sequence function 8 words of information.
- the process identifies which of the comparison function exhibits the best characteristics relative to the other comparison functions.
- the best result is identified as the comparison function that generates the largest code sequence using a single instruction or group, of instructions.
- the hash sequence function exhibits the longest word representation (8 words) and would be preferentially selected over the other comparison functions which translate less code relative to the hash sequence function.
- one of the other comparison functions may be more desirable and have the ability to translate a larger code section relative to the other comparison functions.
- the process 400 proceeds to a state 410 where a determination is made as to whether or not the identified comparison produces an efficient result.
- efficiency is measured as a function of the amount of code that can be represented by a single instruction.
- a threshold of efficiency is used to insure that the identified “best result” is at least as efficient or more efficient than a default instruction function comprising incorporating the literal string directly into the update package 110 . If the identified best result function is more efficient than the default instruction then the instruction coding for the information sequence coded by the comparison function is incorporated into the update package 110 and the pointer is updated to the first section of information immediately following the code translated by the comparison function in a state 412 . Otherwise, if the default instruction is determined to be more efficient than the “best result” function, then the default instruction is included in the update package 110 in state 414 and the pointer updated in a similar manner in state 412 .
- the process 400 determines if the pointer has reached the end of the file in state 416 . If the pointer has not reached the end of the file, then the process proceeds to state 406 where the sequence analysis commences for the next code section and may be repeated as necessary using the updated pointer position as a reference. In this manner, the entire file is “stepped through” by progressively incrementing the pointer as the comparison functions are successfully implemented and the most efficient instruction selected.
- the instruction set generation process 400 advances to a state 408 where the process terminated and the update package 110 comprising the selected instructions determined in the previous steps is packaged and made ready for distribution.
- the digital information sequence functions update or change the pre-existing digital information sequences in an older code version, such as the first version 106 in FIG. 1, to updated digital information sequences in the newer code version, such as the second version 108 in FIG. 1.
- the instruction set generation sequence 400 may use additional instructions for an increased conversion efficiency by providing other methods for updating the code version. Details of each of the disclosed comparison functions will be described in greater detail in connection with FIGS. 6A and 6D. In the following description and associated Figures, exemplary bit and byte sequences corresponding to different word lengths are shown. It will be appreciated that these examples represent but a few of the many possible embodiments of word lengths and sizes that may be used in conjunction with the update management system and methods.
- FIG. 6A illustrates one embodiment of a run length encoding (RLE) instruction 500 that may be used in conjunction with the aforementioned instruction set generation process 400 .
- a first word sequence 502 representative of a digital information sequences from the first code version 106
- a second word sequence 504 representative of a digital information sequence from the second code version 108 as shown.
- N specified word length
- the word length is the quantity of word components that are sequentially repeated without interruption by a different value.
- repeated word patterns can be readily reconstructed using a single instruction.
- This instruction desirably occupies less space in the update package compared to the corresponding number of words to be represented in the second code version.
- the RLE instruction 500 can further be used to specify that a particular word sequence in the first code version is overwritten or modified to form the second code version.
- the word pattern “W1,W2,W3,W4,W5,W6” in the first code version may be overwritten in the second code version to form the word pattern “W1, W1, W1, W1, W1, W1”.
- word patterns including “W1”, “W1, W1”, “W1, W1, W1”, “W1, W1, W1, W1” and so on can be generated using the RLE instruction with a different word length parameter.
- the first word sequence 502 that starts at the same particular position of the digital information sequence from the first code version 106 is replaced with a repeating word sequence of an equivalent length in the second code version.
- the RLE instruction 500 identifies word-wise repeating digital information sequences beginning at a particular position in the file code and replaces the pre-existing digital information sequence using a single instruction. Additionally, if the RLE instruction 500 is later determined to yield the “best” result, as described in the state 408 in FIG. 5 then the RLE instruction 500 for the repeating word-wise sequence 504 is stored in an instruction list along with other parameters, such as the desired number of repetitions 508 of the word.
- the instruction list represents the series of instructions that are identified by the sequence analysis and instruction set generation function 400 that is required to transform the first code version into the second code version using the update package 110 .
- RLE instruction 500 One advantage to using the RLE instruction 500 is that consecutive strings of word-wise components in the digital information sequence may be easily placed in the newer code version with a single instruction. Another advantage of using the RLE instruction 500 is that this instruction is relatively simple to execute due to the repetitive nature of the consecutive word-wise string of the second word sequence 504 , which will be used to generate the desired digital information sequence.
- N specified word length
- the EXS instruction 510 desirably comprises a word length parameter 518 which is used to determine the extent of the
- the EXS instruction 510 is used by the update generator 102 to identify the existing word sequence which remains unchanged between versions of the code and therefore does not need to be updated or altered during the update process. Furthermore, if the update generator 102 determines that the existing sequence instruction yields the “best” result during the digital information sequence analysis, then the EXS instruction 510 along with the specified word length 518 a may be stored in the instruction list along with other parameters, such as the number of repetitions of the digital information sequence.
- One advantage to using the EXS instruction 510 is that pre-existing word-wise digital information sequences which remain unchanged may be identified and a single small instruction may be incorporated into the update package 110 to reflect the similarity rather than incorporating redundant or unnecessary code.
- FIG. 6C illustrates one embodiment of a copy from address or hash (HSH) instruction 520 .
- a second word sequence 524 representative of a digital information sequence from the second code version 108 is shown by way of example.
- the hash sequence function finds words by calculating hash values for fixed length digital information sequences.
- the hash values are then compared to the hash table values. If the value of the calculated hash value matches that of a stored hash table value then the start address for the digital information sequence corresponding to the stored hash table value is obtained. When such a match has occurred, a more detailed scanning of the word at the specified address is then performed to determine the maximum length of the word which can be utilized. If the hash table contains more than one stored hash value that matches the calculated hash value, then each possibility may be evaluated and the longest match or most efficient match may be used as the result.
- the HSH instruction 520 involves a hash sequence function, wherein the update generator 102 utilizes existing word sequences referenced by addresses stored in the hash table 330 to determine digital sequence matches corresponding to calculated hash values found in the hash table data structure. For example, if the update generator 102 determines that the hash sequence function yields the “best” result of the digital information sequence analysis, then the HSH instruction 520 along with the specified address location 526 and the specified word length 528 may be stored in the instruction list along with other parameters, such as the number of repetitions of the digital information sequence.
- One advantage to using the HSH instruction 520 is that pre-existing word-wise digital information sequences may be identified in the existing code where the hash table 330 acts as a dictionary of available word.
- the HSH instruction 520 therefore reflects the ability of the update generation process to recycle code sequences or words in a novel manner rather than including these sequences or words within the update package 110 directly.
- This instruction 520 may be used to generate large sections of code by combining various code sections reflected by the addresses referenced in the hash table. For example, as shown in FIG. 6C, the word sequence “W3, W4, W5, W6, W7, W8, W9, W10” in the second code version may be desirably identified in the first code version at the address “b”.
- the HSH instruction 520 uses this address as a reference and copies the code present at this location into the desired location in the second code version.
- the instruction to perform this operation is desirably smaller in size than incorporating the literal string referenced by the address.
- FIG. 6D illustrates one embodiment of a default (DEF) instruction 532 .
- the DEF instruction 532 is applied by the instruction set generation process 400 when no other instruction can be found to efficiently represent the desired digital information sequence.
- the DEF instruction 532 is used to replace a digital information sequence from the first version 106 of operational software code with the literal contents of a string or other information sequence associated with the DEF instruction.
- the DEF instruction 530 identifies word-wise patterns of digital information sequences that do not match pre-existing digital information sequences in the file code of the first code version 106 and cannot be efficiently reconstructed using other instructions.
- the DEF instruction 530 for the patterned word-wise sequence 534 is stored in the instruction list along with the literal contents of the string or information sequence to be inserted.
- the instruction “DEF W15, W16, W17, W18, W19, W20” may be used to copy the literal contents of “W15, W16, W17, W18, W19, W20” into the desired location.
- One advantage to using the DEF instruction 530 is that non-existing strings of word-wise components in the digital information sequence may be readily inserted in the newer code version of with a single instruction that is desirably incorporated into the update package 110 .
- FIG. 7 illustrates one embodiment of a reconstructed digital information sequence 550 , wherein the reconstructed sequence 550 may be obtained using an instruction set 552 comprising a plurality of instructions used to generate portions of the sequence 550 .
- the reconstructed sequence 550 is generated using word-wise instructions.
- the process of implementing the first instruction set 552 comprises sequentially applying the instructions 500 , 510 , 520 , 530 to generate the desired word sequence 550 .
- the RLE instruction 500 Following a step-wise execution of the instructions of the instruction set, the RLE instruction 500 generates a first bit sequence in the update file, which corresponds to the run length encoded bit sequence 504 .
- the RLE instruction 500 generates the bit sequence “W1, W1, W1, W1, W1, W1, W1” based on the input parameters. Advancing to the next instruction, the EXS instruction 510 generates a second bit sequence, which corresponds to the duplicated bit sequence 514 “W1, W2, W3, W4”. The EXS instruction does not copy or alter any bits in the specified region but rather identifies the pre-existing word pattern and leaves this sequence intact.
- the subsequent HSH instruction 520 generates a third word sequence, which corresponds to the copied word sequence 524 “W3, W4, W5, W6, W7, W8, W9, W10” from the specified address “b” 526 .
- the DEF instruction 530 generates a fourth word sequence, which corresponds to the added word sequence 534 “W15, W16, W17, W18, W19, W20.”
- the DEF instruction may be used to insert one or more word patterns into the word sequence that either are not found in the existing code version or cannot be efficiently constructed using the aforementioned comparison functions.
- the illustrated reconstructed word-wise sequence 550 is but one example of the implementation of the instruction set 552 . It should be appreciated that the instruction set 552 may comprise one or more instructions 500 , 510 , 520 , 530 in various combinations that may be used to transform the existing code version into the desired code version.
- update package 110 is relatively small compared to an update package that is composed exclusively of literal digital information sequences obtained from conventional differencing methodologies. As a result, transferring the relatively small update package image across a communications medium is more efficient than transferring larger literal updates used by conventional methods.
- FIG. 8A illustrates one embodiment of the memory or storage architecture 1000 for a portable electronic device to be used in conjunction with the update management system.
- This architecture is representative of many conventional electronic devices including mobile phones, personal digital assistants, pagers, or other devices that are to be desirably updated using the update management system and methods.
- the architecture 1000 comprises a non-volatile memory or storage area 1002 and a volatile memory or storage area 1004 .
- the non-volatile area 1002 is used by the electronic device to store information in a semi-permanent state where the device may be powered down or turned off without loss of the information stored in this area 1002 .
- the non-volatile area 1002 may be further logically subdivided to contain a code section 1006 and a data section 1008 .
- the code section 1006 is responsible for storing information such as the system operating software or firmware code that provides the functionality for device operation.
- the data section 1008 stores non-essential or user-derived information or other information that may be desirably re-written or changed as necessary. In a typical mobile phone, the data section 1008 may contain information including phone numbers, addresses, or personal memos that are saved so that they may be retrieved when needed or desired without loss due to powering down of the electronic device.
- Both the code and data sections 1006 , 1008 may be accessed and written to throughout the update process to modify existing code stored therein.
- the data section 1008 also provides an area of memory or storage space that may be used during the update process to store a copy of the update package 110 when it is received by the client.
- the data section 1008 may store information during the update to provide a degree of fault tolerance should the update operation be interrupted. Details of the fault-tolerant aspects of the update process will be described in greater detail in connection with FIGS. 9 and 10.
- the non-volatile memory or storage area is illustrated as having separate code and data sections, it will be appreciated that the update methods presented herein can readily be adapted to other memory or storage configurations.
- the non-volatile storage area 1002 may comprise a hardware storage device such as a disk drive, optical drive, or other device implementation which may be used to store information in a non-volatile manner.
- the memory configuration need not be logically subdivided into separate code and data sections in order to be used with the update management system and methods. It is conceived that the aforementioned memory or storage area configuration represents but one embodiment of an architecture that may be adapted for use with the present invention and other memory or storage areas architectures and configurations can readily be adapted in a similar manner by one of skill in the art.
- the architecture of the electronic device specifies that the non-volatile memory or storage area 1002 is partitioned or logically divided into a plurality of storage banks 1010 .
- Each storage bank 1010 is representative of a discrete quantity or size of storage area and may be associated with a unique address 1012 .
- the storage banks 1010 may be individually referenced and the contents contained therein read from or written to as determined by the operating system or firmware of the electronic device.
- the contents of the storage banks 1010 may be accessed independently of the address 1012 by referring to the contents themselves wherein the contents of the banks 1010 are used as a reference to determine the present location within the non-volatile memory or storage area 1002 .
- the storage banks 1010 are arranged in a contiguous manner with bank addresses 1012 that sequentially reference the storage banks 1010 in a predefined manner. For example, as shown in FIG. 8A, the storage banks 1010 of the non-volatile memory stores 1002 is allocated with a common size of 64 kilobytes (K). The storage banks 1010 are further arranged in a sequential manner with the first 64 K of the storage section 1002 being stored in BANK 0 , the second 64 K of the storage section stored in BANK 1 , and so forth. Additionally, a block address 1012 of “0A” is associated with BANK 0 of the nonvolatile memory store 1002 , “0B” associated with BANK 1 , and so forth.
- K 64 kilobytes
- the division and arrangement of storage banks 1010 may vary from device to device and that the system and methods for update management described in connection with the non-volatile area 1002 having 64K banks 1010 may be readily applied to other configurations.
- the size of the storage banks may differ from one device to the next or more available memory or storage areas may be available. It is conceived that the present system and methods can be readily adapted to the different characteristics and combinations of the storage areas defined by the architecture 1000 of the memory or storage elements for numerous different types of electronic devices.
- the volatile memory or storage area 1004 of the electronic device is configured as a single continuous bank or storage section. Areas within the volatile memory or storage area 1004 can be individually accessed and space contained therein can be flexibly allocated as needed or desired. Like the non-volatile memory or storage area 1002 , address information may be used to reference particular sections of the memory 1004 , however, the somewhat rigid structure of the nonvolatile memory defined by banks need not be adhered to.
- each bank may vary in size with respect to other banks within the electronic device.
- the banks need not be physically or logically contiguous with one another and may be addressed using logical rather than physical addressing schemes.
- with the files or contents of a personal computer or other computing device may be may be addressed in a logical manner such as for example when using a hard drive having a logical addressing scheme with files stored therein.
- memory configuration described herein is representative of many conventional mobile or cellular phone storage architectures. It will be appreciated by one of skill in the art that there are numerous variations in the architecture or allocation of memory or storage areas to which the system and methods presented herein may be applied. Other memory configurations may exist for other electronic devices such as personal digital assistants, computers, satellites, and telematic devices which include not only non-volatile and volatile memory but also include other storage devices such as hard drives, optical media, and the like. Additionally, the memory architecture and allocation schema may vary from device to device, however, the system and methods described herein can readily be adapted to operate with these alternative configurations to represent but other embodiments of the present invention.
- the non-volatile memory or storage area 1002 may comprise numerous types or configurations of storage space that desirably maintain information through events such as power down, interruption, and device fault.
- Exemplary components that may be adapted to function as suitable non-volatile memory or storage area may include hard drives, optical drives, CD-writers, DVD-writers, tape drives, flash memory devices and EPROM devices.
- the volatile memory or storage area 1004 may comprise random access memory (RAM) or other volatile memory types.
- RAM random access memory
- a non-volatile memory or storage area may be used instead of the volatile memory or storage area and serve similar functionality. Therefore, the aforementioned non-volatile memory or storage devices can be adapted to operate in the same manner as the volatile memory or storage area 1004 without departing from the scope of the invention.
- FIG. 8B illustrates one embodiment of the non-volatile area 1002 which includes a download agent 1020 and an update agent 1025 used to process the update package 110 and perform the update functions.
- the download agent 1020 carries out functions related to acquiring the update package 110 while the update agent 1025 is responsible for applying the instructions contained in the update package 110 to desirably modify the contents of both the code section 1006 and the data section 1008 of the nonvolatile memory or storage area 1002 such that upon completion of the update process the first original code version is transformed into the second updated code version.
- the update agent 1025 comprises an embedded functional component that is desirably stored in the boot sector or section of the code section 1006 of the non-volatile area 1002 .
- the update agent 1025 may remain inactive, allowing the device's operating system to perform function calls and command operations that control the device.
- the update agent 1025 may take control of the electronic device and perform specific operations related to installing the update package 110 .
- the update agent 1025 is desirably maintained as a specialized application with a service set that is optimized and dedicated to performing functions necessary to install the update. In designing the update agent 1025 in this manner, the size of the update agent 1025 is desirably reduced so as to minimize the amount of space that it occupies in the nonvolatile area 1002 .
- the update agent 1025 is responsible for processing or executing the instructions contained in the update package 110 which in turn performs the operations necessary to transform the first original code version into the second updated code version.
- the update agent 1025 may further possess one or more functionalities which are used to perform specific operations related to the update process.
- the update agent 1025 may include a main functionality for applying the instructions of the update package 110 to the existing code version.
- the update agent 1025 may include functionality for performing client operations associated with update package management.
- the update agent 1025 may perform operations including string or data processing, memory management, and other operations used to coordinate the activities of the update process.
- the update agent 1025 includes one of more device drivers used during the updating processes.
- the update agent 1025 may also contain the functional logic required to manage the update process and may include functions not provided by the embedded operating system needed to carry out the instructions of the update package 110 .
- the update agent 1025 may also include functionality for performing various operations used to compress data in the data section to create sufficient storage space in the data section to receive the update package 110 .
- the update agent 1025 may include functionality used to prepare the update package 110 such as compression/decompression, encryption/un-encryption, and/or validation of the contents of the update package 110 .
- the download agent 1020 is responsible for performing operations related to communicating with the update servers and retrieving available update packages 110 .
- the download agent 1025 may comprise one or more functionalities which are used to perform specific operations related to the update package retrieval process.
- the download agent 1020 may include functionality for communicating with the server that contains the available update package 110 and also provides necessary handshaking and error correction routines used during the download process.
- the download agent 1020 may include functionality for performing client operations associated with update package management during the download process.
- the download agent 1020 may perform operations including string or data processing, memory management, and other operations used to coordinate the activities of the update process.
- the download agent 1020 comprises one of more device drivers used during the update package download process.
- the download agent 1020 may also include the primary functional logic required to manage the download process and may include functions not provided by the embedded operating system needed to establish communication with the server and retrieve the desired update package 110 . Additionally, the download agent 1020 may include functionality for performing various operations used to compressor reorganize data in the non-volatile and volatile memory or storage areas 1002 , 1004 to create sufficient storage space to receive the update package 110 . Finally, the download agent 1020 may provide functionality for enabling the use of secure communications between the server and the client device to prevent unauthorized access to the information contained in the update package 110 . In still another aspect, the download agent 1020 may contain a dedicated security library that defines one or more encryption schemes used during the transfer of information between the server and the client device.
- the download agent 1020 or update agent 1025 may further be used to determine if there is enough available space in the electronic device to decompress and/or prepare the update package 110 . If additional space is required, the download agent 1020 or the update agent 1025 may compress or rearrange the contents of either the non-volatile or volatile memory or storage areas 1002 , 1004 in order to create sufficient storage space to receive and process the update package 110 . After the update process is completed the compressed or rearranged contents of the non-volatile and volatile memory or storage areas 1002 , 1004 may be returned to their original state allowing the device to resume normal operation and access the contents of these areas 1002 , 1002 .
- update agent 1025 and download agent 1020 are designed to occupy a relatively small amount of space within the memory or storage area on the electronic device. This feature is particularly useful in devices where the memory or storage space is limited due to the device constraints such as design, size, and/or power consumption considerations.
- a typical mobile phone may contain a physical memory store that has an approximate size of 500K-1500K.
- the embedded operating system of the mobile phone occupies a large percentage of this space and additional space must be allocated for user-definable data such as phone numbers, addresses, and the like.
- the update agent 1025 and download agent 1029 are implemented in such a manner so as to maintain a total size of approximately 20K-50K.
- update agent 1025 and/or download agent 1020 can be designed to include additional functionality and features.
- the overall size of the update agent 1025 and download agent 1020 is typically significantly smaller that many conventional update applications or modules.
- a status table 1050 may further reside in the non-volatile memory or storage area 1008 .
- the status table 1050 is a data structure whose contents are desirably preserved in non-volatile memory or storage space and which is used during update package retrieval and processing operations to determine the state of operation of the devices.
- the status table 1050 is shown to be positioned in the data section 1008 of the non-volatile memory or storage area 1008 other configurations exist where the status table 1050 may be positioned in any portion of the non-volatile memory of storage area 1002 .
- the status table 1050 comprises one or more flags or identifiers that are used by the download agent 1020 and the update agent 1025 to coordinate the activities of the update process. Additionally the status table 1050 may store information that is used in fault tolerant processes to identify the current and completed states of the update process. Furthermore, information contained in the status table 1050 may be used during the device boot process to determine if the device is in a normal operational mode (update process is in an idle state) or in an update processing mode (update process is in a non-idle state). The mode of the device is determined by an update state variable or flag which may be either idle or active. In an idle state, no update operations are determined to be pending and normal device operation should proceed. In an active state, one or more update operations are currently pending and normal device operations should be suspended to permit the update operations to be executed.
- code execution typically begins at a specific startup address, for example “0x0000”. This address refers to a section of the boot block or sector where the update agent 1025 resides.
- the update agent 1025 checks the status table module 1050 to determine the value of the update state variable to identify updating operations that should be performed or alternatively if no operations are pending then the update agent 1025 transfers program execution to the regular firmware or operating system of the electronic device.
- the current position or state of completion of the update can be resolved using various portions of the update package information.
- the update package may include information such as error correction codes, digital signatures, file or bank sizes, and other information that are interpreted by the update agent 1025 to determine which portions of the code have been successfully updated. If the update process is unexpectedly interrupted, the update agent 1025 uses this information to determine at what position the last successful update had been applied and continues from that point to complete the update process.
- the update management system utilizes a bank-by-bank updating process for performing updates to the existing code version of an electronic device. This process is particularly well suited to manage updating tasks of portable electronic devices which typically have only limited update capabilities.
- the update management system overcomes the limitations of many conventional systems which prohibit devices such as mobile phones from being conveniently updated due to memory or storage space constraints imposed by the architecture of the electronic device. For example, in a mobile phone the operating system typically resides in the nonvolatile memory or storage area and may be too large to be held in the volatile memory or storage area which generally has a smaller size due to cost and manufacturing considerations.
- the present invention overcomes this limitation by providing a mechanism for performing updates in a sectional or bank-by-bank manner.
- the bank-by-bank updating method does not require an entire image of a file or code version to be stored a “working” area, rather the update operations are performed using a reduced amount of memory or storage space by subdividing the update operations and applying them sequentially to designated code sections.
- Sectional updating in this manner may be advantageously used in conjunction with relatively small areas of available memory or storage space such as that present in the volatile memory section of a mobile phone.
- the bank-by-bank update method improves fault tolerance and allows the update process to be resumed when an error in updating occurs.
- bank used in describing the invention refers to a portion of memory or storage area that may be flexibly defined. While a bank may have a static size in a particular electronic device, this size may vary from one device to next. Furthermore, banks within a particular electronic device may be variably sized and may refer to the contents of one or more logical or physical blocks as defined by a particular architecture for an electronic device.
- update process is described with reference to statically defined bank sizes it will be appreciated that the system and methods of the update management system can be readily adapted to accommodate different bank configurations to address the update needs or preferences for many different electronic device configurations.
- FIGS. 9 and 10 illustrate a bank-by-bank update method that is desirably used by the update management system to transform an existing code version present in the device into a new or updated code version.
- the code transformation is managed by the update agent 1025 which processes the instructions of the instruction set or update package 110 .
- the update agent 1025 processes the instructions of the instruction set or update package 110 .
- checkpointing operations to validate the data contents of each bank. As will be described in greater detail hereinbelow these operations are useful in recovering from errors which might otherwise corrupt the code version and render the device non-operational.
- FIG. 9 illustrates an overview of the bank-by-bank update method 1100 that may be used with electronic devices such as mobile phones, pagers, personal digital assistants, or other electronic devices.
- the architecture for many portable electronic devices comprises non-volatile and volatile memory or storage areas 1002 , 1004 .
- the non-volatile storage area may be further subdivided into a plurality of blocks or banks 1010 which represent discretely addressable locations used to store information or data.
- the operating system, firmware code, or other information 1120 to be desirably updated is further stored in the non-volatile memory or storage area 1002 and is distributed across at least some of the plurality of banks 1010 .
- the bank-by-bank update process 1100 commences in a start state 1105 when the electronic device detects a signal to begin updating.
- the update signal comprises recognizing a change from a normal operating mode to an update processing mode. As previously described, this mode change may be identified using an idle state variable which is set in the status table.
- the bank-by-bank update process 1100 then proceeds to a state 1110 where the update package is received following a request for transmission from the update server. In this state 1110 the update package 110 is desirably received and temporarily stored in the volatile memory or storage area.
- the process 1100 proceeds to an update transfer state 1115 where the complete update package 110 is copied into the non-volatile memory or storage area 1002 .
- the process 1100 proceeds to an update transfer state 1115 where the complete update package 110 is copied into the non-volatile memory or storage area 1002 .
- the status table is updated after the update package 110 has been saved into non-volatile memory to reflect the complete receipt and secure storage of the update package 110 .
- the update process 1100 continues in a memory allocation state 1120 where space for a “working” bank and a “backup” bank are allocated in the volatile and nonvolatile memory areas 1002 , 1004 respectively.
- the working bank and the backup bank are used by the update process 1100 to perform operations to sectional components of the existing code version in such a manner so that the original code is not altered until the update for the code section has been completed and verified thus insuring that the original code is not corrupted by unexpected processing errors or power interruptions.
- a first pointer comprises an instruction pointer that is initialized to point to the address of the first instruction in the update package 110 . This instruction is subsequently retrieved by referencing the address pointed to by the instruction pointer and the instruction is applied to the bank information to be updated.
- a working bank pointer is initialized to point to the location in the volatile memory-where the bank update will take place.
- the working bank pointer is used as a reference by the update agent 1025 which performs update operations in the location specified by the working bank pointer.
- a backup bank pointer is initialized which points to a location in the non-volatile memory where copies of the working bank are maintained to insure fault tolerance in case of power interruptions and reboot or reset operations.
- the process 1100 continues with a series of bank update operations 1123 commencing in a bank transfer state 1125 where a section of the original code version that resides in the non-volatile memory or storage area 1002 is transferred to the working bank in the volatile memory area 1004 .
- the code section copied from the original code version corresponds to a bank of information specified by the instruction set which will be desirably operated upon to generate the new code version for that particular bank of information.
- the process 1100 then proceeds to an apply update instruction state 1130 where the appropriate instruction from the instruction set is executed to modify the working bank of information in such a manner that the old code version contained in the bank is transformed into the new code version.
- the process proceeds to a bank backup state 1135 where the contents of the working bank are copied into the backup bank located in the non-volatile memory or storage area 1002 . Subsequently, the code in the volatile working bank is copied to the appropriate location corresponding to the bank where the original code was obtained from in an update bank state 1140 . Upon completion of bank copy in state 1140 , the process 1100 proceeds to an new state 1145 where the bank pointer is incremented to the next consecutive bank that is to be updated.
- the process 1100 is terminated.
- the status table may also be updated to reflect that the update operation is complete wherein the update process resumes an idle state Thereafter the electronic device is rebooted and the newly updated code version is used by the electronic device. Otherwise, if the pointer indicates that the process 1100 is not complete (i.e. one or more banks remain to be updated) the process 1100 proceeds to the bank transfer state 1125 where the next bank is copied into the working bank in the volatile memory or storage space 1004 and the process 1100 continues to complete updating of the newly selected bank.
- the status table is checked during reboot, if an idle status is detected, then normal (non-update) operations resume. If a non-idle status is detected, then the update agent 1025 is directed to control the electronic device.
- FIG. 10 further illustrates the bank-by-bank update process 1100 in greater detail and demonstrates the operations in the context of the aforementioned non-volatile and volatile memory or storage areas 1002 , 1004 typically present in a portable electronic device such as a mobile phone or personal digital assistant.
- the non-volatile memory area is divided into a plurality of banks that are separately addressable and accessible by the update agent 1025 .
- At least some of the non-volatile banks 1120 comprise sections of the memory area that are to be updated by the update agent 1025 using the update package 110 .
- these banks may contain information which comprises the operating system, firmware code, or application that conveys functionality to the electronic device and which is desirably updated from the first code version to the second code version.
- the bank-by-bank update process 1100 typically begins after the appropriate available update package 110 is identified and transferred to the electronic device using the functionality of the aforementioned download agent 1020 .
- the update package 110 is received and temporarily stored in a section 1222 of the volatile memory or storage area 1004 and a series of validation checks are implemented to insure that the package 110 is complete and free of errors.
- These validation checks may include determining a cyclic redundancy check code (CRC) for the received update package 110 and comparing this code against an expected CRC value stored in the update package 110 .
- CRC cyclic redundancy check code
- a validation check may be performed by identifying the size of the update package 110 and comparing this value against the expected size determined by the download agent 1020 .
- the update package 110 may include a digital signature that is evaluated by the download agent 1020 to determine if the received update package 110 is appropriate for application to the existing code version.
- the digital signature is an identity string that may contain information such as; the name or identification of the device, the device manufacturer, the model or serial number, and other characteristics that may be used to validate the source and content of the transferred data package 110 .
- the update package 110 is transferred from its temporary location 1122 to a section 1224 of the nonvolatile or flash memory component 1002 for more secure storage.
- Storage of the update package 110 in the non-volatile memory provides a means for recovering from a power failure, device interruption, or reset operation without requiring retransmission of the update package 110 from the server.
- one or more validation checks are used to insure that the image contained in the flash memory 1002 is a complete and error free copy of the desired update package 110 .
- the idle status flag stored in the status table (not shown) is updated to indicate that the electronic device is ready to proceed into an update mode. Thereafter, the electronic device is rebooted and the status flag is interpreted by the update agent 1025 to suspend normal operation of the device and proceed into an update mode where the update agent 1025 provides primary device functionality to install the update package 110 .
- the update package 110 may be preprocessed to present the update information or instructions in an executable form. For example, if the update package 110 is compressed or encrypted, the update agent 1025 performs one or more operations to render the code of the update package 110 ready for execution.
- the aforementioned instruction pointer may be initialized to the address of the first instruction to be executed by the update agent 1025 . Taken together, these operations prepare update agent 1025 and instruction set for subsequent sequential updating of the existing code version to generate the new code version.
- a working bank 1232 is allocated in the RAM memory 1002 .
- the working bank 1232 is desirably configured to be the same size as the banks 1120 to be updated in the flash memory area 1004 and acts as an operational buffer or working memory area where operations determined by the instruction set are performed.
- a backup bank 1234 may be allocated or a pointer added in the flash memory 1004 to provide a non-volatile buffer or backup store which is used throughout the update process to provide fault tolerance to power interruptions as well as serve as a backup copy of the data in instances where the data in the working bank 1232 may become corrupted or fail validation checks.
- the update process commences with the update agent 1025 reading and executing instructions contained in the update package stored in RAM memory section 1222 .
- the instructions of the update package initialize a pointer which points to the address of the first bank 1242 of the flash memory 1002 to be updated.
- the update agent 1025 accesses the information contained in this bank 1242 and copies the information contained therein to the working bank 1232 of the RAM memory 1002 .
- various validation measures may be taken to insure that the contents of the working bank 1232 accurately reflect the flash memory bank from which it was copied. Should the bank copy procedure fail, the process may be repeated and the contents verified before proceeding to the next update state.
- the use of the working bank 1232 desirably imparts an improved degree of fault tolerance to the update system compared to many conventional methods.
- a copy of the original (unmodified) code is maintained in the flash memory bank 1002 until the newly updated bank information can be verified and stored in a non-volatile manner.
- This method of updating desirably reduces the likelihood of data corruption that might otherwise lead to device malfunction.
- preservation of the existing code allows the update process to resume from the failed point rather than requiring that the entire update process be restarted from the beginning state. Additional details of the fault tolerant characteristics of the update process will be subsequently described in greater detail.
- the update agent 1025 applies the appropriate instructions to update the information contained in the copy of the first bank stored in the working bank 1232 .
- the instructions may address and copy information from other banks 1120 contained in the flash memory 1002 to obtain information sequences that are desirably used in generating the updated bank information for the working bank 1232 .
- other operations may be used to modify the code contained in the working bank to reflect the desired contents as determined by the update generator 102 .
- banks that are determined not be have been changed between the first code version and the second code version do not require further processing and the update process may loop back to state 1240 where a new bank is copied and the process resumed using the corresponding instructions from the update package.
- those banks which do not require updating are skipped in the previous step 1240 for the purpose of improving update efficiency.
- numerous error detection measures may take place after the update instruction has been executed to verify that the update bank information is correct.
- the newly updated information contained in the working bank 1232 is copied to the backup bank 1234 located in the flash memory 1002 .
- a copy of the working bank 1232 is made at this point to provide yet another degree of fault tolerance where if a power interrupt occurs subsequent to the copying of the working bank 1232 into the original first bank 1242 , the process may identify the point where the fault occurred and proceed from there if a copy of the updated information is maintained in the non-volatile flash memory 1002 . If a fault occurs prior the to completion of the copying of the working bank 1232 into the backup bank 1234 the process may attempt to perform the copy operation again from the updated bank 1232 into the backup bank 1234 .
- the process may “step back” to the previous steps where the information from the first bank 1242 is copied to the working bank 1232 .
- the update process provides a number of mechanisms to insure that if data corruption or update fault does occur, the process can find a point from which to resume without the potential permanent loss or corruption of data during the update process.
- the update process is repeated in a similar manner for the next bank 1246 where the bank pointer is updated to the address of the next bank 1246 to be updated. Subsequently, the steps 1240 - 1270 are repeated using the information from the next bank 1246 . In this manner, all of the banks 1120 of the flash memory 1002 may be desirably updated in a fault tolerant manner while accommodating architectural limitations imposed by a RAM memory size less than that of the flash memory size.
- the update agent 1025 determines the update process to be complete, the space allocations (if any) in the flash memory 1002 , including the backup update package storage area 1224 and the backup bank 1234 , are released so that they may be used for other purposes subsequent to updating. Furthermore, the status flag contained in the status table (not shown) is updated to reflect an idle state where no update operations are pending. Subsequently, the device is reset or rebooted and upon checking the status flag in the status table, the device will return to a normal operational mode until the next update procedure is initiated.
- the backup storage area 1224 does not require de-allocation or release (as is the case when pointers are used to designate the backup storage area 1224 ). In this instance, upon completion of the update process other applications or operations can simply overwrite the contents of the backup storage area 1224 . Furthermore no special operations necessarily need to be performed on the volatile memory or storage area 1004 as the data contained therein will typically be lost during rebooting operations.
- FIG. 11 illustrates one embodiment of a fault tolerance process 1300 used by the update agent 1025 of the client device 104 to ensure proper installation of the instruction set contained in the update package 110 .
- the instruction set provides an efficient conversion method or instruction sequence that is capable of installing the newer code version into a computing device, such as the client device 104 , to replace the existing code version.
- the fault tolerance process 1300 comprises a series of checks or validations that advantageously protect the existing code version that is used by the client device 104 , to avoid corruption during execution of the instructions contained in the update package 110 .
- the fault tolerance process 1300 insures that the information contained in the updated code accurately reflects the desired information to insure proper device operation after the update.
- the following description of the fault tolerant sequence identifies the distinguishing characteristics of this process as it relates to the processing of update instructions by the update server 1025 . It will be appreciated that this process operates in conjunction with the aforementioned update process described in detail in connection with FIGS. 9 and 10. As such, the fault tolerant sequence may be considered an integral part of the update process and portions of this process may have coordinative functionality with the aforementioned update processes.
- the fault tolerance process 1300 Upon initialization of the client device 104 in a start state 1302 , the fault tolerance process 1300 advances to a state 1304 , where the update agent 1025 checks the status table for a “not idle” state recognition.
- the “not idle” state signifies that the client device 104 is in the update processing mode where the instructions of the update package 1025 will be applied to generate the new code version. If the update processing mode is not recognized, then the fault tolerance sequence terminates in an end state 1306 and the device continues to operate in a normal mode of operation without further update processing. Otherwise, if the update processing mode is recognized, then the fault tolerance process 1300 advances to a validation state 1308 .
- the update agent 1025 performs one or more confirmation operations or checks including verification of the saved update package 110 that has been stored in non-volatile memory, identification of the starting address and contents of the working bank, and the starting address and contents of the backup bank.
- the update agent 1025 determines that the pre-update validation fails, then the update and fault tolerance processes are terminated in state 1310 .
- the update agent 1025 is able to validate the status table information in the state 1308 , then the fault tolerance process 1300 advances to a state 1312 , where the update agent 1025 determines the next bank to be updated.
- the update agent checks the bank identity information from the uncompressed update package and find out where the update process was terminated and should be resumed. This is done by comparing size and CRC information from bank identity information with the existing and updated bank information calculated from the physical banks inside the electronic device. In one aspect, the process determines the appropriate resume point by comparing the bank size and CRC information. Proceeding sequentially from the beginning of the update package instruction set, a bank which does not match the expected size and CRC information, is the first bank to be updated.
- the backup bank may be used to recover the last updated bank.
- the update agent 1025 then performs the bank update in state 1314 as previously described.
- a series of update validations are applied to determine if the bank update was successful.
- the update agent 1025 may accomplish bank validation by checking bank description information, which includes bank identity information and CRC values corresponding to the old information contained in the bank and newly updated information. Additionally the validation task may assess old and new file or bank sizes to determine if these values match expected values.
- the update agent 1025 may compare actual bank description information to bank description information stored in the update package 110 .
- the fault tolerance process 1300 loops back to perform the bank update again in the state 1314 . If the update validations pass in state 1316 , then the fault tolerance process 1300 advances to a state 1318 , where the update agent determines if the update installation is complete.
- the update agent 1025 may accomplish this task by re-checking the bank description information, CRC or size values of the previous banks to validate proper update installation for each of the previous banks. Additionally, the update agent 1025 may use a counter or a pointer to determine the bank position, which is used to determine if the update installation is complete.
- the fault tolerance process 1300 loops back to the state 1312 to determine the next bank to be updated. Alternatively, if the update installation is complete, then the fault tolerance process 1300 terminates in an end state 1320 by re-initializing the client device 104 . Furthermore, when the update operation is determined to be complete, the “not idle” state is returned to an “idle” state, which changes the state of device operation from the update processing mode of operation to the normal operational mode upon reset or re-initialization of the client device 104 .
- the above-mentioned fault tolerance process 1300 is used to protect the operational software or firmware code against unforeseen failure, such as a power failure or data corruption.
- unforeseen failure such as a power failure or data corruption.
- the update agent 1025 is able to determine the banks that have been updated, the next bank to be updated, and when the update installation is complete.
- the fault tolerance process 1300 efficiently and reliably protects the bank update installation and conversion process against hardware or software interruptions, power failures, data corruption, and/or other catastrophic encounters beyond the control of the user.
- FIG. 12 illustrates one embodiment of a signature creation and authentication process 1400 , which is used for security and validation purposes.
- the update package 110 is transferred from the update device server 102 via a communications medium in a manner so as to securely manage the digital information sequences, protect client privacy, and reduce the probability of data corruption.
- the digital signature comprises information used to validate the source of the transferred data and confirm that the data is designed for use with the present electronic device.
- the digital signature comprises a manufacturer designated information string that is used to authenticate the source of the update package 110 .
- a signature or hash value may be generated using a known MD5 algorithm.
- the MD algorithm generates the hash value of a source file, for example from the device update information, which is desirably included along with the update package 110 for subsequent validation after transfer of the update package to the electronic device.
- the hash value determined by the MD5 algorithm is used to form a digital fingerprint of the device update information.
- the hash value is unique and no two sets of device update information (contain information differences with respect to one another) will have the same digital signature.
- This uniqueness enables the hash value to act as a fingerprint of the original information or instruction set, and enables the use of the MD5 technology for purposes of maintaining data integrity and comparison validation.
- the MD5 technology may be used to substantially guarantee that the downloaded update package is the correct, unaltered data file by comparing the calculated MD5 signature or hash value with the MD5 signature contained in the update package, to thereby verify the integrity of the data file.
- the information or data of the update package 110 may incorporate the use of MD5 technology or similar digital image signature methodology to ensure integrity of the information transmitted in the update package 110 .
- the MD5 hash value and digital signature are encrypted and included in the update package 110 .
- the encryption process is used to achieve a higher degree of data security.
- the electronic device To read or access an encrypted hash value and digital signature, the electronic device must possess or have access to a key or password that enables decryption or the deciphering of the encoded data.
- asymmetric encryption techniques for example public-key encryption
- symmetric encryption techniques may be used to encrypt the update package 110 .
- RSA encryption or a public-key encryption techniques are used to encrypt the hash value and digital signature prior to distribution.
- the update package is ready for distribution to the client devices and upon receiving the update package 110 the client device continues with the authentication process in state 1412 .
- the client device 104 receives the update package the encrypted portion of the package is decrypted and to resolve the digital signature, and hash value into separate components.
- the process 1400 advances to a state 1414 , where the update agent 1025 authenticates the MD5 hash value and digital signature information.
- the transferred MD5 hash value is compared to a calculated MD5 hash value. If the two values are identical then the update package and its contents are authentic and the update process may continue. Otherwise, if the authentication fails then the update package may be discarded as non-authentic.
- the received update package 110 is determined to be authentic. Once the received update package 110 is authenticated in the state 1418 , the signature creation and authentication process 1400 is terminated in an end state 1420 and the update package 110 may be processed by the update agent 1025 .
- the aforementioned encryption scheme is useful in maintaining the privacy of the digital information contained in the update package 110 and transferred through the communications medium.
- Security and privacy protection is a significant concern among individuals using all types of communications media, including wireless networks and the Internet. Therefore, the signature creation and authentication process 1400 is a useful method for insuring security in the update procedure and increases the reliability of receiving the actual update information in a complete and untampered package.
- the client device may then proceed to install the update package 110 , which converts the older code version of firmware or operational software to the newer code version of firmware or operational software.
- One desirable feature of the present invention is that it may be adapted to many different memory and storage architectures without the need for modification of the hardware of the electronic device.
- the update system may therefore be incorporated into existing electronic devices, as well as, adapted to the design of future devices to provide a more efficient and less cumbersome update path as compared to prior art solutions.
- numerous methods of distributing the update package can be accomplished using the update management system and methods.
- the present invention may be used in conjunction with many different types of communications media to distribute the update package to the electronic devices to be updated. Using both wireless and wired networks as well as Internet connected networks, the update packages may be distributed to the electronic devices permitting them to be frequently updated in a convenient manner. The flexible distribution over these communications media also allows the updates to be distributed to large numbers of electronic devices with minimal user interaction and inconvenience.
- the update management system and methods can be used to substantially alter the functionality of the electronic device applying the update package.
- the resident operating code or application stored in the device may convey a first device functionality the is desirably altered to updated operating code or a new application that conveys a second device functionality.
- the first and second devices functionalities may be representative of software applications such as a games, address books, calculators, personal reminders or other data/information/applications.
- the device functionality may be substantially altered to transform the first device functionality into the second device functionality.
- the first device functionality is a game
- the update package may be used to transform the digital information sequences representative of the game into another device functionality such as a calculator.
- the first device functionality can be updated from a previous version to a newer version having a similar functionality reflected by the second device functionality. For example, if the first device functionality was a 9 function calculator application, this application could be updated to a 26 function calculator application by applying a suitable update package.
- the update management system and methods can desirably used in connection with software applications and device drivers such as those used in personal computers to provide a flexible means for updating the code of the software application or device drivers from one version to another.
- the aforementioned “words” representing digital information sequences used during the update process may be representative of files associated with software application or device drivers.
- one or more files of the software application or device drivers may be updated providing a simplified method for maintaining the code present on the personal computer.
- the software application or device driver can be updated to maintain a consistent functionality from one version to the next or the functionality may be completely altered as needed or desired.
- the software application to be updated comprises a word processor
- this application can be updated from a previous version to a new version to provide increased features and options as well as remove bugs and provide added capabilities.
- the application can be updated to a completely different application such as, for example, a spreadsheet or database program by applying the update package. It will be appreciated that updating in this manner provides a highly flexible means to alter the functionality of the software application that is not limited to exclusively changing between versions of the same application but instead can provide completely different applications and functionalities using a relatively small update package.
- Another feature arising from the use of the updating system and method is that software installation, maintenance, and administration is greatly facilitated.
- a limitation of conventional systems results from users having to install and uninstall software applications manually in a series of steps that is error-prone and time consuming.
- the update management system overcomes this limitation by providing for an automated installation process that may be used to install, remove, update, and change software applications from one to another by the relatively simple process of applying the update package.
- a new and more powerful manner of system administration can be realized allowing for automated management of one or more systems either locally (by application of the update package contained for example on a CDROM disk or removable storage medium) or remotely (by application of the update package through a wired or wireless communications medium).
- System administration in this manner provides for increased security, fault-tolerance, and flexibility over conventional methods and is less error prone and more rapid.
Abstract
Description
- 1. Field of the Invention
- The present invention generally relates to information updating systems, and more particularly, to a software system and method for updating information which reduces the size of an update and distributes the update in a platform independent manner.
- 2. Description of the Related Art
- With the rapid and continuous advancement of software and hardware technology, maintenance of existing devices and software components presents an ever-increasing challenge. Routine installation of information updates and patches has become a recognized necessity to insure that computers, devices, and software applications are kept fully functional over their operational lifetimes. Unfortunately, for many devices and applications, update management can be a cumbersome, time consuming, and error prone process. These problems are often exacerbated in portable electronic devices such as cellular phones and personal digital assistants due to memory constraints and bandwidth restrictions. Furthermore, portable electronic devices often lack the ability to perform automated update operations in a convenient and reliable manner. As a result, there is an ongoing need for improved update processes that can be used in conjunction with both hardware and software systems. Furthermore, there is a need for an update methodology that reduces the size of the update package to help alleviate potential problems that arise due to memory constraints and bandwidth limitations.
- Increased sophistication of updateable electronic devices and software often necessitates frequent maintenance where updates are made available and desirably applied on weekly or monthly basis. During the update process, problems often arise when the update is improperly performed or interrupted and may result in data corruption, loss of program functionality, or hardware failure. This presents developers and consumers alike with significant obstacles to insure that available updates are installed in a timely and effective manner. Additionally, developers must dedicate a substantial amount of time and resources to insure their users are provided with necessary updates, patches, and new versions of existing software and/or hardware components.
- Some of the concerns which the developer must address include the substantial amount of resources required to store and provide updates to a large customer base, technical support issues related to helping customers properly apply the updates, and the methods by which the updates are distributed to the customers in a timely and efficient manner. A further problem exists where a high degree of requisite of skill is needed to acquire and install an available update and may involve technical skills beyond that of the average customer. Even if a customer is able to retrieve the update, he is faced with the problem of insuring its proper installation. Improper installation of an update package may result in software failure or render the device to which the update is applied inoperative and place a further burden on the developer in resolving customer-related update problems. With increased dependence on electronic devices having updateable components, there is a need for faster and more intuitive updating capabilities and smaller update file sizes to insure that updates can be readily retrieved and properly installed as necessary or desired. In many instances, the ease, reliability, and availability of an update package can significantly affect customer number and loyalty and is a distinguishing characteristic for a successful developer or merchant.
- Although the importance of a superior updating system is apparent, conventional updating solutions typically suffer from a number of drawbacks. These problems are particularly prevalent in portable electronics devices and arise from a number of factors related to creation, distribution, and installation of the update package. For example, electronic devices such as cellular phones are often limited with respect to the available memory or storage space available for update processing. The size of the update package must be kept to a minimum in order to accommodate the reduced availability of resources on these devices and, as a result, the ability to perform significant alterations or modifications of the embedded code in these devices may be limited. Furthermore, conventional update methods for portable electronic devices which are directed towards complete operating system replacement or maintenance require the device to be physically connected by a wired connection to a dedicated apparatus which applies the update. Updating in this manner requires specialized hardware and necessitates the device to be updated to be returned to the manufacturer or a suitable service location. This is inconvenient for the user and may not be practical when the number of devices to be updated is large.
- In devices that support wireless acquisition and installation of update packages, problems are frequently encountered due to bandwidth limitations needed to distribute available update packages. Furthermore, acquisition of the update package by wireless methods may take long periods of time and be subject to interruption or data corruption. Even when the update package has been acquired, the installation of the update often requires significant technical expertise at the user end complicating the proper installation of the update package. During this time the user may be faced with problems associated with uninstalling a previous version of the code to be updated or applying the update in manner that will be successful. This can present a further problem as it discourages the user from performing update operations for long periods of time or in some cases altogether.
- A further problem exists with update management systems that rely on publicly accessible servers to provide updates to large number of users. These servers often become busy or crowded and reduce the efficiency by which the update can be acquired. Additional complexities resulting from update requirements arise from shortened product version lifecycles. It is not uncommon for new software releases to be available every few months (or even weeks, in the case of ‘bug fixes’ and intra-version updates). This places increased demands on developer resources required to maintain the update services and results in developers expending added resources for existing software maintenance potentially shifting their focus from developing new product capabilities to supporting and updating older versions. From a business perspective software updating is generally recognized as a non-revenue producing activity and may consume an inordinate percentage of developer resources. Therefore there is an ongoing need to reduce the time, resources, and personnel needed to service existing software while at the same time insuring the customers are presented with the most up-to-date software versions.
- Attempts to make updates faster and more intuitive have led to the development of internally-designed and supported update solutions. A number of problems are associated with these solutions which are typically expensive, proprietary, and platform-specific. Other methods for update creation use commercial software packages designed to create updates or to generate patches for software. Both of these methods have inherent problems with flexibility and file size. Commercially available software updaters can be expensive and typically create updates which have unnecessarily large file sizes. In some instances, the new version or update generated by the updater is actually a full version of the software rather than an actual patch. Because of the problems associated with large update file sizes, developers may be hesitant to release frequent patches and as a result, pursue longer software development cycles. This may be a disservice to the customer due to the limited number of updates, which may be released only when there are substantial enough changes and/or improvements to warrant the creation and disbursement of large update files.
- From the foregoing, it can be appreciated that there is an ongoing need for a convenient and reliable update management system. To this end, there is a need for a system which generates and distributes updates that are of reduced size to allow for more rapid acquisition. Additionally there is a need for an automated process that provides a convenient trouble-free method for installing desired. updates to both hardware and software systems alike.
- The present invention satisfies aforementioned needs for efficient updating of digital information sequences that comprise software, devices, and data. Further, these digital information sequences may be stored and used in various forms, including but not limited to files, memory locations, or embedded storage locations. The system and methods described herein provide a developer with an improved ability to create update information as needed and additionally allow users to proceed through a simplified update path which is not error-prone and can be performed more quickly than through the use of existing technologies.
- In one embodiment the invention comprises a system for updating a plurality of distributed electronic devices with an updated operating code comprising a first plurality of digital information sequences wherein each of the plurality of electronic devices include a resident operating code comprising a second plurality of digital information sequences that are stored within the electronic device. The system further comprises an update generator that compares an image of the first plurality of digital information sequences comprising the updated operating code to an image of the second plurality of digital information sequences comprising the resident operating code and identifies differences between of the updated operating code and the resident operating code and thereafter generates an update package comprising an instruction set which specifies how to generate the updated operating code utilizing at least a portion of the second plurality of digital information sequences of the resident operating code. The system further comprises a distribution system that distributes the update package to the electronic devices such that the update package is received by the electronic devices and stored therein. The system further comprises a plurality of client modules that are respectively resident on each of the plurality of electronic devices, wherein the plurality of client modules access the distribution system and receive the update package and wherein the instruction set of the update package is executed by the client modules so as to generate the updated operating code by utilizing a least a portion of the second plurality of digital information sequences from the resident operating code.
- In another aspect the invention comprises a system for updating an electronic device containing a first plurality of data sequences comprising a first code version to a second code version comprising a second plurality of data sequences using a update package comprising a plurality of transformation instructions which transform the first code version into the second code version. The system further comprises an update generator that performs a version comparison between the first code version and the second code version to identify pattern differences between the first plurality of data sequences and the second plurality of data sequences, wherein the identified pattern differences are encoded using the transformation instructions which identify portions of the first plurality of data sequences that can be used in the construction of the identified pattern differences, and thereafter forming the update package using the transformation instructions. The system further comprises a distribution system that receives the update package from the update generator and distributes the update package to the electronic device. The system further comprises an update agent resident on the electronic device that executes the transformation instructions of the update package thereby transforming the first code version resident in the electronic device into the updated second code version.
- In yet another aspect the invention comprises a system for updating a plurality of distributed electronic devices with an updated operating code that comprises a plurality of data blocks wherein each of the plurality of distributed electronic devices include a resident operating code that is stored as plurality of data blocks. The system further comprises an update generator that compares the plurality of data blocks of the resident operating code with the plurality of data blocks of the updated operating code and thereby generates an update package comprising an instruction set which indicates how to generate the updated operating code utilizing at least in part the plurality of data blocks of the resident operating code. The system further comprises a distribution system that includes the update package and is accessible by each of the plurality of distributed electronic devices. The system further comprises a plurality of client modules that are respectively resident on each of the plurality of distributed electronic set, wherein the plurality of client modules accesses the distribution system so as to be able to receive the update package, wherein the instruction set provides instructions to the client modules such that the client modules generates at least a portion of the plurality of data blocks comprising the updating operating code by utilizing the plurality of data blocks comprising the resident operating code.
- In still another aspect the invention comprises a system for updating a plurality of distributed electronic devices with an updated operating code that comprises a plurality of data blocks wherein each of the plurality of distributed electronic devices include a resident operating code that is stored as plurality of data blocks. The system further comprises an update generator that compares the plurality of data blocks of the resident operating code with the plurality of data blocks of the updated operating code and thereby identifies update data blocks that are different between the update operating code and the resident operating code wherein the update generator generates an update package comprising an instruction set which indicates how to transform the resident operating code into the updated operating code and how to generate the update data blocks utilizing at least in part the plurality of data blocks of the resident operating code. The system further comprises a distribution system that includes the update package and is accessible by each of the plurality of distributed electronic devices. The system further comprises a plurality of client modules that are respectively resident on each of the plurality of distributed electronic set, wherein the plurality of client modules accesses the distribution system so as to be able to receive the update package, wherein the instruction set provides instructions to the client modules such that the client modules modifies the resident operating code into the updated operating code and wherein the client modules generates at least a portion of the update data blocks by utilizing the received instruction set to perform operations on the data blocks of the resident operating code to generate the update data blocks.
- In a further embodiment the invention comprises a method of updating a resident operating code stored in a first storage section of an electronic device into an updated operating code. The method further comprises the step of developing an update package comprising a plurality of transformation operations to transform the resident operating code into the updated operating code. The method further comprises the step of transferring the update package to the electrical device. The method further comprises the step of copying a portion of the resident operating code into a second storage section. The method further comprises the step of updating the portion of the resident operating code stored in the second storage section using the transformation operations of the update package to transform the resident operating code into updated operating code. The method further comprises the step of replacing the portion of resident operating code stored in the first storage section with the portion of updated operating code stored in the second storage section. The method further comprises the step of repeating steps of copying, updating, and replacing noted above until the resident operating code has been fully updated to the updated operating code.
- In a still further embodiment the invention comprises an updatable electronic device comprising a non-volatile storage section having operating code stored therein, a volatile storage section that is adapted to receive an update package comprising a plurality of instructions via a communications medium, and a controller that implements the instructions of the update package to update the operating code stored in the non-volatile storage section. In this embodiment the controller is configured to sequentially (i) retrieve original portions of operating code from the non-volatile storage section into the volatile storage section and (ii) apply the instructions of the update package to the retrieved portions in the volatile storage section to thereby transform the retrieved original operating code portion into an updated operating code portion and then (iii) replace the original operating code portion with the updated operating code portion.
- These and other aspects, advantages, and novel features of the invention will become apparent upon reading the following detailed description and upon reference to the accompanying drawings. In the drawings, similar elements have similar reference numerals.
- FIG. 1A is a block diagram illustrating one embodiment of an update management and distribution system.
- FIG. 1B is a block diagram illustrating another embodiment of an update management and distribution system including an update server array.
- FIG. 1C is a block diagram illustrating another embodiment of an update management and distribution system including an update server array having an update store and an update device server.
- FIG. 1D is a block diagram illustrating another embodiment of an update distribution system including an update server array having an update store and a plurality of update device servers.
- FIG. 2A is a flowchart illustrating one embodiment of an update installation process.
- FIG. 2B is a flowchart illustrating another embodiment of an update installation process.
- FIG. 3 is a flowchart illustrating one embodiment of an update creation process.
- FIG. 4 illustrates one embodiment of a hash array.
- FIG. 5 is a flowchart illustrating one embodiment of an instruction set generation process.
- FIG. 6A illustrates one embodiment of a run length encoding instruction.
- FIG. 6B illustrates one embodiment of an existing sequence instruction.
- FIG. 6C illustrates one embodiment of a hash instruction.
- FIG. 6D illustrates one embodiment of a default instruction.
- FIG. 7 illustrates one embodiment of a reconstructed digital information sequence.
- FIG. 8A illustrates one embodiment of an exemplary memory or storage architecture.
- FIG. 8B illustrates one embodiment of a non-volatile memory or storage area.
- FIG. 9 is a flowchart illustrating one embodiment of a bank-by-bank update method.
- FIG. 10 illustrates one embodiment of the application of an update package using the bank-by-bank update process.
- FIG. 11 is a flowchart illustrating one embodiment of a fault tolerance process.
- FIG. 12 is a flowchart illustrating one embodiment of a signature creation and authentication process.
- Reference will now be made to the drawings wherein like numerals refer to like parts throughout. FIG. 1A illustrates one embodiment of an
update distribution system 100. Theupdate distribution system 100 includes anupdate generator 102 and aclient device 104. In one embodiment, theupdate generator 102 receives afirst code version 106, such as an old version of a software application, and asecond code version 108, such as a new version of a software application. Theupdate generator 102 produces anupdate package 110 comprising an instruction set which represents a plurality of operations that are desirably used to transform the firstoriginal code version 106 into the second updated code version. Theupdate package 110 is then transferred to aclient device 104 via a communications medium. Viable communications media may include hardwired media, removable storage media, wireless media, volatile and non-volatile memory based media, and the Internet. Other communications media may include by way of example, local area networks (LANs), wide area networks (WANs), public Internets, private Internets, a private computer network, a secure Internet, a private network, a public network, a value-added network, interactive television networks, wireless data transmission networks, two-way cable networks, interactive kiosk networks, and the like. In addition, theclient device 104 may comprise numerous types of devices capable of receiving and processing theupdate package 110, such as computers, personal digital assistants (PDAs), hardwired phones, mobile phones, pagers, electronic peripheral devices, appliances, and other such devices capable of being configured to receive the update package. - In one aspect, the instruction set utilizes a conversion process employed by the
client device 104 to efficiently convert the existingfirst code version 106 to thesecond code version 108. The instruction set and the implementation of the conversion process will be discussed in greater detail herein below. - At least one method by which the
client device 104 may securely and reliably obtain theupdate package 110 from theupdate generator 102 may occur by transfer of information in the form of theupdate package 110 through at least one of the above-mentioned communications media types. Theclient device 104 may further be equipped with the capability to bi-directionally communicate with theupdate generator 102. In one embodiment, theclient device 104 transfers identity information, including type, model, and/or make of the device, as well as the version of operational software or applications currently in use by theclient device 104. Theupdate generator 102 receives the identity information from theclient device 104 and subsequently generates the desiredupdate package 110 required and/or requested by theclient device 104. Alternatively, theupdate generator 102 may be equipped with the ability to generate and provide a plurality ofupdate packages 110, which reference a plurality of operational software versions or applications, prior to receiving the identity information. In this embodiment, theupdate generator 102 may retrieve from memory or storage an archived version of the desiredupdate package 110 a. In addition, theupdate generator 102 may create a version manifest, which comprises a list of archived update packages 110 including operational software version information for a wide range ofparticular client devices 104. Once theupdate package 110 is generated, validated, and deemed available, theupdate generator 102 may function as a server and transfer the desiredupdate package 110 to theclient device 104 as requested or required. It will be appreciated that one ormore update packages 110 may be generated and archived as updated versions of operational software become available. Furthermore, updatepackages 110 can be prepared for use with hardware update systems, such as may be required, for example, to update non-volatile memory components or portable electronic devices. One desirable feature of the update management system is that it may be readily adapted for use in wireless update procedures or over the air (OTA) updating. This method allows updates for software or firmware components in devices without hardware changes. The updating methods described herein can further be used to update a client device including applications, operational functionality, operating system software and the like. Furthermore, the updating operations can correct errors or problems with existing code resident in the device, add new features or functionality, change or modify resident applications, or perform other desired update operations in a manner that will be described in greater detail herein below. - In one embodiment, the
update generator 102 comprises a single computing device or server component which is responsible for both generating and distributing update packages 110. Theupdate generator 102 is equipped to run specialized software to construct the instruction set of theupdate package 110 for theclient device 104. Moreover, theupdate generator 102 creates theupdate package 110 by comparing thefirst code version 106 to thesecond code version 108. Theupdate package 110 desirably includes mathematical operations and instructions coded into the instruction set which transform thefirst code version 106 into thesecond code version 108. A principle feature of the update management system is that update packages 110 are generated in such a way so as to utilize existing code or information resident on the device. The methods for update package generation are specifically designed to analyze the differences between thecode versions first code version 106 into thesecond code version 108. This feature is significant in that it significantly reduces the size of the update package compared to conventional methods. In one aspect, the file size of the update package 1107 may be reduced by more than 90 percent with respect to thefirst code version 106. Advantageously, since the file size of theupdate package 110 is relatively small and compact, theupdate package 110 may be easily transferred and stored in a memory component of theclient device 104 without significantly altering the memory allocation size and bandwidth specifications of theclient device 104. In one aspect theupdate generator 102 generates and archives a plurality ofupdate packages 110 for distribution to one or more different types ofclient devices 104. Eachclient device 104 may then request transfer of the desiredupdate package 110 which is selectively sent by the server. - FIG. 1B illustrates another embodiment of an
update distribution system 120. Theupdate distribution system 120 is similar in scope and functionality to theupdate distribution system 100 of FIG. 1A except that theupdate distribution system 120 is illustrated with separate computing components including anupdate server array 122. Theupdate distribution system 120 includes theupdate generator 102, theupdate server array 122, and a plurality ofclient devices update generator 102 is shown to generate the plurality ofupdate packages update packages update server array 122. Additionally, theupdate server array 122 subsequently transfers the plurality ofupdate packages client devices - In one aspect, the
update server array 122 comprises one or more computing devices, which may be configured to store and archive the plurality ofupdate packages update generator 100. Storage components include, but are not limited to, hard drives, magnetic tape drives, random access memory (RAM), read only memory (ROM), and removable RAM and/or ROM-based storage media including compact discs, floppy disks, magnetic tape. Additionally, theupdate server array 122 may be equipped with the capability to independently and bi-directionally communicate with the plurality ofclient devices update server array 122 receives identity information, including, type, model, and make of the device, and version of operational software or firmware currently in use onclient devices client devices - In one aspect, the
update server array 122 receives the identity information fromindividual client devices update package update server array 122 subsequently locates the requested archived update packages and transfers the requested update package to the client device. Theupdate server array 122 may further automatically transfer theupdate package 110 to theclient device 104 without a request from theclient device 104. - Advantageously, the
update server array 122 may coordinate the transfer of a plurality ofupdate packages client devices client devices update server array 122 retrieves from memory or storage archive the required version of the update packages 110 a, 110 b, 110 c and subsequently transfers the desiredupdate package particular client device update server array 122 may automatically transfer the update packages 110 a, 110 b, 110 c to theclient devices client devices - Alternatively, the
update server array 122 may create a server manifest comprising a list of archived update packages 110 a, 110 b, 110 c including operational software version information, which pertain to a wide range ofparticular client devices client devices more client devices update server array 122 may transfer the server manifest to the one ormore client devices more client devices update package update server array 122 to the one ormore client devices - In another aspect, the
update package 110 may be sent from theupdate generator 100 to theupdate server array 122 through at least one of the above-mentioned communications media, which promotes increased availability of the update packages 110 a, 110 b, 110 c to the one ormore client devices update server array 122 is a multi-platform computing device capable of conveniently storing a plurality ofupdate packages devices client device update server array 122 may recognize the one ormore client devices more client devices update package 110 may be sent to theclient device 104 and further processed by theclient device 104 using software components capable of decoding theupdate package 110 - and altering the operational software components designed and designated to be updated and/or converted. Aspects of the client side update process will be discussed in greater detail herein below. Although illustrated as separate computing components in FIG. 1B, it will be appreciated that the
update server array 122 andupdate generator 102 may comprise a singular entity with the necessary scope and functionality to serve as both theupdate server array 122 and theupdate generator 102. - In another embodiment, the update computing architecture of the
update server array 122 includes an additional component referred to as a collector, which collects information and updates for other devices capable of being updated using at least one of the update packages 110 a, 110 b, 110 c generated by theupdate generator 102. In this particular embodiment, the collector may communicate with both theupdate server array 122 and the one ormore client devices client devices client devices client devices update server array 122. Additionally, the update packages 110 may be scheduled for delivery at various times to stagger the distribution load so that the servers are not overrun by simultaneous update requests from large numbers of client devices. - In one aspect, this method of distributing updates comprises caching the information on one or more servers to scale down network traffic. Using this method, the ‘latest’ update files can be stored on the servers and the update packages can be downloaded from the device servers directly by client/server communications without the need for additional communication between the server and the
update store 133 or theupdate generator 102. - FIG. 1C illustrates still another embodiment of an
update distribution system 130. Theupdate distribution system 130 includes theupdate generator 102, the plurality ofclient devices update server array 132 that was previously illustrated in FIG. 1B. The component version of theupdate server array 132 further comprises anupdate store 133, having amanagement component 134, and at least one update device server 136. In one aspect, theupdate store 133 archives a plurality of update packages transferred from theupdate generator 102. - In many circumstances, operational software systems require periodic updates from older versions to newer versions. In addition, multiple updated versions of operational software may be required throughout the life of a client device for reasons of adapting to advances in computing technology. To satisfy these requirements, the
update generator 102 generates update packages as newer versions of operational system software become available and then transfers the plurality of update packages to theupdate store 133 for storage and archiving in a memory or storage component. - In an exemplary application, the update management system may be used in conjunction with over the air updating of portable electronic devices, such as cellular or mobile phones. Mobile communications technology is a rapidly changing field which strives to meet the rising demands and expectations of its users. Mobile phones are also micro-computing devices utilizing integrated operational system software. The operating software, throughout the life of the mobile phone, may require periodic software updates for increased adaptability to changes in wireless communications technology. Updating in the mobile communications industry is complicated by the presence of many different manufacturing entities with each having their own operational software systems and user functionality being integrated into various makes and models of mobile phones. In this circumstance, the
update generator 102 is capable of meeting the adaptive demands of industry by generating aproper update package client devices - Client-Side Update Determination
- In one aspect, the
client device 104 establishes a communication link with theupdate store 133 and transfers identity information including, type, model, and make of the device, and code version currently being used by theclient device 104. Theupdate store 133 responds by transferring the server manifest, to the client. As previously described the server manifest contains version information describing available update packages. Furthermore, the server manifest may describe the update package characteristics such as file size so that the client can determine if enough space is available in the client storage area to receive and unpack the update package. After comparing the available code versions described in the server manifest to the onboard code version found in theclient device 104, further a request for theappropriate update package 110 may be submitted by theclient device 104. Upon receive the request theupdate store 133 references and searches for the desiredupdate package 110, which corresponds to the correct instruction set for proper conversion of the older code version to the requested newer code version. In one more aspect, theupdate store 133 receives the request submission, and theupdate management component 134 processes the request submission, and locates the desiredupdate package 110 on theupdate store 133 or the update device servers 136. Once theparticular update package 110 has been located, theupdate management component 134 references the desiredupdate package 110 and directs the update device server 136 to establish a communication link with theclient device 104 to transfer the desiredupdate package 110 to theclient device 104. - Server-Side Update Determination
- In another embodiment, the
client device 104 establishes a communication link with the update device server 136 and transfers identity information including, type, model, and/or make of the device, as well as version of operational system software currently being used by theclient device 104. Theupdate device server 136 a analyzes the identity information and checks the server manifest or queries theupdate store 133 for the presence of theupdate package 110. After comparing the available versions of operational software on the server manifest orupdate store 133 to the onboard version of operational software transferred by theclient device 104, theupdate store 133 directs the transfer of theupdate package 110 to theclient device 104. - In one aspect, the
update package 110 is transferred from theupdate store 133 to the update device server(s) 136 for distribution toclient devices 104 as requested. In this case, the update device server(s) 136 acts as gateways which transfer the update packages 110 to clients as requested by theupdate store 133. Use of the update device server(s) 136 desirably improves load balancing and reduces bandwidth limitations imposed by havingmany client devices 104 connected to the same update package provider. - In one aspect, if the
particular update package 110 that is requested or determined to be required by theclient device 104 is not available in theupdate store 133, then theupdate management component 134 may transfer a request to theupdate generator 102 to generate theparticular update package 110. Once theupdate package 100 is generated, theupdate generator 102 transfers theupdate package 110 to theupdate store 133 for storage and request servicing. After saving theupdate package 110 in the memory or storage area of theupdate store 133, theupdate management component 134 may transfer the desiredupdate package 110 to the update device server 136. Subsequently, the update device server 136 may establish communication with theclient device 104 b and transfer the requested update package to theclient device 104. - FIG. 1D illustrates yet another embodiment of an
update distribution system 140. Theupdate distribution system 140 includes theupdate generator 102, a plurality ofclient devices update server array 142 that is similar in scope and functionality of theupdate server array 122 as illustrated in FIG. 1C. Theupdate server array 142 includes theupdate store 133, comprising theupdate management component 132, and a plurality ofupdate device servers update device servers client devices 104 a-104 i and may bi-directionally communicate with theclient devices 104 a-104 i to send or receive version or manifest information. This particular embodiment illustrates that theupdate management component 134 of theupdate store 133 may communicate and coordinate the activities of a plurality ofupdate device servers update device servers update distribution systems update packages 104 over one or more hardwired or wireless communications mediums, such as the Internet or wireless local area networks (WLAN). This embodiment of theupdate distribution system 140 can desirably service the update requirements for a plurality of different client services. Furthermore, theupdate distribution system 140 can utilize a plurality of different communications means to exchange information and update packages with the client devices. - FIG. 2A illustrates an overview of an update query, retrieval and installation process or update
installation process 200 that details the communication between the client devices and theupdate distribution system 140. Theupdate installation process 200 commences in astart state 202 and subsequently proceeds to astate 204, where theclient device 104 establishes a communication link with the update device server 136. Theupdate installation process 200 then proceeds to astate 206 where theclient device 104 polls the update device server 136 for the server manifest. In one embodiment, the server manifest may be transferred from theupdate store 133 to the update device server 136, or the update device server 136 may retain the sever manifest in an onboard memory or storage component for ease of reference. In one aspect, the polled server manifest comprises information used to determine the latest available version of the software, file system, or hardware to be updated. Additionally the server manifest may contain information that describes the size of the update package and other variables used to determine whether an available update is different from the existing file, software component, or firmware present in theclient device 104. The polled server manifest may further include an update signature which identifies characteristics of the new code version. - Once the server manifest is transferred to and obtained by the
client device 104, the update installation process advances to astate 208 where theclient device 104 compares the update signature in the server manifest with that of the existing operational software present on theclient device 104. A comparison process may be used by theclient device 104 to determine, in astate 210, if theupdate package 104 should be downloaded from the update device server 136 and installed on theclient device 104. After the comparison is completed, theupdate installation process 200 advances to thestate 210. If theclient device 104 determines that an update version of the operational software is not desired, needed, or required in thestate 210, theupdate installation process 200 terminates in an end state 220 and may remain inactive until the next scheduled or user-prompted activation. - Alternatively, if the
client device 104 determines that an update version of the operational software is desired in astate 210, then theclient device 104 requests theupdate package 110 from the update device server 136 in astate 212. In thestate 212, the update device server 136 transfers the request for theupdate package 110 to theupdate store 133, where theupdate management component 134 searches theupdate store 133 for an available version of the desiredupdate package 110. Furthermore, if the archived version of the desiredupdate package 110 is determined to exist and is available, then the desiredupdate package 110 is retrieved from the archival memory or storage area of theupdate store 133 and transferred to the update device server 136 if necessary. Thereafter, the update device server 136 transfers the desiredupdate package 110 to theclient device 104. In astate 214, theclient device 104 receives theupdate package 110, and the update installation process advances to astate 216 where theclient device 104 subsequently installs theupdate package 110. Aspects of the installation operation will be discussed in greater detail herein below. - In another embodiment, when in the
state 214, if theupdate management component 134 determines that the archived version of the desiredupdate package 110 does not exist or is unavailable, then theupdate management component 134 sends a request for the desiredupdate package 110 to be generated by theupdate generator 102. At this point in theupdate installation process 200, the client device may wait for the desiredupdate package 110 to become available. While theclient device 104 waits, theupdate generator 102 produces the desiredupdate package 110 and transfers theupdate package 110 to theupdate store 133. When theupdate package 110 is available, theclient device 104 receives the desiredupdate package 110 for the subsequent installation in thestate 216. Theinstallation operation 216 will be discussed in greater detail herein below. - In one aspect, after retrieving and installing the desired
update package 110 theupdate installation process 200 terminates in theend state 218. After updating to the desired version of the file or software component and performing other functions according to developer specifications, theclient device 104 may proceed to check for additional updates that may be desirably applied to other file or operational software components. Thus, theupdate installation process 200 may be repeated periodically as needed or desired for additional update queries. In one exemplary update sequence, if the software component has been successfully updated fromversion 1 toversion 2, theupdate installation process 200 will check for the availability of an additional version (i.e. version 3) from theupdate store 133 and proceed to retrieve and install these incremental updates until the file of software component has been updated to the most current version available. - Alternatively, in another embodiment, the
update installation process 200 may recognize the presence of multiple available updates (versions) and proceed to update the file or component using the most current version available without sequentially applying each possible update package (i.e.version 1 updated directly to version 3). Following completion of the update cycle for a particular file or software component, theupdate installation process 200 may determine if other files or software components require updating. Further updates may be processed as before, beginning with the comparison of theupdate signature state 208 until all files have been updated, and wherein theclient device 104 may terminate its operation in theend state 216 and remain inactive until the next activation of theupdate installation process 200. Theclient device 104 may be configured to query and retrieve updates automatically, or alternatively the update process may be a user initiated function. - It will be appreciated that the above-mentioned
update installation process 200 may be simultaneously and/or separately applied to one or more client devices through one or more update device servers without departing from the scope of the present invention. Furthermore, the above-mentionedupdate installation process 200 may be applied to any of the above-disclosed embodiments of theupdate distribution systems - In one aspect, if the
update component 102 is scheduled to operate automatically, then theupdate component 102 may remain active in the background until the next scheduled operation or alternatively be activated at the time that theupdate installation process 200 is desirably initiated. The activities comprising theupdate installation process 200 may further be visible or transparent to the user, according to the developer's preference. Additionally, following the process of polling the server manifest in thestate 206 and identifying a difference between the existing version of the file and the latest version available on theupdate device server 132 in thestate 208, theclient devices 104 may notify the user that an update is available and wait for permission to retrieve the update or alternatively, the client device may be configured to automatically retrieve the desired update package (either with or without notifying the user). - FIG. 2B illustrates another embodiment of an
update installation process 250 that may be used in connection with the aforementioned update distribution systems described in FIGS. 1A and 1D. Theupdate installation process 250 commences in astart state 252 and subsequently proceeds to astate 254, where theclient device 104 establishes a communication link with the update device server 136. Subsequently, theupdate installation process 250 proceeds to astate 256 where the update device sever 136 requests an update information query from theclient device 104. The update information query includes identity information, such as type, model, and make of the device, and version of operational software currently being used by theclient device 104. In one embodiment, the identity information may be automatically transferred from theclient device 104 to the update device server 136 upon establishing the communication link. Additionally, the update information query may also include the update signature which identifies the characteristics of a particular file or update component in the new code version. - When the update information query is transferred to and obtained by the
client device 104, theclient device 104 responds by transferring the requested update information in the query to theclient device 104. Theupdate installation process 250 then advances to astate 258 where theclient device 104 receives and processes the update information query by comparing the update signature of the new code version of the with that of the existing code version currently in use by theclient device 104. A comparison process may be used by theclient device 104 to determine, in thestate 258, if theupdate package 104 should be transferred from theupdate store 133 and installed on theclient device 104. After the comparison is completed, theupdate installation process 250 advances to astate 260 where theupdate client device 104 determines the availability of theupdate package 110 from the update information response. If a newer code version is not available in theupdate store 133, then theupdate installation process 250 terminates in anend state 280, and theupdate installation process 250 may remain inactive until the next scheduled or user-prompted activation. - Alternatively, in the
state 260, if theclient device 104 determines from the update information response that the updated code version is available in theupdate store 133, then theclient device 104 may further determine, in astate 262, from the update information query whether or not theclient device 104 has enough memory available to store theupdate package 110. If theclient device 104 determines that enough memory or storage space is available in theclient device 104 for theupdate package 110, then the update device server 136 processes the client update request in astate 264. The update device server 136 then transfers theupdate package 110 to theclient device 104 in astate 266. After receipt of theupdate package 110, the update installation process advances to astate 268 where theclient device 104 installs theupdate package 110. Theupdate installation process 250 is then terminated in anend state 280 until another update request is made. Additionally, details of the update package installation procedure will discussed in connection with FIG. 10 herein below. - Alternatively, in the
state 262, if theclient device 104 determines that there is not enough memory or storage space available or allocated in theclient device 104 to accommodate theupdate package 110, then theclient device 104 submits a request, in astate 270 to perform an allocation procedure where additional memory or storage space is freed up to accommodate the download transfer of theupdate package 110. In one embodiment, to allocate space for the download transfer of theupdate package 104, theclient device 104 may write current files stored in a first data area (i.e. RAM) to a second data area (i.e. onboard flash memory). Alternatively, theclient device 104 may compress the files stored in the first data area to make more space available for the update package. To further allocate memory, theclient device 104 may transfer files to the update device server 136 for temporary storage until theupdate package 110 is installed. It will be appreciated that a combination of the aforementioned memory allocation schemes may be used to create sufficient room to receive theupdate package 110. Additionally, other memory allocation schemes may be used without departing from the scope of the present invention. - When the
client device 104 completes the space allocation in thestate 270, theupdate installation process 250 advances to astate 272, where, if enough space is made available on theclient device 104 for the download transfer, then the update installation process proceeds to thestate 264 for thesubsequent update request 264, update transfer andreception 266, and updateinstallation 268. Otherwise, the update installation process proceeds to terminate in theend state 280, due to the determination by the update device server 136 that there is not enough space allocated on theclient device 104 to accommodate the download transfer of theupdate package 110. In one embodiment, the update device server 136 may send theupdate package 110 to theclient device 104 in subsections to accommodate the space limitations of theclient device 104. The subsections are applied sequentially to complete the update process using a limited amount of available space on theclient device 104. - In one embodiment, the installation procedure performs authentication and validation of the integrity of the
update package 110 by theclient device 104. Thereafter, the update package is saved to non-volatile memory or storage on theclient device 104 and theclient device 104 is rebooted if necessary. Subsequently, theupdate package 110 is then decompressed and the instruction set is executed to initiate the installation of the update. It should be appreciated that the above-mentioned installation procedure may be altered or rearranged without departing from the scope of the present invention. - In one embodiment, update packages110 are made available to the
update server array client devices 104 through the use of anupdate generator 102 and associated processes. FIG. 3 illustrates anupdate creation process 300 used to form theupdate package 110. Theupdate creation process 300 uses configuration parameters associated with theupdate generator 102 and information present in the existing code version, which is desirably updated to a newer code version. Theupdate creation process 300 commences in astart state 302 and advances to astate 304, wherein an existing file, comprising the current code version is opened. The current code version comprises a file or image that is a representation of the information contained in the electronic device to be updated. In one aspect the current code version reflects the binary code or encoded information stored in the device which is identified and stored in the form of an image file. For example, in the case of a mobile phone, the current code version may reflect the contents of the memory or storage area to be updated. The contents of the memory or storage area may further comprise the operating system code, application code, firmware contents, or other instruction sets used by the electronic device to convey functionality. - One significant feature of the update management system and methods is that the update process operates in a code-independent manner. Updates are generated using images or simulated representations of the memory or storage area to be updated. Update operations need not operate at the instructional level but rather can operate at a high level (i.e. a file level) or at a lower level (where information comprising the instructions is represented in binary, hexadecimal, or other similar forms). The update process therefore recognizes the current code version based on a digital information sequence comprising a designated word sequence or pattern. In one aspect, the size or length of the work may be flexibly defined as a bit, byte, instruction, file, or other informational sequence which is subsequently compared to the desired code version represented by a second word sequence and differences between the two sequences are identified. Thus the update process is not necessarily limited to a particular convention such as determining which instructions need to be replaced to obtain the desired code version, but rather, what word sequences should be changed to transform the existing code version into the desired code version.
- Upon opening the image of the current code version the
update generator 102 subsequently compiles a collection of digital information sequences from the image for use in astate 306. In generating theupdate package 110, the collection of digital information sequences may be used to generate an image representing the desired thesecond code version 108. Details of how this collection of digital information sequences is used in instruction set generation and subsequent modification of the existing code version into the new code version will be described in greater detail with reference to FIGS. 5 and 6. - In the
state 306, theupdate generator 102 pre-processes the existing image by searching for digital information sequences that will be used to build a hash table. The hash table includes a plurality of hash values that comprise addresses of particular digital sequences in the first code version that are stored in a data structure for subsequent lookup and retrieval. The hash values correspond to digital information sequences in the existing image, which may be used to build the newer code version. In one aspect, the hash array is formed from the existing code version and identifies strings of digital information sequences in the existing code version. Further details of the hash array will be discussed in connection with FIG. 4 below. - After building the
hash array 330 from the existing code version in thestate 306, theupdate creation process 300 proceeds to astate 308 where a new file is opened that will be used to store the instructions used to transform the first code version into the second code version. The new file eventually become theupdate package 110 which is made available to the servers for transfer to the clients when updating is requested or desired. Theupdate creation process 300 then advances to astate 310 where theupdate package 110 is generated. As will subsequently be described in greater detail, the instruction set is formed using a plurality of sequence identification and transformation functions that identify operations, instructions, parameters, or digital information sequences which, when executed in an appropriate manner, will transform the existing code version into the updated code version in an efficient manner. During thisstate 310, the informational composition and sequence of the existing code version is assessed and instructions are identified to transform the existing code version into the new code version. - Following the completion of the code version analysis and instruction set generation in the
state 310, theupdate creation process 300 proceeds to astate 312 where the generated instruction set may be encoded to provide a degree of security that prevents unauthorized access to the contents of the update instruction set. Additionally, the instruction set may be further compressed by utilizing various compression schemes, such as LZW compression, to reduce the overall size of the resultingupdate package 110. The compressed/encoded instruction set is then as theupdate package 110 instate 314 and may include stored header information, which is used to validate the contents of theupdate package 110, identify the version of the update, and\or similar functions. Theupdate package 110 may further be transferred to the plurality ofupdate device servers state 314, where theupdate package 110 is published and made accessible to the plurality ofclient devices 104 a-104 i for downloading. After saving/publishing theupdate package 110, theupdate generation process 300 terminates in anend state 316. - FIG. 4 illustrates one embodiment of a
hash array 330 discussed in connection with FIG. 3 above. Thehash array 330 comprises a plurality of hash values 340-343 that are used to store and reference one or more addresses 350-356, which correspond to the position of a plurality of digital information sequences or words 360-366. In one aspect, the digital information sequences or words comprise words having known lengths or sizes. Each word 360-366 may further comprise one or more bits, bytes, or other recognizable quantum of information. The word length used in the update process need not necessarily be fixed and may instead be flexibly assigned as determined by the update management system or the manner in which information is stored in the electronic device. - In one aspect, the length of the words360-366 for which hash values 340-343 are calculated is selected to be of a length recognized by the architecture of the electronic device. These hash values 340-343 are stored in the hash array. 330 and used by the update generator to determine if a desired word required in the updated code version can be obtained from the current code image. In one aspect, the length of the words 360-366 used in creating the hash value 340-343 is selected to have a discrete word length comprising one or more bits, bytes, or other commonly used quantum of information. It will be appreciated however, that other word lengths can readily be used in generating the hash value 340-343.
- By using a known word length for the determination of the hash value340-343 the update generator can create a summary or database of words that can be found in the existing code version which may be copied and utilized in forming the new code version. Additional details of the implementation of the hash table and its use in generating the
update package 110 will be described in greater detail in FIGS. 6A-6H herein below. In one aspect, the hash values of thehash array 330 are used to reference the words comprising the words by referring to the starting address for a particular sequence that is identified as desirably containing a string of information that can be used in construction of the new code version. - The addresses350-356 are saved into the data structure of the
hash array 330 as the calculated hash values 340-343 which are referenced by theupdate generator 102 to form instructions that reference existing code section used during the update process. In one aspect, when developing thehash array 330, theupdate generator 102 assigns hash values for particular words that comprise distinct or desirable digital sequence characteristics, such as a unique sequences, frequently encountered sequences, and/or a difficult to reconstruct sequences. In one embodiment, the primary function of thehash array 330 is to efficiently locate ‘identical’ word between a target sequence (e.g. a sequence required in the updated code version) and a source sequence (e.g. a sequence presently located in the existing code version). Thehash array 330 is further used to determine the start address for the ‘identical’ word in the existing code version so that this word can be ‘recycled’ or ‘reused’ in the updated code version. Thus, words that are identified to already exist in the code need not be included in the update package but rather one or more instructions may instead be used to retrieve and/or copy the existing word information into new locations in the updated code. This feature substantially reduces the required size of theupdate package 110 as the instructions used are typically smaller than the corresponding sequence for which they identify. It will be appreciated that each hash value 240-343 may be accessed numerous times to generate the same word in one or more locations and can be used as needed to efficiently generate required words. - One desirable feature of the
hash array 330 is that it serves as a “dictionary” of available digital information sequences or words present in the existing code version. The update generator uses these code sequences or words to produce the new code version by rearranging and copying this information. By “reusing” code in this manner, the update package is desirably reduced in size as instructions for code copying and rearrangement are typically significantly smaller in size compared to the literal code sequence or word. Thus, a single instruction may be able to produce code equivalent to many bits or bytes of information. - In the
hash array 330 shown in FIG. 4, the address “a” corresponds to the address where aword 360 corresponding to the bit sequence “110010” can be found in the previous code version. The code generator may specify an instruction that desirably accesses thisindex 340 in thehash array 330 and furthermore may specify a length of information that is to be copied from the word at this location. For example, bit sequences which may be obtained from the word at address “a” include “1”, “11”, “110”, “1100”, “11001”, “110010”, and so forth. Similarly, the word at address “b” may be used to generate bit sequences including “1”, “10”, “101”, “1010”, “10100”, “101000”, “1010001”, “10100011”, and so. - By identifying words or sequences in the existing code version that can be used in the new code version the amount of information which must be contained in the
update package 110 is desirably minimized. As previously noted, the sequence corresponding to each word which is addressed by way of example may instead represent other quantum of information including one or more bits, bytes, files or other recognized sizes and lengths of information. It will therefore be appreciated that these other configurations of information can be addressed in a similar manner (ie., bit-wise addressing, byte-wise addressing, file-wise addressing, etc.) - In another aspect, one or more words, which may comprise bit or byte sequences, can be formed by linking information located at various addresses. For example, the
hash value 342 corresponds to the linked addresses “d”, “k”, and “s” with each address associated with a particular work 362-364. In a manner similar to that described above, variable portions of each word from each address may be concatenated together to generate still further combinations of word patterns. In one aspect, the addresses for a particular hash value are associated using a linked list data structure. The association of addresses can be used to concatenate information located in close logical proximity as shown for thehash value 342 and may further associate disparately arranged information as shown by thehash value 343. Thishash value 343 comprises the addresses “h” and “w” for thewords hash value 343 may also be formed in a manner such that sequential row or bank numbers of the memory or storage area are arranged to create the desired sequence of information. For example a first bank number may correspond to a first address in thehash value 343, a second bank number may correspond to a second bank address, and so forth. It will be appreciated that the concatenation of address information may be applied in many different combinations using a plurality of addresses to generate large numbers of possible informational sequences that can be used to form the new code version. Additional details of the memory or storage bank arrangement, the formation and configuration of the instruction set using hash values 340-343, and the resultant generation of desirable digital information sequences using existing code will be described in greater detail herein below. - FIG. 5 illustrates one embodiment of an instruction
set generation process 400, which is used by theupdate generator 102 to generate the instruction set used to convert the first code version into the second code version. In one aspect, thisprocess 400 functionally describes the manner in which the instructions are selected for use in theupdate package 110. Thisprocess 400 further identifies a plurality of instructions that perform the code conversion or version update in an efficient manner. In one aspect, the instructionset generation sequence 400 assesses numerous combinations of instructions that may be used to perform the code conversion and desirably identifies instructional combinations that reduce the amount of information that must be included in theupdate package 110. This in turn reduces the size of theupdate package 110 and reduces the transmission time needed to send theupdate package 110. By using existing code sequences when possible, in combination with specialized instructions that may be applied to the code, the previous code version is desirably transformed into the new code version in a manner that further reduces the amount of information that must be included in theupdate package 110. - The instruction
set generation sequence 400 commences in astart state 402 and then advances to astate 404 where theupdate generator 102 initializes a pointer corresponding to the beginning of the existing file or code version. The pointer maintains a reference position that may used by the sequence analysis functions to determine when the digital information sequence analysis is complete. In one aspect, the digital information sequence analysis comprises a plurality of comparison functions each used to analyze a corresponding instruction type. These instructions may include an existing sequence instruction, a run length instruction, a hash instruction, and a default instruction. It will be appreciated that the aforementioned instructions and corresponding comparison functions are but several of many possible instructions that may be used in the instruction set generation sequence and other instructions may be devised and used in conjunction with the update management system and methods. - At
state 406, the comparison functions are applied against the code corresponding to location where the pointer indicates and a determination is made as to how much new code can be generated using each of the instructions related to the comparison functions. In one aspect, the comparison functions use the instructions to provide a separate method for representing particular code fragments. In some instances, one instruction will provide better performance than another instruction depending on the code composition. For example, based on a given code sequence present within the existing code version at the location of the pointer, the existing sequence may be able to translate 3 words of information, therun length function 5 words of information and thehash sequence function 8 words of information. Atstate 408, the process identifies which of the comparison function exhibits the best characteristics relative to the other comparison functions. Typically, the best result is identified as the comparison function that generates the largest code sequence using a single instruction or group, of instructions. In the case of the example above, the hash sequence function exhibits the longest word representation (8 words) and would be preferentially selected over the other comparison functions which translate less code relative to the hash sequence function. Of course, for other code sequences, one of the other comparison functions may be more desirable and have the ability to translate a larger code section relative to the other comparison functions. - Upon selecting the “best result” from the comparison functions at
state 408, theprocess 400 proceeds to astate 410 where a determination is made as to whether or not the identified comparison produces an efficient result. In one aspect, efficiency is measured as a function of the amount of code that can be represented by a single instruction. A threshold of efficiency is used to insure that the identified “best result” is at least as efficient or more efficient than a default instruction function comprising incorporating the literal string directly into theupdate package 110. If the identified best result function is more efficient than the default instruction then the instruction coding for the information sequence coded by the comparison function is incorporated into theupdate package 110 and the pointer is updated to the first section of information immediately following the code translated by the comparison function in astate 412. Otherwise, if the default instruction is determined to be more efficient than the “best result” function, then the default instruction is included in theupdate package 110 instate 414 and the pointer updated in a similar manner instate 412. - After updating the pointer in
state 412, theprocess 400 determines if the pointer has reached the end of the file instate 416. If the pointer has not reached the end of the file, then the process proceeds tostate 406 where the sequence analysis commences for the next code section and may be repeated as necessary using the updated pointer position as a reference. In this manner, the entire file is “stepped through” by progressively incrementing the pointer as the comparison functions are successfully implemented and the most efficient instruction selected. When the end of the file is reached, the instructionset generation process 400 advances to astate 408 where the process terminated and theupdate package 110 comprising the selected instructions determined in the previous steps is packaged and made ready for distribution. - As previously indicated, the digital information sequence functions update or change the pre-existing digital information sequences in an older code version, such as the
first version 106 in FIG. 1, to updated digital information sequences in the newer code version, such as thesecond version 108 in FIG. 1. In one embodiment, the instructionset generation sequence 400 may use additional instructions for an increased conversion efficiency by providing other methods for updating the code version. Details of each of the disclosed comparison functions will be described in greater detail in connection with FIGS. 6A and 6D. In the following description and associated Figures, exemplary bit and byte sequences corresponding to different word lengths are shown. It will be appreciated that these examples represent but a few of the many possible embodiments of word lengths and sizes that may be used in conjunction with the update management system and methods. - FIG. 6A illustrates one embodiment of a run length encoding (RLE)
instruction 500 that may be used in conjunction with the aforementioned instructionset generation process 400. Afirst word sequence 502 representative of a digital information sequences from thefirst code version 106, and asecond word sequence 504 representative of a digital information sequence from thesecond code version 108 as shown. When thesecond word sequence 504 that starts at a particular position of thesecond code version 108 is determined by theupdate generator 102 to comprise consecutive series of aparticular word 506, such as a value of “W1”, then theRLE instruction 500 may be used for a specified word length (N) 508, such as in this case N=6, to generate the desired digital information sequence. The word length is the quantity of word components that are sequentially repeated without interruption by a different value. Using the RLE instruction, repeated word patterns can be readily reconstructed using a single instruction. This instruction desirably occupies less space in the update package compared to the corresponding number of words to be represented in the second code version. TheRLE instruction 500 can further be used to specify that a particular word sequence in the first code version is overwritten or modified to form the second code version. Thus, as shown in the illustrated embodiment, the word pattern “W1,W2,W3,W4,W5,W6” in the first code version may be overwritten in the second code version to form the word pattern “W1, W1, W1, W1, W1, W1”. Alternatively, only a portion of the existing word pattern may be overwritten in the new code version by the consecutive word pattern or the consecutive word pattern may be concatenated on to an existing word pattern. Additionally, one or more word components may be specified by the word length 508 a specified in theRLE instruction 500 therefore word patterns including “W1”, “W1, W1”, “W1, W1, W1”, “W1, W1, W1, W1” and so on can be generated using the RLE instruction with a different word length parameter. - In one aspect, the
first word sequence 502 that starts at the same particular position of the digital information sequence from thefirst code version 106 is replaced with a repeating word sequence of an equivalent length in the second code version. Said another way, theRLE instruction 500 identifies word-wise repeating digital information sequences beginning at a particular position in the file code and replaces the pre-existing digital information sequence using a single instruction. Additionally, if theRLE instruction 500 is later determined to yield the “best” result, as described in thestate 408 in FIG. 5 then theRLE instruction 500 for the repeatingword-wise sequence 504 is stored in an instruction list along with other parameters, such as the desired number ofrepetitions 508 of the word. The instruction list represents the series of instructions that are identified by the sequence analysis and instructionset generation function 400 that is required to transform the first code version into the second code version using theupdate package 110. - One advantage to using the
RLE instruction 500 is that consecutive strings of word-wise components in the digital information sequence may be easily placed in the newer code version with a single instruction. Another advantage of using theRLE instruction 500 is that this instruction is relatively simple to execute due to the repetitive nature of the consecutive word-wise string of thesecond word sequence 504, which will be used to generate the desired digital information sequence. - FIG. 6B illustrates one embodiment of an existing sequence (EXS) or
duplicate instruction 510 where afirst word sequence 512 representative of a digital information sequence from thefirst code version 106, and asecond word sequence 514 representative of a digital information sequence from thesecond code version 108 are shown. If thefirst word sequence 512 that starts at a particular position of the digital information sequence from thefirst code version 106 is the same or substantially identical to thesecond word sequence 514 that starts at the same particular position of digital information sequence from thesecond code version 108, then theEXS instruction 510 may be used for a specified word length (N) 518, such as in this case N=4, to reflect the similarity. As previously shown for theRLE instruction 500, theEXS instruction 510 desirably comprises aword length parameter 518 which is used to determine the extent of the similarity between the first and the second code versions. - In one aspect, the
EXS instruction 510 is used by theupdate generator 102 to identify the existing word sequence which remains unchanged between versions of the code and therefore does not need to be updated or altered during the update process. Furthermore, if theupdate generator 102 determines that the existing sequence instruction yields the “best” result during the digital information sequence analysis, then theEXS instruction 510 along with the specified word length 518 a may be stored in the instruction list along with other parameters, such as the number of repetitions of the digital information sequence. One advantage to using theEXS instruction 510 is that pre-existing word-wise digital information sequences which remain unchanged may be identified and a single small instruction may be incorporated into theupdate package 110 to reflect the similarity rather than incorporating redundant or unnecessary code. - FIG. 6C illustrates one embodiment of a copy from address or hash (HSH)
instruction 520. Afirst word sequence 522 representative of a digital information sequence from thefirst code version 106, and asecond word sequence 524 representative of a digital information sequence from thesecond code version 108 is shown by way of example. If thefirst word sequence 522 that starts at a particular position of the digital information sequence at anaddress 526, such as in this case address “b”, from thefirst version 106 of operational software code is the same or significantly identical to thesecond word sequence 524 that starts at a different position of digital information sequence from thesecond version 108 of operational software code, then theHSH instruction 520 may be used for a specified word length (N) 528, such as in this case N=6, to reflect the update package digital information sequence. - In one aspect, the hash sequence function finds words by calculating hash values for fixed length digital information sequences. The hash values are then compared to the hash table values. If the value of the calculated hash value matches that of a stored hash table value then the start address for the digital information sequence corresponding to the stored hash table value is obtained. When such a match has occurred, a more detailed scanning of the word at the specified address is then performed to determine the maximum length of the word which can be utilized. If the hash table contains more than one stored hash value that matches the calculated hash value, then each possibility may be evaluated and the longest match or most efficient match may be used as the result.
- The
HSH instruction 520 involves a hash sequence function, wherein theupdate generator 102 utilizes existing word sequences referenced by addresses stored in the hash table 330 to determine digital sequence matches corresponding to calculated hash values found in the hash table data structure. For example, if theupdate generator 102 determines that the hash sequence function yields the “best” result of the digital information sequence analysis, then theHSH instruction 520 along with the specifiedaddress location 526 and the specifiedword length 528 may be stored in the instruction list along with other parameters, such as the number of repetitions of the digital information sequence. One advantage to using theHSH instruction 520 is that pre-existing word-wise digital information sequences may be identified in the existing code where the hash table 330 acts as a dictionary of available word. TheHSH instruction 520 therefore reflects the ability of the update generation process to recycle code sequences or words in a novel manner rather than including these sequences or words within theupdate package 110 directly. Another advantage of using theHSH instruction 520 is that thisinstruction 520 may be used to generate large sections of code by combining various code sections reflected by the addresses referenced in the hash table. For example, as shown in FIG. 6C, the word sequence “W3, W4, W5, W6, W7, W8, W9, W10” in the second code version may be desirably identified in the first code version at the address “b”. TheHSH instruction 520 uses this address as a reference and copies the code present at this location into the desired location in the second code version. The instruction to perform this operation is desirably smaller in size than incorporating the literal string referenced by the address. Thus, the instruction “HSH b , N” may be used to copy the entire contents of the string located at address “b” and having a length specified by the value of N (N=8 in the example to copy the string “W3, W4, W5, W6, W7, W8, W9, W10”). - FIG. 6D illustrates one embodiment of a default (DEF)
instruction 532. As previously indicated theDEF instruction 532 is applied by the instructionset generation process 400 when no other instruction can be found to efficiently represent the desired digital information sequence. TheDEF instruction 532 is used to replace a digital information sequence from thefirst version 106 of operational software code with the literal contents of a string or other information sequence associated with the DEF instruction. In other words, theDEF instruction 530 identifies word-wise patterns of digital information sequences that do not match pre-existing digital information sequences in the file code of thefirst code version 106 and cannot be efficiently reconstructed using other instructions. If theDEF function 530 is determined to yield the “best” or most efficient result of the digital information sequence analysis, then theDEF instruction 530 for the patternedword-wise sequence 534 is stored in the instruction list along with the literal contents of the string or information sequence to be inserted. Thus, the instruction “DEF W15, W16, W17, W18, W19, W20” may be used to copy the literal contents of “W15, W16, W17, W18, W19, W20” into the desired location. One advantage to using theDEF instruction 530 is that non-existing strings of word-wise components in the digital information sequence may be readily inserted in the newer code version of with a single instruction that is desirably incorporated into theupdate package 110. - FIG. 7 illustrates one embodiment of a reconstructed
digital information sequence 550, wherein the reconstructedsequence 550 may be obtained using aninstruction set 552 comprising a plurality of instructions used to generate portions of thesequence 550. In the illustrated embodiment, the reconstructedsequence 550 is generated using word-wise instructions. The process of implementing thefirst instruction set 552 comprises sequentially applying theinstructions word sequence 550. Following a step-wise execution of the instructions of the instruction set, theRLE instruction 500 generates a first bit sequence in the update file, which corresponds to the run length encodedbit sequence 504. TheRLE instruction 500 generates the bit sequence “W1, W1, W1, W1, W1, W1, W1” based on the input parameters. Advancing to the next instruction, theEXS instruction 510 generates a second bit sequence, which corresponds to the duplicatedbit sequence 514 “W1, W2, W3, W4”. The EXS instruction does not copy or alter any bits in the specified region but rather identifies the pre-existing word pattern and leaves this sequence intact. Thesubsequent HSH instruction 520 generates a third word sequence, which corresponds to the copiedword sequence 524 “W3, W4, W5, W6, W7, W8, W9, W10” from the specified address “b” 526. Finally, theDEF instruction 530 generates a fourth word sequence, which corresponds to the addedword sequence 534 “W15, W16, W17, W18, W19, W20.” As previously indicated, the DEF instruction may be used to insert one or more word patterns into the word sequence that either are not found in the existing code version or cannot be efficiently constructed using the aforementioned comparison functions. The illustrated reconstructedword-wise sequence 550 is but one example of the implementation of theinstruction set 552. It should be appreciated that theinstruction set 552 may comprise one ormore instructions update package 110 is relatively small compared to an update package that is composed exclusively of literal digital information sequences obtained from conventional differencing methodologies. As a result, transferring the relatively small update package image across a communications medium is more efficient than transferring larger literal updates used by conventional methods. - FIG. 8A illustrates one embodiment of the memory or
storage architecture 1000 for a portable electronic device to be used in conjunction with the update management system. This architecture is representative of many conventional electronic devices including mobile phones, personal digital assistants, pagers, or other devices that are to be desirably updated using the update management system and methods. - In one aspect, the
architecture 1000 comprises a non-volatile memory orstorage area 1002 and a volatile memory orstorage area 1004. Thenon-volatile area 1002 is used by the electronic device to store information in a semi-permanent state where the device may be powered down or turned off without loss of the information stored in thisarea 1002. Thenon-volatile area 1002 may be further logically subdivided to contain acode section 1006 and adata section 1008. Thecode section 1006 is responsible for storing information such as the system operating software or firmware code that provides the functionality for device operation. Thedata section 1008 stores non-essential or user-derived information or other information that may be desirably re-written or changed as necessary. In a typical mobile phone, thedata section 1008 may contain information including phone numbers, addresses, or personal memos that are saved so that they may be retrieved when needed or desired without loss due to powering down of the electronic device. - Both the code and
data sections data section 1008 also provides an area of memory or storage space that may be used during the update process to store a copy of theupdate package 110 when it is received by the client. Furthermore, thedata section 1008 may store information during the update to provide a degree of fault tolerance should the update operation be interrupted. Details of the fault-tolerant aspects of the update process will be described in greater detail in connection with FIGS. 9 and 10. - While the non-volatile memory or storage area is illustrated as having separate code and data sections, it will be appreciated that the update methods presented herein can readily be adapted to other memory or storage configurations. For example, the
non-volatile storage area 1002 may comprise a hardware storage device such as a disk drive, optical drive, or other device implementation which may be used to store information in a non-volatile manner. Additionally, in the case of the non-volatile memory storage area, the memory configuration need not be logically subdivided into separate code and data sections in order to be used with the update management system and methods. It is conceived that the aforementioned memory or storage area configuration represents but one embodiment of an architecture that may be adapted for use with the present invention and other memory or storage areas architectures and configurations can readily be adapted in a similar manner by one of skill in the art. - In one aspect, the architecture of the electronic device specifies that the non-volatile memory or
storage area 1002 is partitioned or logically divided into a plurality ofstorage banks 1010. Eachstorage bank 1010 is representative of a discrete quantity or size of storage area and may be associated with aunique address 1012. Using theaddress 1012 as a reference, thestorage banks 1010 may be individually referenced and the contents contained therein read from or written to as determined by the operating system or firmware of the electronic device. Alternatively, the contents of thestorage banks 1010 may be accessed independently of theaddress 1012 by referring to the contents themselves wherein the contents of thebanks 1010 are used as a reference to determine the present location within the non-volatile memory orstorage area 1002. Thestorage banks 1010 are arranged in a contiguous manner with bank addresses 1012 that sequentially reference thestorage banks 1010 in a predefined manner. For example, as shown in FIG. 8A, thestorage banks 1010 of thenon-volatile memory stores 1002 is allocated with a common size of 64 kilobytes (K). Thestorage banks 1010 are further arranged in a sequential manner with the first 64 K of thestorage section 1002 being stored inBANK 0, the second 64 K of the storage section stored inBANK 1, and so forth. Additionally, ablock address 1012 of “0A” is associated withBANK 0 of thenonvolatile memory store 1002, “0B” associated withBANK 1, and so forth. - It will be appreciated by one of skill in the art that the division and arrangement of
storage banks 1010 may vary from device to device and that the system and methods for update management described in connection with thenon-volatile area 1002 having 64Kbanks 1010 may be readily applied to other configurations. For example, the size of the storage banks may differ from one device to the next or more available memory or storage areas may be available. It is conceived that the present system and methods can be readily adapted to the different characteristics and combinations of the storage areas defined by thearchitecture 1000 of the memory or storage elements for numerous different types of electronic devices. - In another aspect, the volatile memory or
storage area 1004 of the electronic device is configured as a single continuous bank or storage section. Areas within the volatile memory orstorage area 1004 can be individually accessed and space contained therein can be flexibly allocated as needed or desired. Like the non-volatile memory orstorage area 1002, address information may be used to reference particular sections of thememory 1004, however, the somewhat rigid structure of the nonvolatile memory defined by banks need not be adhered to. - It will be appreciated that the aforementioned memory or storage area banks need not be exclusively comprised of identical bank sizes. Instead, each bank may vary in size with respect to other banks within the electronic device. Additionally, the banks need not be physically or logically contiguous with one another and may be addressed using logical rather than physical addressing schemes. In one aspect, with the files or contents of a personal computer or other computing device may be may be addressed in a logical manner such as for example when using a hard drive having a logical addressing scheme with files stored therein.
- Although the memory configuration described herein is representative of many conventional mobile or cellular phone storage architectures. It will be appreciated by one of skill in the art that there are numerous variations in the architecture or allocation of memory or storage areas to which the system and methods presented herein may be applied. Other memory configurations may exist for other electronic devices such as personal digital assistants, computers, satellites, and telematic devices which include not only non-volatile and volatile memory but also include other storage devices such as hard drives, optical media, and the like. Additionally, the memory architecture and allocation schema may vary from device to device, however, the system and methods described herein can readily be adapted to operate with these alternative configurations to represent but other embodiments of the present invention.
- In one embodiment the non-volatile memory or
storage area 1002 may comprise numerous types or configurations of storage space that desirably maintain information through events such as power down, interruption, and device fault. Exemplary components that may be adapted to function as suitable non-volatile memory or storage area may include hard drives, optical drives, CD-writers, DVD-writers, tape drives, flash memory devices and EPROM devices. Likewise the volatile memory orstorage area 1004 may comprise random access memory (RAM) or other volatile memory types. Alternatively, a non-volatile memory or storage area may be used instead of the volatile memory or storage area and serve similar functionality. Therefore, the aforementioned non-volatile memory or storage devices can be adapted to operate in the same manner as the volatile memory orstorage area 1004 without departing from the scope of the invention. - FIG. 8B illustrates one embodiment of the
non-volatile area 1002 which includes adownload agent 1020 and anupdate agent 1025 used to process theupdate package 110 and perform the update functions. In general, thedownload agent 1020 carries out functions related to acquiring theupdate package 110 while theupdate agent 1025 is responsible for applying the instructions contained in theupdate package 110 to desirably modify the contents of both thecode section 1006 and thedata section 1008 of the nonvolatile memory orstorage area 1002 such that upon completion of the update process the first original code version is transformed into the second updated code version. - The
update agent 1025 comprises an embedded functional component that is desirably stored in the boot sector or section of thecode section 1006 of thenon-volatile area 1002. During routine operation of the electronic device theupdate agent 1025 may remain inactive, allowing the device's operating system to perform function calls and command operations that control the device. However, when the update process is initiated theupdate agent 1025 may take control of the electronic device and perform specific operations related to installing theupdate package 110. In one aspect, theupdate agent 1025 is desirably maintained as a specialized application with a service set that is optimized and dedicated to performing functions necessary to install the update. In designing theupdate agent 1025 in this manner, the size of theupdate agent 1025 is desirably reduced so as to minimize the amount of space that it occupies in thenonvolatile area 1002. - The
update agent 1025 is responsible for processing or executing the instructions contained in theupdate package 110 which in turn performs the operations necessary to transform the first original code version into the second updated code version. Theupdate agent 1025 may further possess one or more functionalities which are used to perform specific operations related to the update process. For example, theupdate agent 1025 may include a main functionality for applying the instructions of theupdate package 110 to the existing code version. Additionally, theupdate agent 1025 may include functionality for performing client operations associated with update package management. In one aspect, theupdate agent 1025 may perform operations including string or data processing, memory management, and other operations used to coordinate the activities of the update process. In another aspect, theupdate agent 1025 includes one of more device drivers used during the updating processes. Theupdate agent 1025 may also contain the functional logic required to manage the update process and may include functions not provided by the embedded operating system needed to carry out the instructions of theupdate package 110. Theupdate agent 1025 may also include functionality for performing various operations used to compress data in the data section to create sufficient storage space in the data section to receive theupdate package 110. Finally, theupdate agent 1025 may include functionality used to prepare theupdate package 110 such as compression/decompression, encryption/un-encryption, and/or validation of the contents of theupdate package 110. - The
download agent 1020 is responsible for performing operations related to communicating with the update servers and retrieving available update packages 110. Like theupdate agent 1025, thedownload agent 1025 may comprise one or more functionalities which are used to perform specific operations related to the update package retrieval process. For example, thedownload agent 1020 may include functionality for communicating with the server that contains theavailable update package 110 and also provides necessary handshaking and error correction routines used during the download process. Furthermore, thedownload agent 1020 may include functionality for performing client operations associated with update package management during the download process. In one aspect, thedownload agent 1020 may perform operations including string or data processing, memory management, and other operations used to coordinate the activities of the update process. In another aspect, thedownload agent 1020 comprises one of more device drivers used during the update package download process. Thedownload agent 1020 may also include the primary functional logic required to manage the download process and may include functions not provided by the embedded operating system needed to establish communication with the server and retrieve the desiredupdate package 110. Additionally, thedownload agent 1020 may include functionality for performing various operations used to compressor reorganize data in the non-volatile and volatile memory orstorage areas update package 110. Finally, thedownload agent 1020 may provide functionality for enabling the use of secure communications between the server and the client device to prevent unauthorized access to the information contained in theupdate package 110. In still another aspect, thedownload agent 1020 may contain a dedicated security library that defines one or more encryption schemes used during the transfer of information between the server and the client device. - The
download agent 1020 orupdate agent 1025 may further be used to determine if there is enough available space in the electronic device to decompress and/or prepare theupdate package 110. If additional space is required, thedownload agent 1020 or theupdate agent 1025 may compress or rearrange the contents of either the non-volatile or volatile memory orstorage areas update package 110. After the update process is completed the compressed or rearranged contents of the non-volatile and volatile memory orstorage areas areas - One desirable feature of the
update agent 1025 anddownload agent 1020 is that they are designed to occupy a relatively small amount of space within the memory or storage area on the electronic device. This feature is particularly useful in devices where the memory or storage space is limited due to the device constraints such as design, size, and/or power consumption considerations. For example, a typical mobile phone may contain a physical memory store that has an approximate size of 500K-1500K. The embedded operating system of the mobile phone occupies a large percentage of this space and additional space must be allocated for user-definable data such as phone numbers, addresses, and the like. Theupdate agent 1025 and download agent 1029 are implemented in such a manner so as to maintain a total size of approximately 20K-50K. This relatively small size can be readily accommodated by most electronic devices including those with significant memory or storage area constraints. In instances where memory or storage constraints do not pose as great a problem, theupdate agent 1025 and/ordownload agent 1020 can be designed to include additional functionality and features. The overall size of theupdate agent 1025 anddownload agent 1020, however, is typically significantly smaller that many conventional update applications or modules. - In addition to the
download agent 1020 and theupdate agent 1025, a status table 1050 may further reside in the non-volatile memory orstorage area 1008. The status table 1050 is a data structure whose contents are desirably preserved in non-volatile memory or storage space and which is used during update package retrieval and processing operations to determine the state of operation of the devices. Although, the status table 1050 is shown to be positioned in thedata section 1008 of the non-volatile memory orstorage area 1008 other configurations exist where the status table 1050 may be positioned in any portion of the non-volatile memory ofstorage area 1002. - In one aspect, the status table1050 comprises one or more flags or identifiers that are used by the
download agent 1020 and theupdate agent 1025 to coordinate the activities of the update process. Additionally the status table 1050 may store information that is used in fault tolerant processes to identify the current and completed states of the update process. Furthermore, information contained in the status table 1050 may be used during the device boot process to determine if the device is in a normal operational mode (update process is in an idle state) or in an update processing mode (update process is in a non-idle state). The mode of the device is determined by an update state variable or flag which may be either idle or active. In an idle state, no update operations are determined to be pending and normal device operation should proceed. In an active state, one or more update operations are currently pending and normal device operations should be suspended to permit the update operations to be executed. - During device startup, code execution typically begins at a specific startup address, for example “0x0000”. This address refers to a section of the boot block or sector where the
update agent 1025 resides. Theupdate agent 1025 checks the status table module 1050 to determine the value of the update state variable to identify updating operations that should be performed or alternatively if no operations are pending then theupdate agent 1025 transfers program execution to the regular firmware or operating system of the electronic device. - In one aspect, if the update process is interrupted, the current position or state of completion of the update can be resolved using various portions of the update package information. As will be described in greater detail hereinbelow with reference to a fault tolerant update process, the update package may include information such as error correction codes, digital signatures, file or bank sizes, and other information that are interpreted by the
update agent 1025 to determine which portions of the code have been successfully updated. If the update process is unexpectedly interrupted, theupdate agent 1025 uses this information to determine at what position the last successful update had been applied and continues from that point to complete the update process. - In one embodiment the update management system utilizes a bank-by-bank updating process for performing updates to the existing code version of an electronic device. This process is particularly well suited to manage updating tasks of portable electronic devices which typically have only limited update capabilities. Using this method, the update management system overcomes the limitations of many conventional systems which prohibit devices such as mobile phones from being conveniently updated due to memory or storage space constraints imposed by the architecture of the electronic device. For example, in a mobile phone the operating system typically resides in the nonvolatile memory or storage area and may be too large to be held in the volatile memory or storage area which generally has a smaller size due to cost and manufacturing considerations. This limitation prevents a complete image of the operating system from being copied to a suitable “working” area where the update may be applied without possible corruption of the original code version. As a result, electronic devices including mobile phones are limited in the manner in which the update can be performed and typically do not provide a highly fault tolerant update capability rendering them susceptible to update errors which may render the device inoperable.
- The present invention overcomes this limitation by providing a mechanism for performing updates in a sectional or bank-by-bank manner. The bank-by-bank updating method does not require an entire image of a file or code version to be stored a “working” area, rather the update operations are performed using a reduced amount of memory or storage space by subdividing the update operations and applying them sequentially to designated code sections. Sectional updating in this manner may be advantageously used in conjunction with relatively small areas of available memory or storage space such as that present in the volatile memory section of a mobile phone. Additionally, the bank-by-bank update method improves fault tolerance and allows the update process to be resumed when an error in updating occurs.
- The term “bank” used in describing the invention refers to a portion of memory or storage area that may be flexibly defined. While a bank may have a static size in a particular electronic device, this size may vary from one device to next. Furthermore, banks within a particular electronic device may be variably sized and may refer to the contents of one or more logical or physical blocks as defined by a particular architecture for an electronic device. Although the update process is described with reference to statically defined bank sizes it will be appreciated that the system and methods of the update management system can be readily adapted to accommodate different bank configurations to address the update needs or preferences for many different electronic device configurations.
- FIGS. 9 and 10 illustrate a bank-by-bank update method that is desirably used by the update management system to transform an existing code version present in the device into a new or updated code version. The code transformation is managed by the
update agent 1025 which processes the instructions of the instruction set orupdate package 110. Throughout the update process, a high degree of fault tolerance is maintained by using numerous checkpointing operations to validate the data contents of each bank. As will be described in greater detail hereinbelow these operations are useful in recovering from errors which might otherwise corrupt the code version and render the device non-operational. - FIG. 9 illustrates an overview of the bank-by-
bank update method 1100 that may be used with electronic devices such as mobile phones, pagers, personal digital assistants, or other electronic devices. As previously described with reference to the description of FIG. 8A, the architecture for many portable electronic devices comprises non-volatile and volatile memory orstorage areas banks 1010 which represent discretely addressable locations used to store information or data. The operating system, firmware code, orother information 1120 to be desirably updated is further stored in the non-volatile memory orstorage area 1002 and is distributed across at least some of the plurality ofbanks 1010. - Referring again to FIG. 9, the bank-by-
bank update process 1100 commences in astart state 1105 when the electronic device detects a signal to begin updating. In one aspect, the update signal comprises recognizing a change from a normal operating mode to an update processing mode. As previously described, this mode change may be identified using an idle state variable which is set in the status table. The bank-by-bank update process 1100 then proceeds to a state 1110 where the update package is received following a request for transmission from the update server. In this state 1110 theupdate package 110 is desirably received and temporarily stored in the volatile memory or storage area. When receipt of theupdate package 110 is complete, theprocess 1100 proceeds to anupdate transfer state 1115 where thecomplete update package 110 is copied into the non-volatile memory orstorage area 1002. By copying theupdate package 110 to thenon-volatile area 1002, a level of fault tolerance is achieved and the electronic device may perform subsequent update operations without further communication with the server computer. In one aspect, the status table is updated after theupdate package 110 has been saved into non-volatile memory to reflect the complete receipt and secure storage of theupdate package 110. - The
update process 1100 continues in amemory allocation state 1120 where space for a “working” bank and a “backup” bank are allocated in the volatile andnonvolatile memory areas update process 1100 to perform operations to sectional components of the existing code version in such a manner so that the original code is not altered until the update for the code section has been completed and verified thus insuring that the original code is not corrupted by unexpected processing errors or power interruptions. - During the state1120 a plurality of pointers are initialized which point to addresses required for the
update agent 1025 to process the instructions of theupdate package 110. A first pointer comprises an instruction pointer that is initialized to point to the address of the first instruction in theupdate package 110. This instruction is subsequently retrieved by referencing the address pointed to by the instruction pointer and the instruction is applied to the bank information to be updated. - Additionally a working bank pointer is initialized to point to the location in the volatile memory-where the bank update will take place. The working bank pointer is used as a reference by the
update agent 1025 which performs update operations in the location specified by the working bank pointer. Furthermore, a backup bank pointer is initialized which points to a location in the non-volatile memory where copies of the working bank are maintained to insure fault tolerance in case of power interruptions and reboot or reset operations. - Following completion of the pointer initialization in
state 1120 theprocess 1100 continues with a series ofbank update operations 1123 commencing in abank transfer state 1125 where a section of the original code version that resides in the non-volatile memory orstorage area 1002 is transferred to the working bank in thevolatile memory area 1004. The code section copied from the original code version corresponds to a bank of information specified by the instruction set which will be desirably operated upon to generate the new code version for that particular bank of information. Theprocess 1100 then proceeds to an applyupdate instruction state 1130 where the appropriate instruction from the instruction set is executed to modify the working bank of information in such a manner that the old code version contained in the bank is transformed into the new code version. - Once the appropriate instructions have been executed and the corresponding code updated in the volatile working bank, the process proceeds to a
bank backup state 1135 where the contents of the working bank are copied into the backup bank located in the non-volatile memory orstorage area 1002. Subsequently, the code in the volatile working bank is copied to the appropriate location corresponding to the bank where the original code was obtained from in anupdate bank state 1140. Upon completion of bank copy instate 1140, theprocess 1100 proceeds to annew state 1145 where the bank pointer is incremented to the next consecutive bank that is to be updated. - If the instruction pointer indicates that the
process 1100 has been completed (i.e. all banks have been updated) then theprocess 1100 is terminated. At this point, the status table may also be updated to reflect that the update operation is complete wherein the update process resumes an idle state Thereafter the electronic device is rebooted and the newly updated code version is used by the electronic device. Otherwise, if the pointer indicates that theprocess 1100 is not complete (i.e. one or more banks remain to be updated) theprocess 1100 proceeds to thebank transfer state 1125 where the next bank is copied into the working bank in the volatile memory orstorage space 1004 and theprocess 1100 continues to complete updating of the newly selected bank. In one aspect, the status table is checked during reboot, if an idle status is detected, then normal (non-update) operations resume. If a non-idle status is detected, then theupdate agent 1025 is directed to control the electronic device. - FIG. 10 further illustrates the bank-by-
bank update process 1100 in greater detail and demonstrates the operations in the context of the aforementioned non-volatile and volatile memory orstorage areas update agent 1025. At least some of thenon-volatile banks 1120 comprise sections of the memory area that are to be updated by theupdate agent 1025 using theupdate package 110. In one aspect, these banks may contain information which comprises the operating system, firmware code, or application that conveys functionality to the electronic device and which is desirably updated from the first code version to the second code version. - As shown in
state 1210, the bank-by-bank update process 1100 typically begins after the appropriateavailable update package 110 is identified and transferred to the electronic device using the functionality of theaforementioned download agent 1020. Theupdate package 110 is received and temporarily stored in asection 1222 of the volatile memory orstorage area 1004 and a series of validation checks are implemented to insure that thepackage 110 is complete and free of errors. These validation checks may include determining a cyclic redundancy check code (CRC) for the receivedupdate package 110 and comparing this code against an expected CRC value stored in theupdate package 110. Furthermore, a validation check may be performed by identifying the size of theupdate package 110 and comparing this value against the expected size determined by thedownload agent 1020. - Additionally, the
update package 110 may include a digital signature that is evaluated by thedownload agent 1020 to determine if the receivedupdate package 110 is appropriate for application to the existing code version. In one aspect, the digital signature is an identity string that may contain information such as; the name or identification of the device, the device manufacturer, the model or serial number, and other characteristics that may be used to validate the source and content of the transferreddata package 110. - Thereafter, the
update package 110 is transferred from its temporary location 1122 to asection 1224 of the nonvolatile orflash memory component 1002 for more secure storage. Storage of theupdate package 110 in the non-volatile memory provides a means for recovering from a power failure, device interruption, or reset operation without requiring retransmission of theupdate package 110 from the server. As before, one or more validation checks are used to insure that the image contained in theflash memory 1002 is a complete and error free copy of the desiredupdate package 110. - After storing the
update package 110 in theflash memory 1002, the idle status flag stored in the status table (not shown) is updated to indicate that the electronic device is ready to proceed into an update mode. Thereafter, the electronic device is rebooted and the status flag is interpreted by theupdate agent 1025 to suspend normal operation of the device and proceed into an update mode where theupdate agent 1025 provides primary device functionality to install theupdate package 110. - Upon rebooting of the electronic device, the contents of the volatile memory component or
RAM memory 1004 are typically lost and, as a result, a copy of theupdate package 110 is copied back into thesection 1222 ofRAM memory 1004 for use by theupdate agent 1025 instate 1220. During thisstate 1220, theupdate package 110 may be preprocessed to present the update information or instructions in an executable form. For example, if theupdate package 110 is compressed or encrypted, theupdate agent 1025 performs one or more operations to render the code of theupdate package 110 ready for execution. In one aspect, the aforementioned instruction pointer may be initialized to the address of the first instruction to be executed by theupdate agent 1025. Taken together, these operations prepareupdate agent 1025 and instruction set for subsequent sequential updating of the existing code version to generate the new code version. - Proceeding to
state 1230, a plurality of memory allocation operations are performed which create a working environment for theupdate agent 1025. In one aspect, a workingbank 1232 is allocated in theRAM memory 1002. The workingbank 1232 is desirably configured to be the same size as thebanks 1120 to be updated in theflash memory area 1004 and acts as an operational buffer or working memory area where operations determined by the instruction set are performed. Additionally, abackup bank 1234 may be allocated or a pointer added in theflash memory 1004 to provide a non-volatile buffer or backup store which is used throughout the update process to provide fault tolerance to power interruptions as well as serve as a backup copy of the data in instances where the data in the workingbank 1232 may become corrupted or fail validation checks. - Proceeding to
state 1240, the update process commences with theupdate agent 1025 reading and executing instructions contained in the update package stored inRAM memory section 1222. In one aspect, the instructions of the update package initialize a pointer which points to the address of thefirst bank 1242 of theflash memory 1002 to be updated. Theupdate agent 1025 accesses the information contained in thisbank 1242 and copies the information contained therein to the workingbank 1232 of theRAM memory 1002. As before, various validation measures may be taken to insure that the contents of the workingbank 1232 accurately reflect the flash memory bank from which it was copied. Should the bank copy procedure fail, the process may be repeated and the contents verified before proceeding to the next update state. It will be appreciated that the use of the workingbank 1232 desirably imparts an improved degree of fault tolerance to the update system compared to many conventional methods. In one aspect, a copy of the original (unmodified) code is maintained in theflash memory bank 1002 until the newly updated bank information can be verified and stored in a non-volatile manner. This method of updating desirably reduces the likelihood of data corruption that might otherwise lead to device malfunction. Furthermore, should a bank update operation fail, preservation of the existing code allows the update process to resume from the failed point rather than requiring that the entire update process be restarted from the beginning state. Additional details of the fault tolerant characteristics of the update process will be subsequently described in greater detail. - Proceeding to
state 1250, theupdate agent 1025 applies the appropriate instructions to update the information contained in the copy of the first bank stored in the workingbank 1232. As previously described, the instructions may address and copy information fromother banks 1120 contained in theflash memory 1002 to obtain information sequences that are desirably used in generating the updated bank information for the workingbank 1232. Additionally, other operations may be used to modify the code contained in the working bank to reflect the desired contents as determined by theupdate generator 102. In one aspect, banks that are determined not be have been changed between the first code version and the second code version do not require further processing and the update process may loop back tostate 1240 where a new bank is copied and the process resumed using the corresponding instructions from the update package. Alternatively, those banks which do not require updating are skipped in theprevious step 1240 for the purpose of improving update efficiency. Again, numerous error detection measures may take place after the update instruction has been executed to verify that the update bank information is correct. - Proceeding to
state 1260, the newly updated information contained in the workingbank 1232 is copied to thebackup bank 1234 located in theflash memory 1002. A copy of the workingbank 1232 is made at this point to provide yet another degree of fault tolerance where if a power interrupt occurs subsequent to the copying of the workingbank 1232 into the originalfirst bank 1242, the process may identify the point where the fault occurred and proceed from there if a copy of the updated information is maintained in thenon-volatile flash memory 1002. If a fault occurs prior the to completion of the copying of the workingbank 1232 into thebackup bank 1234 the process may attempt to perform the copy operation again from the updatedbank 1232 into thebackup bank 1234. Alternatively, if a power interruption or other serious fault occurs which results in loss of the volatile memory due to rebooting or restarting operations prior the to completion of the copying of the workingbank 1232 into thebackup bank 1234, the process may “step back” to the previous steps where the information from thefirst bank 1242 is copied to the workingbank 1232. - From the foregoing it will be appreciated that the update process provides a number of mechanisms to insure that if data corruption or update fault does occur, the process can find a point from which to resume without the potential permanent loss or corruption of data during the update process.
- Proceeding to
state 1270, once a copy of the newly updated bank information has been safely stored in thebackup bank 1234, the update process proceeds to copy the information contained in the workingbank 1232 back into the originalfirst bank 1242 located in theflash memory 1002. Like other steps in the update process, the bank information is validated to insure the contents reflect the desired code. - Proceeding to
state 1280, the update process is repeated in a similar manner for thenext bank 1246 where the bank pointer is updated to the address of thenext bank 1246 to be updated. Subsequently, the steps 1240-1270 are repeated using the information from thenext bank 1246. In this manner, all of thebanks 1120 of theflash memory 1002 may be desirably updated in a fault tolerant manner while accommodating architectural limitations imposed by a RAM memory size less than that of the flash memory size. - When the
update agent 1025 determines the update process to be complete, the space allocations (if any) in theflash memory 1002, including the backup updatepackage storage area 1224 and thebackup bank 1234, are released so that they may be used for other purposes subsequent to updating. Furthermore, the status flag contained in the status table (not shown) is updated to reflect an idle state where no update operations are pending. Subsequently, the device is reset or rebooted and upon checking the status flag in the status table, the device will return to a normal operational mode until the next update procedure is initiated. In one aspect, thebackup storage area 1224 does not require de-allocation or release (as is the case when pointers are used to designate the backup storage area 1224). In this instance, upon completion of the update process other applications or operations can simply overwrite the contents of thebackup storage area 1224. Furthermore no special operations necessarily need to be performed on the volatile memory orstorage area 1004 as the data contained therein will typically be lost during rebooting operations. - As previously indicated, in order to provide a sufficient level of fault tolerance the update server and processes include the ability to efficiently respond to unexpected hardware or software interruptions or failures. FIG. 11 illustrates one embodiment of a
fault tolerance process 1300 used by theupdate agent 1025 of theclient device 104 to ensure proper installation of the instruction set contained in theupdate package 110. The instruction set provides an efficient conversion method or instruction sequence that is capable of installing the newer code version into a computing device, such as theclient device 104, to replace the existing code version. In one aspect, thefault tolerance process 1300 comprises a series of checks or validations that advantageously protect the existing code version that is used by theclient device 104, to avoid corruption during execution of the instructions contained in theupdate package 110. Furthermore, thefault tolerance process 1300 insures that the information contained in the updated code accurately reflects the desired information to insure proper device operation after the update. The following description of the fault tolerant sequence identifies the distinguishing characteristics of this process as it relates to the processing of update instructions by theupdate server 1025. It will be appreciated that this process operates in conjunction with the aforementioned update process described in detail in connection with FIGS. 9 and 10. As such, the fault tolerant sequence may be considered an integral part of the update process and portions of this process may have coordinative functionality with the aforementioned update processes. - Upon initialization of the
client device 104 in astart state 1302, thefault tolerance process 1300 advances to astate 1304, where theupdate agent 1025 checks the status table for a “not idle” state recognition. The “not idle” state signifies that theclient device 104 is in the update processing mode where the instructions of theupdate package 1025 will be applied to generate the new code version. If the update processing mode is not recognized, then the fault tolerance sequence terminates in anend state 1306 and the device continues to operate in a normal mode of operation without further update processing. Otherwise, if the update processing mode is recognized, then thefault tolerance process 1300 advances to avalidation state 1308. In thevalidation state 1308, theupdate agent 1025 performs one or more confirmation operations or checks including verification of the savedupdate package 110 that has been stored in non-volatile memory, identification of the starting address and contents of the working bank, and the starting address and contents of the backup bank. - In the
state 1308, if theupdate agent 1025 determines that the pre-update validation fails, then the update and fault tolerance processes are terminated instate 1310. Alternatively, if theupdate agent 1025 is able to validate the status table information in thestate 1308, then thefault tolerance process 1300 advances to astate 1312, where theupdate agent 1025 determines the next bank to be updated. - In
state 1312, the update agent checks the bank identity information from the uncompressed update package and find out where the update process was terminated and should be resumed. This is done by comparing size and CRC information from bank identity information with the existing and updated bank information calculated from the physical banks inside the electronic device. In one aspect, the process determines the appropriate resume point by comparing the bank size and CRC information. Proceeding sequentially from the beginning of the update package instruction set, a bank which does not match the expected size and CRC information, is the first bank to be updated. Additionally, if the update process is interrupted during a bank copy function, for example when copying updated bank information back into the existing bank ofnon-volatile memory 1002, and the size and/or CRC information does not match the expected values then the backup bank may be used to recover the last updated bank. - The
update agent 1025 then performs the bank update instate 1314 as previously described. Next, in astate 1316, a series of update validations are applied to determine if the bank update was successful. In one aspect, theupdate agent 1025 may accomplish bank validation by checking bank description information, which includes bank identity information and CRC values corresponding to the old information contained in the bank and newly updated information. Additionally the validation task may assess old and new file or bank sizes to determine if these values match expected values. In addition, theupdate agent 1025 may compare actual bank description information to bank description information stored in theupdate package 110. - If one or more of the update validations fail, such as the CRC codes fail to match, then the
fault tolerance process 1300 loops back to perform the bank update again in thestate 1314. If the update validations pass instate 1316, then thefault tolerance process 1300 advances to astate 1318, where the update agent determines if the update installation is complete. Theupdate agent 1025 may accomplish this task by re-checking the bank description information, CRC or size values of the previous banks to validate proper update installation for each of the previous banks. Additionally, theupdate agent 1025 may use a counter or a pointer to determine the bank position, which is used to determine if the update installation is complete. If the update installation is not complete, then thefault tolerance process 1300 loops back to thestate 1312 to determine the next bank to be updated. Alternatively, if the update installation is complete, then thefault tolerance process 1300 terminates in anend state 1320 by re-initializing theclient device 104. Furthermore, when the update operation is determined to be complete, the “not idle” state is returned to an “idle” state, which changes the state of device operation from the update processing mode of operation to the normal operational mode upon reset or re-initialization of theclient device 104. - Advantageously, the above-mentioned
fault tolerance process 1300 is used to protect the operational software or firmware code against unforeseen failure, such as a power failure or data corruption. When a power failure occurs in the installation process, theupdate agent 1025 is able to determine the banks that have been updated, the next bank to be updated, and when the update installation is complete. Furthermore, thefault tolerance process 1300 efficiently and reliably protects the bank update installation and conversion process against hardware or software interruptions, power failures, data corruption, and/or other catastrophic encounters beyond the control of the user. - FIG. 12 illustrates one embodiment of a signature creation and
authentication process 1400, which is used for security and validation purposes. In one embodiment, theupdate package 110 is transferred from theupdate device server 102 via a communications medium in a manner so as to securely manage the digital information sequences, protect client privacy, and reduce the probability of data corruption. Implementation of the signature creation andauthentication process 1400 in astart state 1402 and proceeds to astate 1406, where a digital signature or identity string is designated for the electronic device. The digital signature comprises information used to validate the source of the transferred data and confirm that the data is designed for use with the present electronic device. In one embodiment the digital signature comprises a manufacturer designated information string that is used to authenticate the source of theupdate package 110. Additionally, as shown instate 1408, a signature or hash value may be generated using a known MD5 algorithm. The MD algorithm generates the hash value of a source file, for example from the device update information, which is desirably included along with theupdate package 110 for subsequent validation after transfer of the update package to the electronic device. - In one aspect, the hash value determined by the MD5 algorithm is used to form a digital fingerprint of the device update information. As with a human fingerprint, the hash value is unique and no two sets of device update information (contain information differences with respect to one another) will have the same digital signature. This uniqueness enables the hash value to act as a fingerprint of the original information or instruction set, and enables the use of the MD5 technology for purposes of maintaining data integrity and comparison validation. For example, when downloading or receiving an update package over a communications medium, the MD5 technology may be used to substantially guarantee that the downloaded update package is the correct, unaltered data file by comparing the calculated MD5 signature or hash value with the MD5 signature contained in the update package, to thereby verify the integrity of the data file. Thus the information or data of the
update package 110 may incorporate the use of MD5 technology or similar digital image signature methodology to ensure integrity of the information transmitted in theupdate package 110. - Next, in a
state 1410, the MD5 hash value and digital signature are encrypted and included in theupdate package 110. In one aspect, the encryption process is used to achieve a higher degree of data security. To read or access an encrypted hash value and digital signature, the electronic device must possess or have access to a key or password that enables decryption or the deciphering of the encoded data. Both asymmetric encryption techniques (for example public-key encryption) and symmetric encryption techniques may be used to encrypt theupdate package 110. In one embodiment, RSA encryption or a public-key encryption techniques are used to encrypt the hash value and digital signature prior to distribution. - Following encryption in
state 1410, the update package is ready for distribution to the client devices and upon receiving theupdate package 110 the client device continues with the authentication process instate 1412. When theclient device 104 receives the update package the encrypted portion of the package is decrypted and to resolve the digital signature, and hash value into separate components. At this point, theprocess 1400 advances to astate 1414, where theupdate agent 1025 authenticates the MD5 hash value and digital signature information. In one aspect, the transferred MD5 hash value is compared to a calculated MD5 hash value. If the two values are identical then the update package and its contents are authentic and the update process may continue. Otherwise, if the authentication fails then the update package may be discarded as non-authentic. Similarly, if the digital signature matches an expected digital signature previously stored in the electronic device then the receivedupdate package 110 is determined to be authentic. Once the receivedupdate package 110 is authenticated in the state 1418, the signature creation andauthentication process 1400 is terminated in anend state 1420 and theupdate package 110 may be processed by theupdate agent 1025. - The aforementioned encryption scheme is useful in maintaining the privacy of the digital information contained in the
update package 110 and transferred through the communications medium. Security and privacy protection is a significant concern among individuals using all types of communications media, including wireless networks and the Internet. Therefore, the signature creation andauthentication process 1400 is a useful method for insuring security in the update procedure and increases the reliability of receiving the actual update information in a complete and untampered package. Once authenticated, the client device may then proceed to install theupdate package 110, which converts the older code version of firmware or operational software to the newer code version of firmware or operational software. - One desirable feature of the present invention is that it may be adapted to many different memory and storage architectures without the need for modification of the hardware of the electronic device. The update system may therefore be incorporated into existing electronic devices, as well as, adapted to the design of future devices to provide a more efficient and less cumbersome update path as compared to prior art solutions. Additionally, numerous methods of distributing the update package can be accomplished using the update management system and methods. It is conceived that the present invention may be used in conjunction with many different types of communications media to distribute the update package to the electronic devices to be updated. Using both wireless and wired networks as well as Internet connected networks, the update packages may be distributed to the electronic devices permitting them to be frequently updated in a convenient manner. The flexible distribution over these communications media also allows the updates to be distributed to large numbers of electronic devices with minimal user interaction and inconvenience.
- In one aspect the update management system and methods can be used to substantially alter the functionality of the electronic device applying the update package. For example, the resident operating code or application stored in the device may convey a first device functionality the is desirably altered to updated operating code or a new application that conveys a second device functionality. In this example, the first and second devices functionalities may be representative of software applications such as a games, address books, calculators, personal reminders or other data/information/applications. Upon updating the operating code, the device functionality may be substantially altered to transform the first device functionality into the second device functionality. For example, if the first device functionality is a game, the update package may be used to transform the digital information sequences representative of the game into another device functionality such as a calculator. Additionally, the first device functionality can be updated from a previous version to a newer version having a similar functionality reflected by the second device functionality. For example, if the first device functionality was a 9 function calculator application, this application could be updated to a 26 function calculator application by applying a suitable update package.
- It will be appreciated that the update management system and methods can desirably used in connection with software applications and device drivers such as those used in personal computers to provide a flexible means for updating the code of the software application or device drivers from one version to another. In one aspect, the aforementioned “words” representing digital information sequences used during the update process may be representative of files associated with software application or device drivers. During updating one or more files of the software application or device drivers may be updated providing a simplified method for maintaining the code present on the personal computer.
- Additionally, as shown in the example above, the software application or device driver can be updated to maintain a consistent functionality from one version to the next or the functionality may be completely altered as needed or desired. For example, if the software application to be updated comprises a word processor, this application can be updated from a previous version to a new version to provide increased features and options as well as remove bugs and provide added capabilities. Alternatively, the application can be updated to a completely different application such as, for example, a spreadsheet or database program by applying the update package. It will be appreciated that updating in this manner provides a highly flexible means to alter the functionality of the software application that is not limited to exclusively changing between versions of the same application but instead can provide completely different applications and functionalities using a relatively small update package.
- Another feature arising from the use of the updating system and method is that software installation, maintenance, and administration is greatly facilitated. A limitation of conventional systems results from users having to install and uninstall software applications manually in a series of steps that is error-prone and time consuming. The update management system, however, overcomes this limitation by providing for an automated installation process that may be used to install, remove, update, and change software applications from one to another by the relatively simple process of applying the update package. Thus, a new and more powerful manner of system administration can be realized allowing for automated management of one or more systems either locally (by application of the update package contained for example on a CDROM disk or removable storage medium) or remotely (by application of the update package through a wired or wireless communications medium). System administration in this manner provides for increased security, fault-tolerance, and flexibility over conventional methods and is less error prone and more rapid.
- Although the above-disclosed embodiments of the present invention have shown, described, and pointed out the fundamental novel features of the invention as applied to the above-disclosed embodiments, it should be understood that various omissions, substitutions, and changes in the form of the detail of the devices, systems, and/or methods illustrated may be made by those skilled in the art without departing from the scope of the present invention. Consequently, the scope of the invention should not be limited to the foregoing description, but should be defined by the appended claims.
Claims (122)
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/311,462 US20030182414A1 (en) | 2003-05-13 | 2001-11-19 | System and method for updating and distributing information |
US10/404,601 US6832373B2 (en) | 2000-11-17 | 2003-04-01 | System and method for updating and distributing information |
US10/412,045 US8479189B2 (en) | 2000-11-17 | 2003-04-11 | Pattern detection preprocessor in an electronic device update generation system |
US10/631,567 US20040068721A1 (en) | 2000-11-17 | 2003-07-31 | Network for updating firmware and / or software in wireless communication devices |
US11/335,312 US7805719B2 (en) | 2000-11-17 | 2006-01-19 | System and method for updating and distributing information |
US11/637,550 US8468515B2 (en) | 2000-11-17 | 2006-12-12 | Initialization and update of software and/or firmware in electronic devices |
US12/057,067 US9361088B2 (en) | 2000-11-17 | 2008-03-27 | Initialization and update of software and/or firmware in electronic devices |
US12/636,600 US8875116B2 (en) | 2000-11-17 | 2009-12-11 | Network for updating firmware and / or software in wireless communication devices |
US14/291,924 US20140282487A1 (en) | 2000-11-17 | 2014-05-30 | Software update for a wireless communication device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/311,462 US20030182414A1 (en) | 2003-05-13 | 2001-11-19 | System and method for updating and distributing information |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2001/044034 A-371-Of-International WO2002041147A1 (en) | 2000-11-17 | 2001-11-19 | System and method for updating and distributing information |
Related Child Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/411,784 Continuation-In-Part US7409685B2 (en) | 2000-11-17 | 2003-04-11 | Initialization and update of software and/or firmware in electronic devices |
US10/631,567 Continuation-In-Part US20040068721A1 (en) | 2000-11-17 | 2003-07-31 | Network for updating firmware and / or software in wireless communication devices |
US11/335,312 Continuation US7805719B2 (en) | 2000-11-17 | 2006-01-19 | System and method for updating and distributing information |
Publications (1)
Publication Number | Publication Date |
---|---|
US20030182414A1 true US20030182414A1 (en) | 2003-09-25 |
Family
ID=28041578
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/311,462 Abandoned US20030182414A1 (en) | 2000-11-17 | 2001-11-19 | System and method for updating and distributing information |
US11/335,312 Active 2025-05-31 US7805719B2 (en) | 2000-11-17 | 2006-01-19 | System and method for updating and distributing information |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/335,312 Active 2025-05-31 US7805719B2 (en) | 2000-11-17 | 2006-01-19 | System and method for updating and distributing information |
Country Status (1)
Country | Link |
---|---|
US (2) | US20030182414A1 (en) |
Cited By (191)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020191637A1 (en) * | 2001-05-14 | 2002-12-19 | Lg Electronics Inc. | Home appliance protocol upgrading system and method |
US20030110484A1 (en) * | 2001-12-10 | 2003-06-12 | David Famolari | Method and apparatus utilizing bluetooth transmission protocols to update software resident on a network of computing devices |
US20030135664A1 (en) * | 2001-12-27 | 2003-07-17 | Hiroaki Hayashi | Device initialization method in a control system, a control system, a program for running the device initialization method on a computer, and a recording medium storing this program |
US20030200334A1 (en) * | 2002-04-23 | 2003-10-23 | Amiram Grynberg | Method and system for controlling the use of addresses using address computation techniques |
US20030229752A1 (en) * | 2002-04-01 | 2003-12-11 | Sreekrishnan Venkiteswaran | Updating flash memory |
US20040073902A1 (en) * | 2002-10-11 | 2004-04-15 | Ambit Microsystems Corporation | Firmware upgrade method for network device through digital subscriber line |
US20040083471A1 (en) * | 2002-10-21 | 2004-04-29 | Lg Electronics Inc. | Method of upgrading system software of a home appliance |
US20040143713A1 (en) * | 2003-01-22 | 2004-07-22 | Niles Ronald S. | System and method for backing up data |
US20040250245A1 (en) * | 2003-06-04 | 2004-12-09 | Rao Bindu Rama | Network having customizable generators and electronic device having customizable updating software |
US20040261072A1 (en) * | 2003-06-20 | 2004-12-23 | Samsung Electronics Co., Ltd. | Apparatus and method for performing an over-the-air software update in a dual processor mobile station |
US20050066320A1 (en) * | 2003-08-01 | 2005-03-24 | Kw-Software Gmbh | Online modification of CIL code programs for industrial automation |
US20050071523A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | Method and system for automatically determining I/O connector configuration |
US20050080811A1 (en) * | 2003-10-10 | 2005-04-14 | Cendura Corporation | Configuration management architecture |
US20050097199A1 (en) * | 2003-10-10 | 2005-05-05 | Keith Woodard | Method and system for scanning network devices |
US20050096025A1 (en) * | 2003-10-30 | 2005-05-05 | Iyad Qumei | Open update framework for mobile handsets capable of processing firmware and software update packages based on mime-types |
US20050102669A1 (en) * | 2003-10-15 | 2005-05-12 | Siemens Medical Solutions Usa, Inc. | Software installation file verification media and methods for medical equipment |
US20050114852A1 (en) * | 2000-11-17 | 2005-05-26 | Shao-Chun Chen | Tri-phase boot process in electronic devices |
US20050138216A1 (en) * | 2003-07-30 | 2005-06-23 | American Express Travel Related Services Company, Inc. | System and method for remote collection of data |
US20050144609A1 (en) * | 2003-12-12 | 2005-06-30 | Intel Corporation | Methods and apparatus to provide a robust code update |
US20050160312A1 (en) * | 2002-03-20 | 2005-07-21 | Wouter Seng | Fault-tolerant computers |
US20050160418A1 (en) * | 2004-01-19 | 2005-07-21 | Samsung Electronics Co., Ltd | Embedded system using binary position information and software downloading method therein |
US20050283777A1 (en) * | 2004-06-17 | 2005-12-22 | Karl Osen | Secure method to update software in a security module |
US20060005195A1 (en) * | 2004-07-05 | 2006-01-05 | Canon Kabushiki Kaisha | Information processor and information processing method |
US20060010437A1 (en) * | 2004-09-23 | 2006-01-12 | Sunil Marolia | Network for mass distribution of configuration, firmware and software updates |
US20060041731A1 (en) * | 2002-11-07 | 2006-02-23 | Robert Jochemsen | Method and device for persistent-memory mangement |
US20060039564A1 (en) * | 2000-11-17 | 2006-02-23 | Bindu Rama Rao | Security for device management and firmware updates in an operator network |
US20060075000A1 (en) * | 2004-10-06 | 2006-04-06 | International Business Machines Corporation | Transient Range Versioning Based on Redirection |
WO2006051159A1 (en) * | 2004-09-28 | 2006-05-18 | Capricode Oy | Method and device arrangement for managing the use profile of a terminal device |
WO2006052897A2 (en) * | 2004-11-08 | 2006-05-18 | Innopath Software, Inc. | Reorganizing images in static file system differencing and updating |
US20060136520A1 (en) * | 2004-12-17 | 2006-06-22 | Nokia Corporation | Apparatus, method and computer program to provide metadata-based data transfer from one mobile terminal to another mobile terminal |
US20060143362A1 (en) * | 2004-12-29 | 2006-06-29 | Cong Li | Apparatus and method for incremental package deployment |
US20060161594A1 (en) * | 2005-01-19 | 2006-07-20 | Samsung Electronics Co., Ltd. | Method and apparatus for improving data processing speed through storage of record information of identity module |
US20060230395A1 (en) * | 2005-03-16 | 2006-10-12 | Microsoft Corporation | Embedded device update service |
US20060265696A1 (en) * | 2005-05-23 | 2006-11-23 | International Business Machines Corporation | Method and system for data migration between versions of software |
US20060265706A1 (en) * | 2005-05-19 | 2006-11-23 | Isaacson Scott A | System for creating a customized software installation on demand |
US7143251B1 (en) * | 2003-06-30 | 2006-11-28 | Data Domain, Inc. | Data storage using identifiers |
US20060271666A1 (en) * | 2003-08-04 | 2006-11-30 | Sbc Knowledge Ventures, L.P. | System and method to identify customer premise equipment devices |
US20060282653A1 (en) * | 2005-06-08 | 2006-12-14 | Ping-Ying Chu | Method for updating frimware of memory card |
US20070074200A1 (en) * | 2005-05-29 | 2007-03-29 | Hon Hai Precision Industry Co., Ltd. | Function selection system and method |
US20070073785A1 (en) * | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | System and method for propagation in a web portal system |
US20070073786A1 (en) * | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | System and method for propagating security information in a web portal system |
US20070079019A1 (en) * | 2005-09-30 | 2007-04-05 | Shih-Chang Hu | Cellular phone and portable storage device using the same |
WO2007047008A2 (en) * | 2005-10-20 | 2007-04-26 | Harris Corporation | Mobile wireless communications device providing enhanced file management and related methods |
US20070143530A1 (en) * | 2005-12-15 | 2007-06-21 | Rudelic John C | Method and apparatus for multi-block updates with secure flash memory |
US20070192532A1 (en) * | 2002-09-30 | 2007-08-16 | Insignia Solutions Plc | Efficient system and method for updating a memory device |
US20070255938A1 (en) * | 2006-04-27 | 2007-11-01 | Eric Gagneraud | Media transfer system and method |
US20080010246A1 (en) * | 2006-07-06 | 2008-01-10 | Curtis Bryce A | System and method for providing operating system component version verification |
US7320142B1 (en) * | 2001-11-09 | 2008-01-15 | Cisco Technology, Inc. | Method and system for configurable network intrusion detection |
US20080052279A1 (en) * | 2006-07-12 | 2008-02-28 | Sunil Marolia | Device and network capable of providing personalized services |
US20080059958A1 (en) * | 2004-08-05 | 2008-03-06 | Wladyslaw Bolanowski | Update of Software in a Portable Radio Communication Equipment |
US20080104195A1 (en) * | 2006-10-30 | 2008-05-01 | Microsoft Corporation | Offline execution of web based applications |
US7392518B1 (en) * | 2002-02-21 | 2008-06-24 | 3Com Corporation | Robust remote flash ROM upgrade system and method |
US7409435B1 (en) * | 2002-02-28 | 2008-08-05 | Sprint Communications Company L.P. | Integrated services hub binary file trial run process |
US20080195443A1 (en) * | 2002-09-16 | 2008-08-14 | Guy Nathan | Digital downloading jukebox system with central and local music servers |
US20080289063A1 (en) * | 2002-01-23 | 2008-11-20 | Monsanto Technology Llc | Plastid Transformation of Maize |
CN100454843C (en) * | 2006-07-25 | 2009-01-21 | 华为技术有限公司 | Control system and method for software batch distribution |
US20090055816A1 (en) * | 2007-08-23 | 2009-02-26 | Sony Corporation | Information processing apparatus, update method, and program |
US20090064172A1 (en) * | 2007-08-31 | 2009-03-05 | Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd | System and method for task scheduling |
US20090076628A1 (en) * | 2007-09-18 | 2009-03-19 | David Mark Smith | Methods and apparatus to upgrade and provide control redundancy in process plants |
US20090119422A1 (en) * | 2007-11-07 | 2009-05-07 | International Business Machines Corporation | Method and apparatus for performing maintenance operations on peripheral devices |
US20090124394A1 (en) * | 2006-11-13 | 2009-05-14 | Bally Gaming, Inc. | System and method for validating download or configuration assignment for an egm or egm collection |
US20090125514A1 (en) * | 2007-11-08 | 2009-05-14 | Brown Russell A | Sequence Matching Algorithm |
US7543118B1 (en) * | 2004-05-07 | 2009-06-02 | Hewlett-Packard Development Company, L.P. | Multiple variance platform for the management of mobile devices |
US20090210868A1 (en) * | 2008-02-19 | 2009-08-20 | Microsoft Corporation | Software Update Techniques |
US20090248397A1 (en) * | 2008-03-25 | 2009-10-01 | Microsoft Corporation | Service Initiation Techniques |
US20090298583A1 (en) * | 2008-05-30 | 2009-12-03 | Bally Gaming, Inc. | Web pages for gaming devices |
US20090320012A1 (en) * | 2008-06-04 | 2009-12-24 | Mediatek Inc. | Secure booting for updating firmware over the air |
US7657886B1 (en) * | 2004-06-03 | 2010-02-02 | Hewlett-Packard Development Company, L.P. | Mobile device with a MMU for faster firmware updates in a wireless network |
US20100058311A1 (en) * | 2008-09-02 | 2010-03-04 | Fujitsu Network Communications, Inc. | Providing Code To A Programmable Device |
US20100057839A1 (en) * | 2008-01-09 | 2010-03-04 | Nec Electronics Corporation | System and method for distributing design system, design system distributing server, and client system |
US20100125646A1 (en) * | 2005-09-27 | 2010-05-20 | Ceedo Technologies (2005) Ltd | System For Enabling Host-Independent Software Portability Of A Self-Contained Device |
US20100228652A1 (en) * | 2009-03-06 | 2010-09-09 | Vodafone Holding Gmbh | Billing mechanism for a mobile communication network |
US20100241752A1 (en) * | 2009-03-17 | 2010-09-23 | Chi Mei Communication Systems, Inc. | Portable electronic device and method for downloading a firmware loader from a host computer |
US7805719B2 (en) | 2000-11-17 | 2010-09-28 | Hewlett-Packard Development Company, L.P. | System and method for updating and distributing information |
US20110035633A1 (en) * | 2003-08-04 | 2011-02-10 | At&T Intellectual Property I, L.P. | System and method to identify devices employing point-to-point-over ethernet encapsulation |
US7971199B1 (en) * | 2004-05-03 | 2011-06-28 | Hewlett-Packard Development Company, L.P. | Mobile device with a self-updating update agent in a wireless network |
US20110173598A1 (en) * | 2004-04-21 | 2011-07-14 | Chris Cassapakis | Updating an electronic device with update agent code |
US20110179408A1 (en) * | 2009-08-21 | 2011-07-21 | Hitachi Solutions, Ltd. | Update data generating apparatus and information device, as well as program |
US20110185350A1 (en) * | 2010-01-26 | 2011-07-28 | Mitsuru Kawahata | Shared-program updating system |
US20110209131A1 (en) * | 2008-10-06 | 2011-08-25 | Uwe Hohenstein | Method and device for replacing a component of a computer system |
US20110219234A1 (en) * | 2010-03-08 | 2011-09-08 | Etay Bogner | System and method for hypervisor-based remediation and provisioning of a computer |
US20120089973A1 (en) * | 2010-10-11 | 2012-04-12 | International Business Machines Corporation | Smart patch delivery system |
US8214398B1 (en) | 2005-02-16 | 2012-07-03 | Emc Corporation | Role based access controls |
US8219807B1 (en) | 2004-12-17 | 2012-07-10 | Novell, Inc. | Fine grained access control for linux services |
US20120198344A1 (en) * | 2011-01-27 | 2012-08-02 | Wyse Technology Inc. | Comparing and provisioning configurations for a client having a windows-based embedded image |
US20120197973A1 (en) * | 2011-01-27 | 2012-08-02 | Wyse Technology Inc. | Transferring configuration data from a public cloud server and applying onto a mobile client |
WO2012102911A1 (en) * | 2011-01-27 | 2012-08-02 | Wyse Technology Inc. | State-based provisioning of a client having a windows-based embedded image |
US20120204167A1 (en) * | 2011-02-03 | 2012-08-09 | Nec Corporation | Software management system |
US8271785B1 (en) | 2004-12-20 | 2012-09-18 | Novell, Inc. | Synthesized root privileges |
US20120260244A1 (en) * | 2011-04-06 | 2012-10-11 | Brent Keller | Failsafe firmware updates |
US20120296878A1 (en) * | 2010-01-21 | 2012-11-22 | Nec Corporation | File set consistency verification system, file set consistency verification method, and file set consistency verification program |
US20120311555A1 (en) * | 2009-12-22 | 2012-12-06 | Echostar Global B.V. | Method and system for changing software or firmware on an electronic device |
US8352935B2 (en) | 2005-05-19 | 2013-01-08 | Novell, Inc. | System for creating a customized software distribution based on user requirements |
EP2549395A1 (en) * | 2011-07-18 | 2013-01-23 | Honeywell International Inc. | Systems, methods and apparatus for fast file transfer |
US20130139127A1 (en) * | 2011-11-29 | 2013-05-30 | Martin Vecera | Systems and methods for providing continuous integration in a content repository |
US8468515B2 (en) | 2000-11-17 | 2013-06-18 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
US8479189B2 (en) | 2000-11-17 | 2013-07-02 | Hewlett-Packard Development Company, L.P. | Pattern detection preprocessor in an electronic device update generation system |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
US8555273B1 (en) | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
US8560818B2 (en) | 2011-01-27 | 2013-10-15 | Wyse Technolgoy Inc. | Automatic retrieval, parsing and application of configuration for a specific-purpose client having a windows-based embedded image with a write-filter |
US20130283255A1 (en) * | 2011-01-12 | 2013-10-24 | Zte Corporation | Method, Device and System for Installing Terminal Software |
US20130326495A1 (en) * | 2012-06-01 | 2013-12-05 | Nokia Corporation | Wireless programming |
US8616958B2 (en) | 2007-11-12 | 2013-12-31 | Bally Gaming, Inc. | Discovery method and system for dynamically locating networked gaming components and resources |
US20140007075A1 (en) * | 2012-06-27 | 2014-01-02 | Google Inc. | Methods for updating applications |
US20140012970A1 (en) * | 2012-07-03 | 2014-01-09 | Research In Motion Limited | Methods and devices for facilitating a download session |
US8631501B2 (en) | 2006-11-10 | 2014-01-14 | Bally Gaming, Inc. | Reporting function in gaming system environment |
US20140059593A1 (en) * | 2006-06-22 | 2014-02-27 | Tivo Inc. | In-band data recognition and synchronization system |
US8676973B2 (en) | 2006-03-07 | 2014-03-18 | Novell Intellectual Property Holdings, Inc. | Light-weight multi-user browser |
US20140096125A1 (en) * | 2012-09-28 | 2014-04-03 | Wal-Mart Stores, Inc. | Systems and methods for installing, managing, and provisioning applications |
US8700888B2 (en) | 2011-01-27 | 2014-04-15 | Wyse Technology L.L.C. | Specific-purpose client with configuration history for self-provisioning of configuration and obviating reinstallation of embedded image |
US8725997B2 (en) | 2011-01-27 | 2014-05-13 | Wyse Technology L.L.C. | Self-provisioning of configuration for a specific-purpose client having a windows-based embedded image with a write-filter |
US20140137097A1 (en) * | 2012-11-15 | 2014-05-15 | Nintendo Co., Ltd. | Information processing apparatus, terminal system, storage medium having stored therein information processing program, and method of obtaining update data for application |
US8752044B2 (en) | 2006-07-27 | 2014-06-10 | Qualcomm Incorporated | User experience and dependency management in a mobile device |
US8751778B2 (en) | 2011-01-27 | 2014-06-10 | Wyse Technology L.L.C. | Generating, validating and applying custom extensible markup language (XML) configuration on a client having a windows-based embedded image |
US8784212B2 (en) | 2006-11-10 | 2014-07-22 | Bally Gaming, Inc. | Networked gaming environment employing different classes of gaming machines |
US8825990B2 (en) | 2011-01-27 | 2014-09-02 | Wyse Technology L.L.C. | Configuring and customizing a specific-purpose client having a windows-based embedded image using extensible markup language (XML) configuration |
US8832259B1 (en) * | 2009-10-30 | 2014-09-09 | Hewlett-Packard Development Company, L.P. | Virtual service mode methods for network remote monitoring and managing system |
US8838754B1 (en) * | 2004-01-26 | 2014-09-16 | Qualcomm Incorporated | Mobile device with a management forest in a device management network |
US20140282486A1 (en) * | 2013-03-15 | 2014-09-18 | Vivint, Inc. | Software updates from a security control unit |
US20140282482A1 (en) * | 2011-02-10 | 2014-09-18 | Trilliant Networks, Inc. | Device and method for facilitating secure communications over a cellular network |
US8856657B2 (en) | 2008-04-30 | 2014-10-07 | Bally Gaming, Inc. | User interface for managing network download and configuration tasks |
US8851988B2 (en) | 2008-11-14 | 2014-10-07 | Bally Gaming, Inc. | Apparatus, method, and system to provide a multiple processor architecture for server-based gaming |
US8870647B2 (en) | 2006-04-12 | 2014-10-28 | Bally Gaming, Inc. | Wireless gaming environment |
US8893110B2 (en) | 2006-06-08 | 2014-11-18 | Qualcomm Incorporated | Device management in a network |
WO2014186176A1 (en) * | 2013-05-14 | 2014-11-20 | Sandisk Technologies Inc. | Firmware updates for multiple product configurations |
US20140366012A1 (en) * | 2011-12-06 | 2014-12-11 | Samsung Electronics Co., Ltd. | Method and apparatus for providing firmware over the air service to user equipments |
US8920236B2 (en) | 2007-11-02 | 2014-12-30 | Bally Gaming, Inc. | Game related systems, methods, and articles that combine virtual and physical elements |
US8920233B2 (en) | 2006-11-10 | 2014-12-30 | Bally Gaming, Inc. | Assignment template and assignment bundle in a gaming configuration and download system |
US20150052512A1 (en) * | 2013-08-19 | 2015-02-19 | Dresser, Inc. | System and method for updating firmware across devices in a process facility |
US20150059006A1 (en) * | 2013-08-23 | 2015-02-26 | Cellco Partnership (D/B/A Verizon Wireless) | Secure Device Management Abstraction and Unification Module |
US9005034B2 (en) | 2008-04-30 | 2015-04-14 | Bally Gaming, Inc. | Systems and methods for out-of-band gaming machine management |
US9058716B2 (en) | 2011-06-06 | 2015-06-16 | Bally Gaming, Inc. | Remote game play in a wireless gaming environment |
US9082258B2 (en) | 2006-11-13 | 2015-07-14 | Bally Gaming, Inc. | Method and system for providing download and configuration job progress tracking and display via host user interface |
US9101820B2 (en) | 2006-11-09 | 2015-08-11 | Bally Gaming, Inc. | System, method and apparatus to produce decks for and operate games played with playing cards |
US9111078B2 (en) | 2006-11-10 | 2015-08-18 | Bally Gaming, Inc. | Package manager service in gaming system |
US20150234648A1 (en) * | 2014-02-18 | 2015-08-20 | Nec Corporation | Firmware management system, method, and recording medium storing program |
US9120007B2 (en) | 2012-01-18 | 2015-09-01 | Bally Gaming, Inc. | Network gaming architecture, gaming systems, and related methods |
US20150278825A1 (en) * | 2014-03-31 | 2015-10-01 | Red Hat, Inc. | Behavior adjustment based on capabilities of a downstream server |
JP2015176601A (en) * | 2014-03-17 | 2015-10-05 | 廣達電腦股▲分▼有限公司 | Software update method, software update system, and mobile device |
EP2932374A1 (en) * | 2012-12-14 | 2015-10-21 | Telefonaktiebolaget LM Ericsson (PUBL) | Systems, methods, and computer program products for a software build and load process using a compilation and deployment service |
WO2015167943A1 (en) * | 2014-04-30 | 2015-11-05 | Microsoft Technology Licensing, Llc | Dynamic update installer for customized software |
US20150382183A1 (en) * | 2002-01-31 | 2015-12-31 | Qualcomm Incorporated | System and method for updating dataset versions resident on a wireless device |
US20160019109A1 (en) * | 2007-09-07 | 2016-01-21 | Ebay Inc. | Method and system for problem modification and processing |
US9275512B2 (en) | 2006-11-10 | 2016-03-01 | Bally Gaming, Inc. | Secure communications in gaming system |
DE102014116321A1 (en) * | 2014-11-10 | 2016-05-12 | Harting Electric Gmbh & Co. Kg | Update a firmware |
US9367490B2 (en) | 2014-06-13 | 2016-06-14 | Microsoft Technology Licensing, Llc | Reversible connector for accessory devices |
US9369959B2 (en) | 2011-10-31 | 2016-06-14 | Nokia Technologies Oy | Wirelessly transferring data to a packaged electronic device |
EP2798480A4 (en) * | 2011-12-30 | 2016-06-29 | Intel Corp | Vector frequency compress instruction |
US9384334B2 (en) | 2014-05-12 | 2016-07-05 | Microsoft Technology Licensing, Llc | Content discovery in managed wireless distribution networks |
US9384335B2 (en) | 2014-05-12 | 2016-07-05 | Microsoft Technology Licensing, Llc | Content delivery prioritization in managed wireless distribution networks |
US20160196127A1 (en) * | 2015-01-01 | 2016-07-07 | Bank Of America Corporation | Automated code deployment system |
EP3046023A1 (en) * | 2015-01-19 | 2016-07-20 | LSIS Co., Ltd. | Photovoltaic system |
US9430667B2 (en) | 2014-05-12 | 2016-08-30 | Microsoft Technology Licensing, Llc | Managed wireless distribution network |
US20160259690A1 (en) * | 2015-03-04 | 2016-09-08 | Unisys Corporation | Clearing bank descriptors for reuse by a gate bank |
US20160266889A1 (en) * | 2015-03-13 | 2016-09-15 | Kony, Inc. | Providing updates for natively rendered mobile applications |
US9466172B2 (en) | 2006-11-13 | 2016-10-11 | Bally Gaming, Inc. | Download and configuration management engine for gaming system |
US9483911B2 (en) | 2008-04-30 | 2016-11-01 | Bally Gaming, Inc. | Information distribution in gaming networks |
US20160357543A1 (en) * | 2015-06-05 | 2016-12-08 | Unisys Corporation | Dynamic replacement of software components |
US20170090901A1 (en) * | 2015-09-30 | 2017-03-30 | Apple Inc. | Software Updating |
US9614724B2 (en) | 2014-04-21 | 2017-04-04 | Microsoft Technology Licensing, Llc | Session-based device configuration |
US9772837B2 (en) * | 2015-06-29 | 2017-09-26 | Verizon Patent And Licensing Inc. | Dynamic delivery of code and fixes |
US9792770B2 (en) | 2012-01-18 | 2017-10-17 | Bally Gaming, Inc. | Play for fun network gaming system and method |
US9864594B1 (en) * | 2014-09-30 | 2018-01-09 | Amazon Technologies, Inc. | Software upgrade and operation testing of a packaged electronic device |
US9874914B2 (en) | 2014-05-19 | 2018-01-23 | Microsoft Technology Licensing, Llc | Power management contracts for accessory devices |
US20180063159A1 (en) * | 2016-08-25 | 2018-03-01 | Samsung Electronics Co., Ltd. | Apparatus and method for providing security service in communication system |
US9986295B2 (en) | 2009-04-08 | 2018-05-29 | Tivo Solutions Inc. | Automatic contact information transmission system |
CN108292209A (en) * | 2016-01-20 | 2018-07-17 | 谷歌有限责任公司 | The method and apparatus that caching and the application currently compiled are selectively provided |
US10089613B2 (en) | 2002-09-16 | 2018-10-02 | Touchtunes Music Corporation | Digital downloading jukebox system with central and local music servers |
US10111099B2 (en) | 2014-05-12 | 2018-10-23 | Microsoft Technology Licensing, Llc | Distributing content in managed wireless distribution networks |
US20180338068A1 (en) * | 2014-01-31 | 2018-11-22 | Digimarc Corporation | Methods for encoding, decoding and interpreting auxiliary data in media signals |
CN109144555A (en) * | 2017-06-19 | 2019-01-04 | 歌拉利旺株式会社 | Electronic equipment and method for updating program |
US10289408B2 (en) * | 2015-01-21 | 2019-05-14 | Western Digital Technologies, Inc. | Managing wear of system areas of storage devices |
US10354751B1 (en) * | 2012-01-10 | 2019-07-16 | Cerner Innovation, Inc. | Computerized systems and methods for providing mobile-device updates of electronic health records |
US10566082B1 (en) | 2012-01-10 | 2020-02-18 | Cerner Innovation, Inc. | Proximity-based mobile-device updates of electronic health records |
US10628286B1 (en) | 2018-10-18 | 2020-04-21 | Denso International America, Inc. | Systems and methods for dynamically identifying program control flow and instrumenting source code |
US10691445B2 (en) | 2014-06-03 | 2020-06-23 | Microsoft Technology Licensing, Llc | Isolating a portion of an online computing service for testing |
US10705828B2 (en) * | 2017-06-14 | 2020-07-07 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus for updating application |
US10922073B2 (en) * | 2017-04-19 | 2021-02-16 | Servicenow, Inc. | Distributed incremental updating of trays using a source control system |
US11037664B1 (en) | 2012-01-10 | 2021-06-15 | Cerner Innovation, Inc. | Decision support tool for managing autoimmune inflammatory disease |
US11070618B2 (en) * | 2019-01-30 | 2021-07-20 | Valve Corporation | Techniques for updating files |
US11126418B2 (en) * | 2012-10-11 | 2021-09-21 | Mcafee, Llc | Efficient shared image deployment |
US11144299B2 (en) * | 2018-07-05 | 2021-10-12 | Silicon Motion, Inc. | Firmware updating method |
US11159617B1 (en) * | 2021-01-22 | 2021-10-26 | Juniper Networks, Inc | Apparatus, system, and method for synchronizing replicated objects across network nodes in highly scaled environments |
US11157472B1 (en) | 2011-10-27 | 2021-10-26 | Valve Corporation | Delivery of digital information to a remote device |
US20210357370A1 (en) * | 2020-05-14 | 2021-11-18 | Valve Corporation | Efficient file-delivery techniques |
US20220006817A1 (en) * | 2019-03-29 | 2022-01-06 | Huawei Technologies Co., Ltd. | Information Verification Method, Apparatus, And Device |
WO2022063773A1 (en) * | 2020-09-28 | 2022-03-31 | Robert Bosch Gmbh | Method for updating software |
US11430256B2 (en) | 2014-04-29 | 2022-08-30 | Microsoft Technology Licensing, Llc | Image scoring and identification based on facial feature descriptors |
US20220368686A1 (en) * | 2021-05-14 | 2022-11-17 | Citrix Systems, Inc. | Method for secondary authentication |
US11630657B2 (en) * | 2020-05-14 | 2023-04-18 | Hyundai Motor Company | Software updating system and method of controlling the same |
US11775288B2 (en) * | 2019-08-27 | 2023-10-03 | Konamobility Company Limited | Method and apparatus for generating difference between old and new versions of data for updating software |
Families Citing this family (176)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8069407B1 (en) * | 1998-12-08 | 2011-11-29 | Yodlee.Com, Inc. | Method and apparatus for detecting changes in websites and reporting results to web developers for navigation template repair purposes |
WO2002078385A1 (en) * | 2001-03-23 | 2002-10-03 | Tatsuya Fujii | Apparatus setting updating system |
US7734285B2 (en) * | 2001-04-03 | 2010-06-08 | Qualcomm Incorporated | Method and apparatus for network initiated uninstallation of application program over wireless network |
US7266379B2 (en) | 2001-05-30 | 2007-09-04 | Palm, Inc. | Resource location through location history |
GB0123861D0 (en) * | 2001-10-04 | 2001-11-28 | Marconi Comm Ltd | Comunications networks |
US7317699B2 (en) | 2001-10-26 | 2008-01-08 | Research In Motion Limited | System and method for controlling configuration settings for mobile communication devices and services |
US20030087602A1 (en) | 2001-11-05 | 2003-05-08 | Palm, Inc. | Data prioritization and distribution limitation system and method |
US7137004B2 (en) * | 2001-11-16 | 2006-11-14 | Microsoft Corporation | Manifest-based trusted agent management in a trusted operating system environment |
CA2369228A1 (en) * | 2002-01-24 | 2003-07-24 | Alcatel Canada Inc. | System and method for managing configurable elements of devices in a network element and a network |
US8255361B2 (en) * | 2003-01-31 | 2012-08-28 | Oracle America, Inc. | Method and system for validating differential computer system update |
US7509635B2 (en) * | 2003-09-26 | 2009-03-24 | Red Hat, Inc. | Software and data file updating process |
US20050182822A1 (en) * | 2004-02-17 | 2005-08-18 | Daniel Stuart W. | Imaging device with memory device interface |
US8688803B2 (en) * | 2004-03-26 | 2014-04-01 | Microsoft Corporation | Method for efficient content distribution using a peer-to-peer networking infrastructure |
US20060069796A1 (en) * | 2004-09-29 | 2006-03-30 | Infinium Labs, Inc. | Method for automatic patching of a sparsely streamed application |
TWI273453B (en) * | 2004-12-10 | 2007-02-11 | Hon Hai Prec Ind Co Ltd | An system and method for automatically updating software |
GB2422692B (en) * | 2005-01-31 | 2009-08-12 | Hewlett Packard Development Co | Software updates for electronic appliances |
US7793259B2 (en) * | 2005-03-02 | 2010-09-07 | Microsoft Corporation | System and method for managing user interaction data in a networked environment |
JP2008512764A (en) * | 2005-04-15 | 2008-04-24 | ケーティーフリーテル・カンパニー・リミテッド | Method of providing content for mobile communication terminal |
EP1891496A4 (en) * | 2005-04-15 | 2011-11-30 | Kt Freetel Co Ltd | Method for providing contents |
KR100680296B1 (en) * | 2005-04-15 | 2007-02-07 | 주식회사 케이티프리텔 | Method for providing continuous downloading service of large size contents through wireless network and record media recored program for realizing the same |
CN101040552B (en) * | 2005-04-18 | 2010-12-01 | 捷讯研究有限公司 | Method and system for controlling software version updates |
US9621666B2 (en) | 2005-05-26 | 2017-04-11 | Citrix Systems, Inc. | Systems and methods for enhanced delta compression |
US9692725B2 (en) | 2005-05-26 | 2017-06-27 | Citrix Systems, Inc. | Systems and methods for using an HTTP-aware client agent |
US9407608B2 (en) | 2005-05-26 | 2016-08-02 | Citrix Systems, Inc. | Systems and methods for enhanced client side policy |
US8943304B2 (en) | 2006-08-03 | 2015-01-27 | Citrix Systems, Inc. | Systems and methods for using an HTTP-aware client agent |
US7756826B2 (en) * | 2006-06-30 | 2010-07-13 | Citrix Systems, Inc. | Method and systems for efficient delivery of previously stored content |
CN1928818A (en) * | 2005-09-09 | 2007-03-14 | 鸿富锦精密工业(深圳)有限公司 | Network device and software updating method thereof |
US7761419B2 (en) * | 2005-12-29 | 2010-07-20 | International Business Machines Corporation | Protected data replication |
US20070243851A1 (en) * | 2006-04-18 | 2007-10-18 | Radiofy Llc | Methods and systems for utilizing backscattering techniques in wireless applications |
US7802243B1 (en) * | 2006-04-20 | 2010-09-21 | Open Invention Network Llc | System and method for server customization |
US20080022274A1 (en) * | 2006-04-22 | 2008-01-24 | Shieh Johnny M | Method and system for pre-installation conflict identification and prevention |
US7779401B2 (en) | 2006-06-26 | 2010-08-17 | Research In Motion Limited | Method and system for generating a reverse binary patch for undoing a software update |
US20090150872A1 (en) * | 2006-07-04 | 2009-06-11 | George Russell | Dynamic code update |
US7814459B2 (en) * | 2006-07-10 | 2010-10-12 | International Business Machines Corporation | System and method for automated on demand replication setup |
CN101512486A (en) * | 2006-08-29 | 2009-08-19 | 皇家飞利浦电子股份有限公司 | Method and device for upgrading software in a consumer product |
US8024724B2 (en) * | 2006-08-31 | 2011-09-20 | Itron, Inc. | Firmware download |
US7640367B2 (en) * | 2006-09-06 | 2009-12-29 | Seiko Epson Corporation | Method for executing a software updating process and computer for implementing the method |
GB0623933D0 (en) * | 2006-11-29 | 2007-01-10 | Ibm | Apparatus and method for synchronizing controller firmware download |
US20080148248A1 (en) * | 2006-12-15 | 2008-06-19 | Michael Volkmer | Automatic software maintenance with change requests |
US7688757B2 (en) * | 2006-12-29 | 2010-03-30 | Alcatel-Lucent Usa Inc. | Method and apparatus for assessing sourced elements |
US7870548B2 (en) * | 2007-01-05 | 2011-01-11 | Inventec Corporation | Method for updating an image file |
US8305190B2 (en) * | 2007-03-20 | 2012-11-06 | Golba Llc | Method and apparatus for power management for a radio frequency identification system |
US8726259B2 (en) * | 2007-04-09 | 2014-05-13 | Kyocera Corporation | System and method for preserving device parameters during a FOTA upgrade |
US9031583B2 (en) | 2007-04-11 | 2015-05-12 | Qualcomm Incorporated | Notification on mobile device based on location of other mobile device |
US20080254811A1 (en) | 2007-04-11 | 2008-10-16 | Palm, Inc. | System and method for monitoring locations of mobile devices |
US9140552B2 (en) * | 2008-07-02 | 2015-09-22 | Qualcomm Incorporated | User defined names for displaying monitored location |
WO2009003070A1 (en) * | 2007-06-26 | 2008-12-31 | Gosub 60, Inc. | Methods and systems for updating in-game content |
US9731202B2 (en) * | 2007-06-26 | 2017-08-15 | Gosub 60, Inc. | Methods and systems for updating in-game content |
US8688089B2 (en) | 2007-06-26 | 2014-04-01 | Gosub 60, Inc. | Methods and systems for providing in-game hot spots |
US8209540B2 (en) * | 2007-06-28 | 2012-06-26 | Apple Inc. | Incremental secure backup and restore of user settings and data |
US8185883B2 (en) * | 2007-09-14 | 2012-05-22 | International Business Machines Corporation | Instruction exploitation through loader late fix-up |
US8490078B2 (en) * | 2007-09-25 | 2013-07-16 | Barclays Capital, Inc. | System and method for application management |
IL187042A0 (en) | 2007-10-30 | 2008-02-09 | Sandisk Il Ltd | Write failure protection for hierarchical integrity schemes |
US8332838B2 (en) | 2007-11-14 | 2012-12-11 | Continental Automotive Systems, Inc. | Systems and methods for updating device software |
US8397228B2 (en) * | 2007-11-14 | 2013-03-12 | Continental Automotive Systems, Inc. | Systems and methods for updating device software |
US20090133012A1 (en) * | 2007-11-21 | 2009-05-21 | Cyberlink Corporation | Apparatus and method for providing notification of software update |
US9122553B2 (en) * | 2007-12-01 | 2015-09-01 | Sony Corporation | Synchronous bus download of TV software update |
US8095648B2 (en) * | 2007-12-19 | 2012-01-10 | Microsoft Corporation | Network device information collection and analysis |
US8291406B2 (en) * | 2008-01-16 | 2012-10-16 | Verizon Patent And Licensing Inc. | Data imaging system and methods |
US8756700B2 (en) | 2008-01-16 | 2014-06-17 | Verizon Patent And Licensing Inc. | Custom data image building |
TW200933484A (en) * | 2008-01-17 | 2009-08-01 | Wistron Corp | Method and system for automated schedule control |
US8413138B2 (en) * | 2008-02-06 | 2013-04-02 | Mformation Software Technologies, Inc. | System and method to securely load a management client from a stub client to facilitate remote device management |
US9009357B2 (en) * | 2008-04-24 | 2015-04-14 | Micron Technology, Inc. | Method and apparatus for field firmware updates in data storage systems |
TW200947223A (en) * | 2008-05-02 | 2009-11-16 | Inventec Corp | A sharing basic input output system server device and method thereof |
US8572599B2 (en) * | 2008-06-23 | 2013-10-29 | Verizon Patent And Licensing Inc. | Provisioning device make and model information for firmware over-the-air (FOTA) |
WO2010001324A2 (en) * | 2008-06-30 | 2010-01-07 | Mominis Ltd | Method of generating and distributing a computer application |
EP2329368B1 (en) * | 2008-08-04 | 2019-10-02 | Red Bend Ltd. | Updating content without using a mini operating system |
JP5168112B2 (en) * | 2008-12-02 | 2013-03-21 | 富士通株式会社 | Patch application device, patch application method, and patch application program |
US8612961B2 (en) * | 2008-12-31 | 2013-12-17 | Motorola Mobility Llc | System and method for downloading software upgrades |
US20100191867A1 (en) * | 2009-01-29 | 2010-07-29 | Dell Products L.P. | Systems and Methods for Performing Field Updates of Firmware |
US8005929B1 (en) * | 2009-02-27 | 2011-08-23 | Symantec Operating Corporation | Software update checking method |
US9104521B2 (en) * | 2009-03-16 | 2015-08-11 | Tyco Electronics Subsea Communications Llc | System and method for remote device application upgrades |
US8291497B1 (en) * | 2009-03-20 | 2012-10-16 | Symantec Corporation | Systems and methods for byte-level context diversity-based automatic malware signature generation |
US9037554B2 (en) * | 2009-06-30 | 2015-05-19 | Oracle America, Inc. | Bloom bounders for improved computer system performance |
CN101610499A (en) * | 2009-07-13 | 2009-12-23 | 中兴通讯股份有限公司 | The upgrade method of wireless data card and system |
US8755815B2 (en) | 2010-08-31 | 2014-06-17 | Qualcomm Incorporated | Use of wireless access point ID for position determination |
US8395547B2 (en) | 2009-08-27 | 2013-03-12 | Hewlett-Packard Development Company, L.P. | Location tracking for mobile computing device |
US8397230B2 (en) * | 2009-11-09 | 2013-03-12 | Bank Of America Corporation | Software updates using delta patching |
US20110113420A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Distribution Of Software Updates |
US8671402B2 (en) * | 2009-11-09 | 2014-03-11 | Bank Of America Corporation | Network-enhanced control of software updates received via removable computer-readable medium |
US9176898B2 (en) * | 2009-11-09 | 2015-11-03 | Bank Of America Corporation | Software stack building using logically protected region of computer-readable medium |
US20110113421A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Programmatic Creation Of Task Sequences From Manifests |
US8972974B2 (en) | 2009-11-09 | 2015-03-03 | Bank Of America Corporation | Multiple invocation points in software build task sequence |
US8584113B2 (en) * | 2009-11-09 | 2013-11-12 | Bank Of America Corporation | Cross-updating of software between self-service financial transaction machines |
JP2011113391A (en) * | 2009-11-27 | 2011-06-09 | Ricoh Co Ltd | Equipment management system, equipment managing apparatus, equipment to be managed, software updating method, software updating program, and recording medium recorded with the program |
US8686685B2 (en) | 2009-12-25 | 2014-04-01 | Golba, Llc | Secure apparatus for wirelessly transferring power and communicating with one or more slave devices |
CN106445608A (en) * | 2010-01-27 | 2017-02-22 | 中兴通讯股份有限公司 | Software installation pack installing method and installing device |
US8869138B2 (en) | 2011-11-11 | 2014-10-21 | Wyse Technology L.L.C. | Robust firmware update with recovery logic |
US20110238572A1 (en) * | 2010-03-25 | 2011-09-29 | Bank Of America Corporation | Remote Control Of Self-Service Terminal |
US8881134B2 (en) | 2010-04-29 | 2014-11-04 | International Business Machines Corporation | Updating elements in data storage facility using predefined state machine over extended time period |
JP2011238007A (en) * | 2010-05-10 | 2011-11-24 | Canon Inc | Distribution apparatus, program distribution system, distribution method, and program |
US8739150B2 (en) * | 2010-05-28 | 2014-05-27 | Smartshift Gmbh | Systems and methods for dynamically replacing code objects via conditional pattern templates |
US20120066669A1 (en) * | 2010-09-14 | 2012-03-15 | International Business Machines Corporation | Creating a superseding software release |
EP2622920B1 (en) | 2010-09-29 | 2024-01-17 | QUALCOMM Incorporated | Non-transient computer readable storage medium and mobile computing device employing matching of access point identifiers |
CN101984405A (en) * | 2010-10-11 | 2011-03-09 | 中兴通讯股份有限公司 | Method of software version upgrade and terminal and system |
US9753713B2 (en) * | 2010-10-22 | 2017-09-05 | Microsoft Technology Licensing, Llc | Coordinated upgrades in distributed systems |
US9311488B2 (en) | 2010-11-05 | 2016-04-12 | Atc Logistics & Electronics, Inc. | System and method for removing customer personal information from an electronic device |
US10387135B2 (en) * | 2010-11-05 | 2019-08-20 | FedEx Supply Chain Logistics & Electronics, Inc. | System and method for remotely flashing a wireless device |
US8650439B2 (en) * | 2010-12-07 | 2014-02-11 | Samsung Electronics Co., Ltd. | Apparatus and method for fault tolerant FOTA update |
US10296317B2 (en) * | 2010-12-20 | 2019-05-21 | Microsoft Technology Licensing, Llc | Continuous publication of application to remote computing devices |
US9246349B2 (en) | 2010-12-27 | 2016-01-26 | Golba Llc | Method and system for wireless battery charging utilizing ultrasonic transducer array based beamforming |
US9077188B2 (en) | 2012-03-15 | 2015-07-07 | Golba Llc | Method and system for a battery charging station utilizing multiple types of power transmitters for wireless battery charging |
EP2509299A1 (en) * | 2011-04-08 | 2012-10-10 | Technisat Digital Gmbh | Method for updating the software status of television receivers |
US9298501B2 (en) * | 2011-05-19 | 2016-03-29 | Globalfoundries Inc. | Concurrent management console operations |
US8972360B2 (en) * | 2011-05-23 | 2015-03-03 | International Business Machines Corporation | Position invariant compression of files within a multi-level compression scheme |
US8671299B2 (en) * | 2011-05-26 | 2014-03-11 | Google Inc. | Delaying the initiation of transitioning to a lower power mode by placing a computer system into an intermediate power mode between a normal power mode and the lower power mode |
US8914784B2 (en) | 2011-06-10 | 2014-12-16 | International Business Machines Corporation | Method and system for checking the consistency of application jar files |
US8782412B2 (en) | 2011-08-31 | 2014-07-15 | AstherPal Inc. | Secured privileged access to an embedded client on a mobile device |
US8694462B2 (en) | 2011-09-12 | 2014-04-08 | Microsoft Corporation | Scale-out system to acquire event data |
US9208476B2 (en) | 2011-09-12 | 2015-12-08 | Microsoft Technology Licensing, Llc | Counting and resetting broadcast system badge counters |
US8595322B2 (en) | 2011-09-12 | 2013-11-26 | Microsoft Corporation | Target subscription for a notification distribution system |
US20130066979A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Distributing events to large numbers of devices |
KR101850817B1 (en) | 2011-11-17 | 2018-04-23 | 삼성전자주식회사 | The method and apparatus for auto installing applications into different terminal |
US8819661B2 (en) * | 2011-11-28 | 2014-08-26 | Echostar Technologies L.L.C. | Systems and methods for determining times to perform software updates on receiving devices |
US9946526B2 (en) | 2011-12-07 | 2018-04-17 | Excalibur Ip, Llc | Development and hosting for platform independent applications |
US9158520B2 (en) * | 2011-12-07 | 2015-10-13 | Yahoo! Inc. | Development of platform independent applications |
KR101246360B1 (en) * | 2011-12-30 | 2013-03-22 | (주)네오위즈게임즈 | Method for data patch using memory and temporary memory and patch server and client thereof |
US9183393B2 (en) * | 2012-01-12 | 2015-11-10 | Facebook, Inc. | Multiple system images for over-the-air updates |
US20130254553A1 (en) * | 2012-03-24 | 2013-09-26 | Paul L. Greene | Digital data authentication and security system |
US9141509B2 (en) | 2012-03-30 | 2015-09-22 | Aetherpal Inc. | Mobile device remote control session activity pattern recognition |
US9224001B2 (en) | 2012-03-30 | 2015-12-29 | Aetherpal Inc. | Access control list for applications on mobile devices during a remote control session |
US9069973B2 (en) | 2012-03-30 | 2015-06-30 | Aetherpal Inc. | Password protect feature for application in mobile device during a remote session |
US9473953B2 (en) | 2012-03-30 | 2016-10-18 | Aetherpal Inc. | Roaming detection and session recovery during VMM-RC |
US9015246B2 (en) | 2012-03-30 | 2015-04-21 | Aetherpal Inc. | Session collaboration |
US9213536B2 (en) * | 2012-04-23 | 2015-12-15 | Business Objects Software Ltd. | Method and architecture for automatic installation and self-updating of client-side computer software |
FR2993682B1 (en) * | 2012-07-20 | 2014-08-22 | Oberthur Technologies | UPDATE OF AN OPERATING SYSTEM FOR SECURE ELEMENT |
US9405526B2 (en) * | 2012-08-07 | 2016-08-02 | Microsoft Technology Licensing, Llc | Initiating update operations |
US8713554B1 (en) * | 2012-09-14 | 2014-04-29 | Emc Corporation | Automated hotfix handling model |
US8924935B1 (en) | 2012-09-14 | 2014-12-30 | Emc Corporation | Predictive model of automated fix handling |
US8959503B2 (en) * | 2012-10-05 | 2015-02-17 | Microsoft Technology Licensing Llc | Application version gatekeeping during upgrade |
US9189225B2 (en) * | 2012-10-16 | 2015-11-17 | Imprivata, Inc. | Secure, non-disruptive firmware updating |
US8938730B2 (en) * | 2012-12-17 | 2015-01-20 | Itron, Inc. | Utilizing a multi-system set configuration to update a utility node system set |
US20140181799A1 (en) * | 2012-12-21 | 2014-06-26 | Emerson Network Power - Embedded Computing, Inc. | Boot Bank Selection, Bios, Upgrades and Crisis Recovery In Intel Based Platforms |
CN103885795B (en) * | 2012-12-21 | 2017-12-08 | 雅特生嵌入式计算有限公司 | Start memory bank selection, BIOS, the upgrading in the platform based on Intel and crisis recovery |
US9098374B2 (en) * | 2013-02-25 | 2015-08-04 | Hamilton Sundstrand Corporation | Version control for software configurable aircraft systems |
EP2981892B1 (en) | 2013-04-01 | 2020-05-06 | OC Acquisition LLC | Update management for a distributed computing system |
US9092300B2 (en) | 2013-04-18 | 2015-07-28 | Ottr Products, Llc | Peripheral device and method for updating firmware thereof |
US10860303B2 (en) * | 2013-04-24 | 2020-12-08 | Nintendo Co., Ltd. | Selective operating system patching/updating |
US8756593B2 (en) * | 2013-06-05 | 2014-06-17 | Splunk Inc. | Map generator for representing interrelationships between app features forged by dynamic pointers |
US9594545B2 (en) | 2013-06-05 | 2017-03-14 | Splunk Inc. | System for displaying notification dependencies between component instances |
US10061626B2 (en) | 2013-06-05 | 2018-08-28 | Splunk Inc. | Application framework providing a registry for mapping names to component instances |
US8756614B2 (en) | 2013-06-05 | 2014-06-17 | Splunk Inc. | Central registry for binding features using dynamic pointers |
US9830142B2 (en) | 2013-09-13 | 2017-11-28 | Microsoft Technology Licensing, Llc | Automatic installation of selected updates in multiple environments |
US10026064B2 (en) * | 2013-09-13 | 2018-07-17 | Microsoft Technology Licensing, Llc | Automatically recommending updates based on stored lifecycle information |
US9665359B2 (en) | 2013-09-13 | 2017-05-30 | Microsoft Technology Licensing, Llc | Automatically resolving conflicts after installation of selected updates in a computer system |
US9626176B2 (en) | 2013-09-13 | 2017-04-18 | Microsoft Technology Licensing, Llc | Update installer with technical impact analysis |
US9826395B2 (en) * | 2014-03-21 | 2017-11-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and devices for addressing device to device communications |
JP6482899B2 (en) * | 2015-02-27 | 2019-03-13 | 株式会社ソニー・インタラクティブエンタテインメント | Information processing device |
US9830603B2 (en) | 2015-03-20 | 2017-11-28 | Microsoft Technology Licensing, Llc | Digital identity and authorization for machines with replaceable parts |
JP6595822B2 (en) * | 2015-07-07 | 2019-10-23 | キヤノン株式会社 | Information processing apparatus and control method thereof |
DE102015112040A1 (en) * | 2015-07-23 | 2017-01-26 | Phoenix Contact Gmbh & Co. Kg | Method and system for firmware update of a process control device |
JP6581418B2 (en) * | 2015-07-30 | 2019-09-25 | キヤノン株式会社 | Distribution system, distribution method and program |
US9749017B2 (en) | 2015-08-13 | 2017-08-29 | Golba Llc | Wireless charging system |
US9740473B2 (en) | 2015-08-26 | 2017-08-22 | Bank Of America Corporation | Software and associated hardware regression and compatibility testing system |
US11593342B2 (en) | 2016-02-01 | 2023-02-28 | Smartshift Technologies, Inc. | Systems and methods for database orientation transformation |
US10585655B2 (en) | 2016-05-25 | 2020-03-10 | Smartshift Technologies, Inc. | Systems and methods for automated retrofitting of customized code objects |
US10185553B2 (en) | 2016-06-30 | 2019-01-22 | Microsoft Technology Licensing, Llc | Fault-tolerant variable region repaving during firmware over the air update |
US10140117B2 (en) | 2016-06-30 | 2018-11-27 | Microsoft Technology Licensing, Llc | Fault-tolerant variable region repaving during firmware over the air update |
WO2018013516A1 (en) | 2016-07-14 | 2018-01-18 | Carrier Corporation | Remote monitoring system |
US10089103B2 (en) | 2016-08-03 | 2018-10-02 | Smartshift Technologies, Inc. | Systems and methods for transformation of reporting schema |
US10530468B2 (en) * | 2016-10-19 | 2020-01-07 | Vector Launch Inc. | State transfer among virtualized nodes in spaceborne or airborne systems |
US10528343B2 (en) | 2018-02-06 | 2020-01-07 | Smartshift Technologies, Inc. | Systems and methods for code analysis heat map interfaces |
US10698674B2 (en) | 2018-02-06 | 2020-06-30 | Smartshift Technologies, Inc. | Systems and methods for entry point-based code analysis and transformation |
US10740075B2 (en) | 2018-02-06 | 2020-08-11 | Smartshift Technologies, Inc. | Systems and methods for code clustering analysis and transformation |
US10740079B2 (en) * | 2018-05-15 | 2020-08-11 | Microsoft Technology Licensing, Llc | Maintaining tight coupling between driver and application versions |
US11144298B2 (en) * | 2018-07-13 | 2021-10-12 | Microsoft Technology Licensing, Llc | Feature installer for software programs |
US11379249B2 (en) * | 2019-05-08 | 2022-07-05 | Distech Controls Inc. | Computing device providing fail-safe execution of a service |
US11360694B2 (en) | 2019-05-08 | 2022-06-14 | Distech Controls Inc. | Method providing resilient execution of a service on a computing device |
US11262927B2 (en) | 2019-07-30 | 2022-03-01 | Sony Interactive Entertainment LLC | Update optimization using feedback on probability of change for regions of data |
US11449325B2 (en) | 2019-07-30 | 2022-09-20 | Sony Interactive Entertainment LLC | Data change detection using variable-sized data chunks |
FR3099607B1 (en) * | 2019-07-30 | 2021-11-05 | Stmicroelectronics Grand Ouest Sas | Electronic component to firmware |
US11307841B2 (en) | 2019-07-30 | 2022-04-19 | Sony Interactive Entertainment LLC | Application patching using variable-sized units |
CN113574839B (en) * | 2020-02-28 | 2024-04-09 | 华为技术有限公司 | Software version rollback method, device and system |
US11328066B2 (en) * | 2020-04-08 | 2022-05-10 | Nxp Usa, Inc. | Method and system for securely patching read-only-memory code |
US11782701B2 (en) * | 2021-06-01 | 2023-10-10 | Stephen Davidson | Software updater |
US11861349B2 (en) * | 2021-10-07 | 2024-01-02 | Dell Products L.P. | Modular firmware updates in an information handling system |
Citations (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US15952A (en) * | 1856-10-21 | Cooking-stove | ||
US5084816A (en) * | 1987-11-25 | 1992-01-28 | Bell Communications Research, Inc. | Real time fault tolerant transaction processing system |
US5261055A (en) * | 1992-02-19 | 1993-11-09 | Milsys, Ltd. | Externally updatable ROM (EUROM) |
US5421006A (en) * | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
US5442771A (en) * | 1988-07-15 | 1995-08-15 | Prodigy Services Company | Method for storing data in an interactive computer network |
US5479637A (en) * | 1990-08-31 | 1995-12-26 | Gemplus Card International | Method and device for updating information elements in a memory |
US5579522A (en) * | 1991-05-06 | 1996-11-26 | Intel Corporation | Dynamic non-volatile memory update in a computer system |
US5596738A (en) * | 1992-01-31 | 1997-01-21 | Teac Corporation | Peripheral device control system using changeable firmware in a single flash memory |
US5598531A (en) * | 1991-05-13 | 1997-01-28 | William Stanley Hill | Method and apparatus for preventing "disease" damage in computer systems |
US5598534A (en) * | 1994-09-21 | 1997-01-28 | Lucent Technologies Inc. | Simultaneous verify local database and using wireless communication to verify remote database |
US5608910A (en) * | 1990-03-23 | 1997-03-04 | Canon Kabushiki Kaisha | Method for updating a control program for an information processing apparatus, and an information processing apparatus for updating a control program of an associated rewritable memory or a memory disk |
US5623604A (en) * | 1992-11-18 | 1997-04-22 | Canon Information Systems, Inc. | Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral |
US5666293A (en) * | 1994-05-27 | 1997-09-09 | Bell Atlantic Network Services, Inc. | Downloading operating system software through a broadcast channel |
US5752039A (en) * | 1993-03-22 | 1998-05-12 | Ntt Data Communications Systems Corp. | Executable file difference extraction/update system and executable file difference extraction method |
US5752042A (en) * | 1996-06-07 | 1998-05-12 | International Business Machines Corporation | Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer |
US5778440A (en) * | 1994-10-26 | 1998-07-07 | Macronix International Co., Ltd. | Floating gate memory device and method for terminating a program load cycle upon detecting a predetermined address/data pattern |
US5790974A (en) * | 1996-04-29 | 1998-08-04 | Sun Microsystems, Inc. | Portable calendaring device having perceptual agent managing calendar entries |
US5878256A (en) * | 1991-10-16 | 1999-03-02 | International Business Machine Corp. | Method and apparatus for providing updated firmware in a data processing system |
US5960445A (en) * | 1996-04-24 | 1999-09-28 | Sony Corporation | Information processor, method of updating a program and information processing system |
US5968182A (en) * | 1997-05-12 | 1999-10-19 | International Business Machines Corporation | Method and means for utilizing device long busy response for resolving detected anomalies at the lowest level in a hierarchical, demand/response storage management subsystem |
US6018747A (en) * | 1997-11-26 | 2000-01-25 | International Business Machines Corporation | Method for generating and reconstructing in-place delta files |
US6038636A (en) * | 1998-04-27 | 2000-03-14 | Lexmark International, Inc. | Method and apparatus for reclaiming and defragmenting a flash memory device |
US6052531A (en) * | 1998-03-25 | 2000-04-18 | Symantec Corporation | Multi-tiered incremental software updating |
US6064814A (en) * | 1997-11-13 | 2000-05-16 | Allen-Bradley Company, Llc | Automatically updated cross reference system having increased flexibility |
US6073206A (en) * | 1998-04-30 | 2000-06-06 | Compaq Computer Corporation | Method for flashing ESCD and variables into a ROM |
US6073214A (en) * | 1995-11-27 | 2000-06-06 | Microsoft Corporation | Method and system for identifying and obtaining computer software from a remote computer |
US6080207A (en) * | 1998-06-04 | 2000-06-27 | Gateway 2000, Inc. | System and method of creating and delivering software |
US6088759A (en) * | 1997-04-06 | 2000-07-11 | Intel Corporation | Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
US6105063A (en) * | 1998-05-05 | 2000-08-15 | International Business Machines Corp. | Client-server system for maintaining application preferences in a hierarchical data structure according to user and user group or terminal and terminal group contexts |
US6112024A (en) * | 1996-10-02 | 2000-08-29 | Sybase, Inc. | Development system providing methods for managing different versions of objects with a meta model |
US6112197A (en) * | 1998-05-29 | 2000-08-29 | Oracle Corporation | Method and apparatus for transmission of row differences |
US6128695A (en) * | 1995-07-31 | 2000-10-03 | Lexar Media, Inc. | Identification and verification of a sector within a block of mass storage flash memory |
US6126327A (en) * | 1995-10-16 | 2000-10-03 | Packard Bell Nec | Radio flash update |
US6138249A (en) * | 1997-12-11 | 2000-10-24 | Emc Corporation | Method and apparatus for monitoring computer systems during manufacturing, testing and in the field |
US6198946B1 (en) * | 1997-11-20 | 2001-03-06 | Samsung Electronics Co., Ltd. | Firmware upgrade method for wireless communications device, and method for supporting firmware upgrade by base station |
US6199204B1 (en) * | 1998-01-28 | 2001-03-06 | International Business Machines Corporation | Distribution of software updates via a computer network |
US6209127B1 (en) * | 1997-06-05 | 2001-03-27 | Matsushita Electrical Industrial Co., Ltd | Terminal device capable of remote download, download method of loader program in terminal device, and storage medium storing loader program |
US6279153B1 (en) * | 1995-10-16 | 2001-08-21 | Nec Corporation | Multi-user flash ROM update |
US6301710B1 (en) * | 1999-01-06 | 2001-10-09 | Sony Corporation | System and method for creating a substitute registry when automatically installing an update program |
US20010029178A1 (en) * | 1996-08-07 | 2001-10-11 | Criss Mark A. | Wireless software upgrades with version control |
US6311322B1 (en) * | 1998-03-09 | 2001-10-30 | Nikon Corporation | Program rewriting apparatus |
US20010047363A1 (en) * | 2000-02-02 | 2001-11-29 | Luosheng Peng | Apparatus and methods for providing personalized application search results for wireless devices based on user profiles |
US6343379B1 (en) * | 1998-03-24 | 2002-01-29 | Sony Corporation | Receiver and program updating method |
US6381740B1 (en) * | 1997-09-16 | 2002-04-30 | Microsoft Corporation | Method and system for incrementally improving a program layout |
US20020072359A1 (en) * | 2000-12-08 | 2002-06-13 | Moles Bryan J. | System and method for performing diagnostics on a mobile station using over-the-air transfer of interpreted byte-code program |
US6408434B1 (en) * | 1999-01-07 | 2002-06-18 | Sony Corporation | System and method for using a substitute directory to automatically install an update program |
US20020078209A1 (en) * | 2000-12-15 | 2002-06-20 | Luosheng Peng | Apparatus and methods for intelligently providing applications and data on a mobile device system |
US6438585B2 (en) * | 1998-05-29 | 2002-08-20 | Research In Motion Limited | System and method for redirecting message attachments between a host system and a mobile data communication device |
US20020116261A1 (en) * | 2001-02-20 | 2002-08-22 | Moskowitz Paul A. | Systems and methods that facilitate an exchange of supplemental information in association with a dispensing of fuel |
US20020131404A1 (en) * | 2000-11-28 | 2002-09-19 | 4Thpass Inc. | Method and system for maintaining and distributing wireless applications |
US20020152005A1 (en) * | 2001-04-12 | 2002-10-17 | Portable Globe Inc. | Portable digital assistant |
US20020157090A1 (en) * | 2001-04-20 | 2002-10-24 | Anton, Jr. Francis M. | Automated updating of access points in a distributed network |
US20020156863A1 (en) * | 2001-04-23 | 2002-10-24 | Luosheng Peng | Apparatus and methods for managing caches on a gateway |
US6477703B1 (en) * | 1999-06-29 | 2002-11-05 | Hewlett-Packard Company | Software patch selection tool |
US20030023964A1 (en) * | 2001-07-26 | 2003-01-30 | Gowri Rajaram | System and method for compacting field upgradeable wireless communication device software code sections |
US20030027563A1 (en) * | 2001-08-06 | 2003-02-06 | Samsung Electronics Co., Ltd. | IOTA software download via auxiliary device |
US20030033599A1 (en) * | 2001-07-26 | 2003-02-13 | Gowri Rajaram | System and method for executing wireless communications device dynamic instruction sets |
US20030037075A1 (en) * | 1999-08-30 | 2003-02-20 | Hannigan Brett T. | Digital watermarking methods and related toy and game applications |
US6526574B1 (en) * | 1997-07-15 | 2003-02-25 | Pocket Soft, Inc. | System for finding differences between two computer files and updating the computer files |
US20030061384A1 (en) * | 2001-09-25 | 2003-03-27 | Bryce Nakatani | System and method of addressing and configuring a remote device |
US20030074658A1 (en) * | 2001-10-17 | 2003-04-17 | Samsung Electronics Co., Ltd. | Apparatus and method for upgrading program |
US20030084435A1 (en) * | 2001-10-31 | 2003-05-01 | Alan Messer | Method and system for offloading execution and resources for resource-constrained networked devices |
US20030121032A1 (en) * | 2001-12-21 | 2003-06-26 | Samsung Electronics Co., Ltd. | Method and system for remotely updating function of household device |
US6601234B1 (en) * | 1999-08-31 | 2003-07-29 | Accenture Llp | Attribute dictionary in a business logic services environment |
US20030162533A1 (en) * | 2000-04-04 | 2003-08-28 | Moles Bryan J. | System and method for provisioning or updating a mobile station using over-the-air transfer of interpreted byte-code program |
US6615404B1 (en) * | 1999-05-13 | 2003-09-02 | Tadiran Telecom Business Systems Ltd. | Method and apparatus for downloading software into an embedded-system |
US6615038B1 (en) * | 2000-04-28 | 2003-09-02 | Samsung Electronics Co., Ltd. | System and method for automatically creating and updating a mobile station configuration database in a wireless network |
US20030186689A1 (en) * | 2001-08-06 | 2003-10-02 | Samsung Electronics Co., Ltd | System and method for IOTA software download notification for wireless communication devices |
US20040031031A1 (en) * | 2002-08-08 | 2004-02-12 | Rudelic John C. | Executing applications from a semiconductor nonvolatile memory |
US20040034853A1 (en) * | 2002-03-22 | 2004-02-19 | Bill Gibbons | Mobile download system |
US20040054995A1 (en) * | 2002-09-14 | 2004-03-18 | Samsung Electronics Co., Ltd. | Method of updating firmware |
US6725056B1 (en) * | 2000-02-09 | 2004-04-20 | Samsung Electronics Co., Ltd. | System and method for secure over-the-air provisioning of a mobile station from a provisioning server via a traffic channel |
US6725392B1 (en) * | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
US6742025B2 (en) * | 1999-09-30 | 2004-05-25 | International Business Machines Corp. | System and method for server managed modification of operating system data stored within a network device |
US20040111723A1 (en) * | 2002-12-05 | 2004-06-10 | Samsung Electronics Co., Ltd. | Apparatus and method for remote DLL linking of software upgrades for a wireless mobile station |
US20040117785A1 (en) * | 2002-12-13 | 2004-06-17 | Samsung Electronics Co., Ltd. | Component download manager for a wireless mobile station and method of operation |
US20040133887A1 (en) * | 2002-12-05 | 2004-07-08 | Samsung Electronics Co., Ltd. | Apparatus and method for upgrading software of a wireless mobile station |
US20040152455A1 (en) * | 2003-02-05 | 2004-08-05 | Samsung Electronics Co., Ltd. | System and method for delta-based over-the-air software upgrades for a wireless mobile station |
US20050060699A1 (en) * | 2003-09-17 | 2005-03-17 | Samsung Electronics Co., Ltd. | Method and system for updating software |
US6873988B2 (en) * | 2001-07-06 | 2005-03-29 | Check Point Software Technologies, Inc. | System and methods providing anti-virus cooperative enforcement |
US20050097544A1 (en) * | 2003-10-31 | 2005-05-05 | Samsung Electronics Co., Ltd. | Mobile communication terminal having embedded system for software download and method for software download |
US20050144609A1 (en) * | 2003-12-12 | 2005-06-30 | Intel Corporation | Methods and apparatus to provide a robust code update |
US20050144612A1 (en) * | 2003-12-31 | 2005-06-30 | Shin-Ping Wang | Firmware updating method and application utilizing the same |
US20050160195A1 (en) * | 2001-09-14 | 2005-07-21 | Bruner Curtis H. | Digital device configuration and method |
US6922722B1 (en) * | 1999-09-30 | 2005-07-26 | Intel Corporation | Method and apparatus for dynamic network configuration of an alert-based client |
US6925467B2 (en) * | 2002-05-13 | 2005-08-02 | Innopath Software, Inc. | Byte-level file differencing and updating algorithms |
US6928108B2 (en) * | 1993-07-02 | 2005-08-09 | Multi-Tech Systems, Inc. | Modem with firmware upgrade feature |
US20050216902A1 (en) * | 2004-03-23 | 2005-09-29 | General Motors Corporation | Method and system for vehicle software configuration update management |
US20050216903A1 (en) * | 2004-03-23 | 2005-09-29 | General Motors Corporation | Method and system for vehicle software configuration management |
US7058978B2 (en) * | 2000-12-27 | 2006-06-06 | Microsoft Corporation | Security component for a computing device |
US7069452B1 (en) * | 2000-07-12 | 2006-06-27 | International Business Machines Corporation | Methods, systems and computer program products for secure firmware updates |
US7106843B1 (en) * | 1994-04-19 | 2006-09-12 | T-Netix, Inc. | Computer-based method and apparatus for controlling, monitoring, recording and reporting telephone access |
US7111201B2 (en) * | 2000-05-19 | 2006-09-19 | Self Repairing Computers, Inc. | Self repairing computer detecting need for repair and having switched protected storage |
US7117172B1 (en) * | 1999-03-11 | 2006-10-03 | Corecard Software, Inc. | Methods and systems for managing financial accounts |
US7137034B2 (en) * | 2000-05-19 | 2006-11-14 | Vir2Us, Inc. | Self repairing computer having user accessible switch for modifying bootable storage device configuration to initiate repair |
US7136857B2 (en) * | 2000-09-01 | 2006-11-14 | Op40, Inc. | Server system and method for distributing and scheduling modules to be executed on different tiers of a network |
US7181017B1 (en) * | 2001-03-23 | 2007-02-20 | David Felsher | System and method for secure three-party communications |
US7181731B2 (en) * | 2000-09-01 | 2007-02-20 | Op40, Inc. | Method, system, and structure for distributing and executing software and data on different network and computer devices, platforms, and environments |
US7209921B2 (en) * | 2000-09-01 | 2007-04-24 | Op40, Inc. | Method and system for deploying an asset over a multi-tiered network |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835933A (en) * | 1993-02-19 | 1998-11-10 | Intel Corporation | Method and apparatus for updating flash memory resident firmware through a standard disk drive interface |
TW313643B (en) | 1994-12-14 | 1997-08-21 | At & T Corp | |
US6049671A (en) * | 1996-04-18 | 2000-04-11 | Microsoft Corporation | Method for identifying and obtaining computer software from a network computer |
US6009274A (en) * | 1996-12-13 | 1999-12-28 | 3Com Corporation | Method and apparatus for automatically updating software components on end systems over a network |
US6163274A (en) * | 1997-09-04 | 2000-12-19 | Ncr Corporation | Remotely updatable PDA |
KR100448932B1 (en) * | 1997-09-23 | 2004-12-17 | 삼성전자주식회사 | Flash rom writer device and its control method, especially recovering data without separating flash rom from pcb |
EP0947922B1 (en) * | 1998-04-01 | 2006-09-27 | Matsushita Electric Industrial Co., Ltd. | Compiler |
IL125846A0 (en) | 1998-08-19 | 1999-04-11 | Emony | Incremental program update |
US6357021B1 (en) * | 1999-04-14 | 2002-03-12 | Mitsumi Electric Co., Ltd. | Method and apparatus for updating firmware |
US6453420B1 (en) * | 1999-04-21 | 2002-09-17 | Research Investment Network, Inc. | System, method and article of manufacture for authorizing the use of electronic content utilizing a laser-centric medium |
US6405364B1 (en) * | 1999-08-31 | 2002-06-11 | Accenture Llp | Building techniques in a development architecture framework |
KR20010100328A (en) | 2000-04-22 | 2001-11-14 | 강원희 | Upgrade method of mobile phone software using communication network |
US6883168B1 (en) * | 2000-06-21 | 2005-04-19 | Microsoft Corporation | Methods, systems, architectures and data structures for delivering software via a network |
AU2001294677A1 (en) * | 2000-09-22 | 2002-04-02 | Patchlink.Com Corporation | Non-invasive automatic offsite patch fingerprinting and updating system and method |
KR20020034228A (en) | 2000-10-31 | 2002-05-09 | 구자홍 | Method for upgrading S/W using OTA service provision in mobile terminal and system for the same |
US20030182414A1 (en) | 2003-05-13 | 2003-09-25 | O'neill Patrick J. | System and method for updating and distributing information |
US6832373B2 (en) | 2000-11-17 | 2004-12-14 | Bitfone Corporation | System and method for updating and distributing information |
WO2002084484A2 (en) | 2001-04-18 | 2002-10-24 | Domosys Corporation | Method of remotely upgrading firmware in field-deployed devices |
US6668336B2 (en) * | 2001-11-08 | 2003-12-23 | M-Systems Flash Disk Pioneers Ltd. | Ruggedized block device driver |
US6836657B2 (en) | 2002-11-12 | 2004-12-28 | Innopath Software, Inc. | Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade |
US8572597B2 (en) | 2003-06-20 | 2013-10-29 | Samsung Electronics Co., Ltd. | Apparatus and method for performing an over-the-air software update in a dual processor mobile station |
US7810088B2 (en) | 2003-06-20 | 2010-10-05 | Samsung Electronics Co., Ltd. | Apparatus and method for performing a fail-safe over-the-air software update in a mobile station |
-
2001
- 2001-11-19 US US10/311,462 patent/US20030182414A1/en not_active Abandoned
-
2006
- 2006-01-19 US US11/335,312 patent/US7805719B2/en active Active
Patent Citations (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US15952A (en) * | 1856-10-21 | Cooking-stove | ||
US5084816A (en) * | 1987-11-25 | 1992-01-28 | Bell Communications Research, Inc. | Real time fault tolerant transaction processing system |
US5442771A (en) * | 1988-07-15 | 1995-08-15 | Prodigy Services Company | Method for storing data in an interactive computer network |
US5608910A (en) * | 1990-03-23 | 1997-03-04 | Canon Kabushiki Kaisha | Method for updating a control program for an information processing apparatus, and an information processing apparatus for updating a control program of an associated rewritable memory or a memory disk |
US5479637A (en) * | 1990-08-31 | 1995-12-26 | Gemplus Card International | Method and device for updating information elements in a memory |
US5579522A (en) * | 1991-05-06 | 1996-11-26 | Intel Corporation | Dynamic non-volatile memory update in a computer system |
US5598531A (en) * | 1991-05-13 | 1997-01-28 | William Stanley Hill | Method and apparatus for preventing "disease" damage in computer systems |
US5878256A (en) * | 1991-10-16 | 1999-03-02 | International Business Machine Corp. | Method and apparatus for providing updated firmware in a data processing system |
US5596738A (en) * | 1992-01-31 | 1997-01-21 | Teac Corporation | Peripheral device control system using changeable firmware in a single flash memory |
US5261055A (en) * | 1992-02-19 | 1993-11-09 | Milsys, Ltd. | Externally updatable ROM (EUROM) |
US5421006A (en) * | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
US5623604A (en) * | 1992-11-18 | 1997-04-22 | Canon Information Systems, Inc. | Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral |
US5752039A (en) * | 1993-03-22 | 1998-05-12 | Ntt Data Communications Systems Corp. | Executable file difference extraction/update system and executable file difference extraction method |
US6928108B2 (en) * | 1993-07-02 | 2005-08-09 | Multi-Tech Systems, Inc. | Modem with firmware upgrade feature |
US7106843B1 (en) * | 1994-04-19 | 2006-09-12 | T-Netix, Inc. | Computer-based method and apparatus for controlling, monitoring, recording and reporting telephone access |
US5666293A (en) * | 1994-05-27 | 1997-09-09 | Bell Atlantic Network Services, Inc. | Downloading operating system software through a broadcast channel |
US5598534A (en) * | 1994-09-21 | 1997-01-28 | Lucent Technologies Inc. | Simultaneous verify local database and using wireless communication to verify remote database |
US5778440A (en) * | 1994-10-26 | 1998-07-07 | Macronix International Co., Ltd. | Floating gate memory device and method for terminating a program load cycle upon detecting a predetermined address/data pattern |
US6128695A (en) * | 1995-07-31 | 2000-10-03 | Lexar Media, Inc. | Identification and verification of a sector within a block of mass storage flash memory |
US6279153B1 (en) * | 1995-10-16 | 2001-08-21 | Nec Corporation | Multi-user flash ROM update |
US6126327A (en) * | 1995-10-16 | 2000-10-03 | Packard Bell Nec | Radio flash update |
US6073214A (en) * | 1995-11-27 | 2000-06-06 | Microsoft Corporation | Method and system for identifying and obtaining computer software from a remote computer |
US5960445A (en) * | 1996-04-24 | 1999-09-28 | Sony Corporation | Information processor, method of updating a program and information processing system |
US5790974A (en) * | 1996-04-29 | 1998-08-04 | Sun Microsystems, Inc. | Portable calendaring device having perceptual agent managing calendar entries |
US5752042A (en) * | 1996-06-07 | 1998-05-12 | International Business Machines Corporation | Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer |
US20010029178A1 (en) * | 1996-08-07 | 2001-10-11 | Criss Mark A. | Wireless software upgrades with version control |
US6112024A (en) * | 1996-10-02 | 2000-08-29 | Sybase, Inc. | Development system providing methods for managing different versions of objects with a meta model |
US6088759A (en) * | 1997-04-06 | 2000-07-11 | Intel Corporation | Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
US5968182A (en) * | 1997-05-12 | 1999-10-19 | International Business Machines Corporation | Method and means for utilizing device long busy response for resolving detected anomalies at the lowest level in a hierarchical, demand/response storage management subsystem |
US6209127B1 (en) * | 1997-06-05 | 2001-03-27 | Matsushita Electrical Industrial Co., Ltd | Terminal device capable of remote download, download method of loader program in terminal device, and storage medium storing loader program |
US6526574B1 (en) * | 1997-07-15 | 2003-02-25 | Pocket Soft, Inc. | System for finding differences between two computer files and updating the computer files |
US6381740B1 (en) * | 1997-09-16 | 2002-04-30 | Microsoft Corporation | Method and system for incrementally improving a program layout |
US6064814A (en) * | 1997-11-13 | 2000-05-16 | Allen-Bradley Company, Llc | Automatically updated cross reference system having increased flexibility |
US6198946B1 (en) * | 1997-11-20 | 2001-03-06 | Samsung Electronics Co., Ltd. | Firmware upgrade method for wireless communications device, and method for supporting firmware upgrade by base station |
US6018747A (en) * | 1997-11-26 | 2000-01-25 | International Business Machines Corporation | Method for generating and reconstructing in-place delta files |
US6138249A (en) * | 1997-12-11 | 2000-10-24 | Emc Corporation | Method and apparatus for monitoring computer systems during manufacturing, testing and in the field |
US6199204B1 (en) * | 1998-01-28 | 2001-03-06 | International Business Machines Corporation | Distribution of software updates via a computer network |
US6311322B1 (en) * | 1998-03-09 | 2001-10-30 | Nikon Corporation | Program rewriting apparatus |
US6343379B1 (en) * | 1998-03-24 | 2002-01-29 | Sony Corporation | Receiver and program updating method |
US6052531A (en) * | 1998-03-25 | 2000-04-18 | Symantec Corporation | Multi-tiered incremental software updating |
US6038636A (en) * | 1998-04-27 | 2000-03-14 | Lexmark International, Inc. | Method and apparatus for reclaiming and defragmenting a flash memory device |
US6073206A (en) * | 1998-04-30 | 2000-06-06 | Compaq Computer Corporation | Method for flashing ESCD and variables into a ROM |
US6105063A (en) * | 1998-05-05 | 2000-08-15 | International Business Machines Corp. | Client-server system for maintaining application preferences in a hierarchical data structure according to user and user group or terminal and terminal group contexts |
US6438585B2 (en) * | 1998-05-29 | 2002-08-20 | Research In Motion Limited | System and method for redirecting message attachments between a host system and a mobile data communication device |
US6112197A (en) * | 1998-05-29 | 2000-08-29 | Oracle Corporation | Method and apparatus for transmission of row differences |
US6080207A (en) * | 1998-06-04 | 2000-06-27 | Gateway 2000, Inc. | System and method of creating and delivering software |
US6301710B1 (en) * | 1999-01-06 | 2001-10-09 | Sony Corporation | System and method for creating a substitute registry when automatically installing an update program |
US6408434B1 (en) * | 1999-01-07 | 2002-06-18 | Sony Corporation | System and method for using a substitute directory to automatically install an update program |
US6725392B1 (en) * | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
US7117172B1 (en) * | 1999-03-11 | 2006-10-03 | Corecard Software, Inc. | Methods and systems for managing financial accounts |
US6615404B1 (en) * | 1999-05-13 | 2003-09-02 | Tadiran Telecom Business Systems Ltd. | Method and apparatus for downloading software into an embedded-system |
US6477703B1 (en) * | 1999-06-29 | 2002-11-05 | Hewlett-Packard Company | Software patch selection tool |
US20030037075A1 (en) * | 1999-08-30 | 2003-02-20 | Hannigan Brett T. | Digital watermarking methods and related toy and game applications |
US6601234B1 (en) * | 1999-08-31 | 2003-07-29 | Accenture Llp | Attribute dictionary in a business logic services environment |
US6742025B2 (en) * | 1999-09-30 | 2004-05-25 | International Business Machines Corp. | System and method for server managed modification of operating system data stored within a network device |
US6922722B1 (en) * | 1999-09-30 | 2005-07-26 | Intel Corporation | Method and apparatus for dynamic network configuration of an alert-based client |
US20010047363A1 (en) * | 2000-02-02 | 2001-11-29 | Luosheng Peng | Apparatus and methods for providing personalized application search results for wireless devices based on user profiles |
US6725056B1 (en) * | 2000-02-09 | 2004-04-20 | Samsung Electronics Co., Ltd. | System and method for secure over-the-air provisioning of a mobile station from a provisioning server via a traffic channel |
US20030162533A1 (en) * | 2000-04-04 | 2003-08-28 | Moles Bryan J. | System and method for provisioning or updating a mobile station using over-the-air transfer of interpreted byte-code program |
US6615038B1 (en) * | 2000-04-28 | 2003-09-02 | Samsung Electronics Co., Ltd. | System and method for automatically creating and updating a mobile station configuration database in a wireless network |
US7137034B2 (en) * | 2000-05-19 | 2006-11-14 | Vir2Us, Inc. | Self repairing computer having user accessible switch for modifying bootable storage device configuration to initiate repair |
US7111201B2 (en) * | 2000-05-19 | 2006-09-19 | Self Repairing Computers, Inc. | Self repairing computer detecting need for repair and having switched protected storage |
US7069452B1 (en) * | 2000-07-12 | 2006-06-27 | International Business Machines Corporation | Methods, systems and computer program products for secure firmware updates |
US7136857B2 (en) * | 2000-09-01 | 2006-11-14 | Op40, Inc. | Server system and method for distributing and scheduling modules to be executed on different tiers of a network |
US7209921B2 (en) * | 2000-09-01 | 2007-04-24 | Op40, Inc. | Method and system for deploying an asset over a multi-tiered network |
US7181731B2 (en) * | 2000-09-01 | 2007-02-20 | Op40, Inc. | Method, system, and structure for distributing and executing software and data on different network and computer devices, platforms, and environments |
US20020131404A1 (en) * | 2000-11-28 | 2002-09-19 | 4Thpass Inc. | Method and system for maintaining and distributing wireless applications |
US20020072359A1 (en) * | 2000-12-08 | 2002-06-13 | Moles Bryan J. | System and method for performing diagnostics on a mobile station using over-the-air transfer of interpreted byte-code program |
US20020078209A1 (en) * | 2000-12-15 | 2002-06-20 | Luosheng Peng | Apparatus and methods for intelligently providing applications and data on a mobile device system |
US7058978B2 (en) * | 2000-12-27 | 2006-06-06 | Microsoft Corporation | Security component for a computing device |
US20020116261A1 (en) * | 2001-02-20 | 2002-08-22 | Moskowitz Paul A. | Systems and methods that facilitate an exchange of supplemental information in association with a dispensing of fuel |
US7181017B1 (en) * | 2001-03-23 | 2007-02-20 | David Felsher | System and method for secure three-party communications |
US20020152005A1 (en) * | 2001-04-12 | 2002-10-17 | Portable Globe Inc. | Portable digital assistant |
US20020157090A1 (en) * | 2001-04-20 | 2002-10-24 | Anton, Jr. Francis M. | Automated updating of access points in a distributed network |
US20020156863A1 (en) * | 2001-04-23 | 2002-10-24 | Luosheng Peng | Apparatus and methods for managing caches on a gateway |
US6873988B2 (en) * | 2001-07-06 | 2005-03-29 | Check Point Software Technologies, Inc. | System and methods providing anti-virus cooperative enforcement |
US20030033599A1 (en) * | 2001-07-26 | 2003-02-13 | Gowri Rajaram | System and method for executing wireless communications device dynamic instruction sets |
US20030023964A1 (en) * | 2001-07-26 | 2003-01-30 | Gowri Rajaram | System and method for compacting field upgradeable wireless communication device software code sections |
US20030027563A1 (en) * | 2001-08-06 | 2003-02-06 | Samsung Electronics Co., Ltd. | IOTA software download via auxiliary device |
US20030186689A1 (en) * | 2001-08-06 | 2003-10-02 | Samsung Electronics Co., Ltd | System and method for IOTA software download notification for wireless communication devices |
US20050160195A1 (en) * | 2001-09-14 | 2005-07-21 | Bruner Curtis H. | Digital device configuration and method |
US20030061384A1 (en) * | 2001-09-25 | 2003-03-27 | Bryce Nakatani | System and method of addressing and configuring a remote device |
US20030074658A1 (en) * | 2001-10-17 | 2003-04-17 | Samsung Electronics Co., Ltd. | Apparatus and method for upgrading program |
US20030084435A1 (en) * | 2001-10-31 | 2003-05-01 | Alan Messer | Method and system for offloading execution and resources for resource-constrained networked devices |
US20030121032A1 (en) * | 2001-12-21 | 2003-06-26 | Samsung Electronics Co., Ltd. | Method and system for remotely updating function of household device |
US20040034853A1 (en) * | 2002-03-22 | 2004-02-19 | Bill Gibbons | Mobile download system |
US6925467B2 (en) * | 2002-05-13 | 2005-08-02 | Innopath Software, Inc. | Byte-level file differencing and updating algorithms |
US20040031031A1 (en) * | 2002-08-08 | 2004-02-12 | Rudelic John C. | Executing applications from a semiconductor nonvolatile memory |
US20040054995A1 (en) * | 2002-09-14 | 2004-03-18 | Samsung Electronics Co., Ltd. | Method of updating firmware |
US20040133887A1 (en) * | 2002-12-05 | 2004-07-08 | Samsung Electronics Co., Ltd. | Apparatus and method for upgrading software of a wireless mobile station |
US20040111723A1 (en) * | 2002-12-05 | 2004-06-10 | Samsung Electronics Co., Ltd. | Apparatus and method for remote DLL linking of software upgrades for a wireless mobile station |
US20040117785A1 (en) * | 2002-12-13 | 2004-06-17 | Samsung Electronics Co., Ltd. | Component download manager for a wireless mobile station and method of operation |
US20040152455A1 (en) * | 2003-02-05 | 2004-08-05 | Samsung Electronics Co., Ltd. | System and method for delta-based over-the-air software upgrades for a wireless mobile station |
US20050060699A1 (en) * | 2003-09-17 | 2005-03-17 | Samsung Electronics Co., Ltd. | Method and system for updating software |
US20050097544A1 (en) * | 2003-10-31 | 2005-05-05 | Samsung Electronics Co., Ltd. | Mobile communication terminal having embedded system for software download and method for software download |
US20050144609A1 (en) * | 2003-12-12 | 2005-06-30 | Intel Corporation | Methods and apparatus to provide a robust code update |
US20050144612A1 (en) * | 2003-12-31 | 2005-06-30 | Shin-Ping Wang | Firmware updating method and application utilizing the same |
US20050216903A1 (en) * | 2004-03-23 | 2005-09-29 | General Motors Corporation | Method and system for vehicle software configuration management |
US20050216902A1 (en) * | 2004-03-23 | 2005-09-29 | General Motors Corporation | Method and system for vehicle software configuration update management |
Cited By (341)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060039564A1 (en) * | 2000-11-17 | 2006-02-23 | Bindu Rama Rao | Security for device management and firmware updates in an operator network |
US8196130B2 (en) * | 2000-11-17 | 2012-06-05 | Hewlett-Packard Development Company, L.P. | Tri-phase boot process in electronic devices |
US20050114852A1 (en) * | 2000-11-17 | 2005-05-26 | Shao-Chun Chen | Tri-phase boot process in electronic devices |
US8468515B2 (en) | 2000-11-17 | 2013-06-18 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
US7805719B2 (en) | 2000-11-17 | 2010-09-28 | Hewlett-Packard Development Company, L.P. | System and method for updating and distributing information |
US8479189B2 (en) | 2000-11-17 | 2013-07-02 | Hewlett-Packard Development Company, L.P. | Pattern detection preprocessor in an electronic device update generation system |
US20020191637A1 (en) * | 2001-05-14 | 2002-12-19 | Lg Electronics Inc. | Home appliance protocol upgrading system and method |
US7320142B1 (en) * | 2001-11-09 | 2008-01-15 | Cisco Technology, Inc. | Method and system for configurable network intrusion detection |
US20030110484A1 (en) * | 2001-12-10 | 2003-06-12 | David Famolari | Method and apparatus utilizing bluetooth transmission protocols to update software resident on a network of computing devices |
US20030135664A1 (en) * | 2001-12-27 | 2003-07-17 | Hiroaki Hayashi | Device initialization method in a control system, a control system, a program for running the device initialization method on a computer, and a recording medium storing this program |
US20080289063A1 (en) * | 2002-01-23 | 2008-11-20 | Monsanto Technology Llc | Plastid Transformation of Maize |
US20150382183A1 (en) * | 2002-01-31 | 2015-12-31 | Qualcomm Incorporated | System and method for updating dataset versions resident on a wireless device |
US10602348B2 (en) * | 2002-01-31 | 2020-03-24 | Qualcomm Incorporated | System and method for updating dataset versions resident on a wireless device |
US7392518B1 (en) * | 2002-02-21 | 2008-06-24 | 3Com Corporation | Robust remote flash ROM upgrade system and method |
US7409435B1 (en) * | 2002-02-28 | 2008-08-05 | Sprint Communications Company L.P. | Integrated services hub binary file trial run process |
US20050160312A1 (en) * | 2002-03-20 | 2005-07-21 | Wouter Seng | Fault-tolerant computers |
US9678761B2 (en) | 2002-04-01 | 2017-06-13 | International Business Machines Corporation | Technology for selectively updating memory-resident images |
US20070006211A1 (en) * | 2002-04-01 | 2007-01-04 | Sreekrishnan Venkiteswaran | Communicating with an update logic image |
US20030229752A1 (en) * | 2002-04-01 | 2003-12-11 | Sreekrishnan Venkiteswaran | Updating flash memory |
US7089549B2 (en) * | 2002-04-01 | 2006-08-08 | International Business Machines Corp. | Updating flash memory |
US8495608B2 (en) | 2002-04-01 | 2013-07-23 | International Business Machines Corporation | Communicating with an update logic image |
US9170936B2 (en) | 2002-04-01 | 2015-10-27 | International Business Machines Corporation | Communicating to update a memory |
US7216227B2 (en) * | 2002-04-23 | 2007-05-08 | Amiram Grynberg | Method and system for controlling the use of addresses using address computation techniques |
US20030200334A1 (en) * | 2002-04-23 | 2003-10-23 | Amiram Grynberg | Method and system for controlling the use of addresses using address computation techniques |
US11049083B2 (en) * | 2002-09-16 | 2021-06-29 | Touchtunes Music Corporation | Digital downloading jukebox system with central and local music servers and payment-triggered game devices update capability |
US20080195443A1 (en) * | 2002-09-16 | 2008-08-14 | Guy Nathan | Digital downloading jukebox system with central and local music servers |
US10373142B2 (en) | 2002-09-16 | 2019-08-06 | Touchtunes Music Corporation | Digital downloading jukebox system with central and local music servers |
US11468418B2 (en) | 2002-09-16 | 2022-10-11 | Touchtunes Music Corporation | Digital downloading jukebox system with central and local music servers |
US10089613B2 (en) | 2002-09-16 | 2018-10-02 | Touchtunes Music Corporation | Digital downloading jukebox system with central and local music servers |
US11663569B2 (en) | 2002-09-16 | 2023-05-30 | Touchtunes Music Company, Llc | Digital downloading jukebox system with central and local music server |
US20070192532A1 (en) * | 2002-09-30 | 2007-08-16 | Insignia Solutions Plc | Efficient system and method for updating a memory device |
US8200886B2 (en) * | 2002-09-30 | 2012-06-12 | Smith Micro Software, Inc. | Efficient system and method for updating a memory device |
US20040073902A1 (en) * | 2002-10-11 | 2004-04-15 | Ambit Microsystems Corporation | Firmware upgrade method for network device through digital subscriber line |
US20040083471A1 (en) * | 2002-10-21 | 2004-04-29 | Lg Electronics Inc. | Method of upgrading system software of a home appliance |
US20060041731A1 (en) * | 2002-11-07 | 2006-02-23 | Robert Jochemsen | Method and device for persistent-memory mangement |
US7055008B2 (en) * | 2003-01-22 | 2006-05-30 | Falconstor Software, Inc. | System and method for backing up data |
US7954157B2 (en) | 2003-01-22 | 2011-05-31 | Falconstor, Inc. | System and method for backing up data |
US20060218644A1 (en) * | 2003-01-22 | 2006-09-28 | Niles Ronald S | System and method for backing up data |
US20060218638A1 (en) * | 2003-01-22 | 2006-09-28 | Niles Ronald S | System and method for backing up data |
US20110231367A1 (en) * | 2003-01-22 | 2011-09-22 | Niles Ronald S | System and method for backing up data |
US8370594B2 (en) * | 2003-01-22 | 2013-02-05 | Falconstor, Inc. | System and method for backing up data |
US9032171B2 (en) * | 2003-01-22 | 2015-05-12 | Falconstor, Inc. | System and method for backing up data |
US20150242428A1 (en) * | 2003-01-22 | 2015-08-27 | Falconstor, Inc. | System and method for backing up data |
US20130151472A1 (en) * | 2003-01-22 | 2013-06-13 | Falconstor, Inc. | System and Method for Backing Up Data |
US9690794B2 (en) * | 2003-01-22 | 2017-06-27 | Falconstor, Inc. | System and method for backing up data |
US20040143713A1 (en) * | 2003-01-22 | 2004-07-22 | Niles Ronald S. | System and method for backing up data |
US7765160B2 (en) | 2003-01-22 | 2010-07-27 | Falconstor, Inc. | System and method for backing up data |
US20040250245A1 (en) * | 2003-06-04 | 2004-12-09 | Rao Bindu Rama | Network having customizable generators and electronic device having customizable updating software |
US7644404B2 (en) * | 2003-06-04 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Network having customizable generators and electronic device having customizable updating software |
US20040261072A1 (en) * | 2003-06-20 | 2004-12-23 | Samsung Electronics Co., Ltd. | Apparatus and method for performing an over-the-air software update in a dual processor mobile station |
US8572597B2 (en) * | 2003-06-20 | 2013-10-29 | Samsung Electronics Co., Ltd. | Apparatus and method for performing an over-the-air software update in a dual processor mobile station |
US7143251B1 (en) * | 2003-06-30 | 2006-11-28 | Data Domain, Inc. | Data storage using identifiers |
US7315978B2 (en) * | 2003-07-30 | 2008-01-01 | Ameriprise Financial, Inc. | System and method for remote collection of data |
US20050138216A1 (en) * | 2003-07-30 | 2005-06-23 | American Express Travel Related Services Company, Inc. | System and method for remote collection of data |
US20050066320A1 (en) * | 2003-08-01 | 2005-03-24 | Kw-Software Gmbh | Online modification of CIL code programs for industrial automation |
US8108852B2 (en) * | 2003-08-01 | 2012-01-31 | Kw-Software Gmbh | Online modification of CIL code programs for industrial automation |
US7657633B2 (en) * | 2003-08-04 | 2010-02-02 | At&T Intellectual Property I, L.P. | System and method to identify customer premise equipment devices |
US8429252B2 (en) * | 2003-08-04 | 2013-04-23 | At&T Intellectual Property I, L.P. | System and method to identify devices employing point-to-point-over ethernet encapsulation |
US20110035633A1 (en) * | 2003-08-04 | 2011-02-10 | At&T Intellectual Property I, L.P. | System and method to identify devices employing point-to-point-over ethernet encapsulation |
US20060271666A1 (en) * | 2003-08-04 | 2006-11-30 | Sbc Knowledge Ventures, L.P. | System and method to identify customer premise equipment devices |
US20100091961A1 (en) * | 2003-08-04 | 2010-04-15 | At&T Intellectual Property I,L.P. | System and Method to Identify Customer Premises Equipment Devices |
US10735254B2 (en) | 2003-08-04 | 2020-08-04 | At&T Intellectual Property I, L.P. | System and method to identify devices employing point-to-point-over ethernet encapsulation |
US8127022B2 (en) * | 2003-08-04 | 2012-02-28 | At&T Intellectual Property I, L.P. | System and method to identify customer premises equipment devices |
US8555273B1 (en) | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
US20080235407A1 (en) * | 2003-09-25 | 2008-09-25 | International Business Machines Corporation | System for automatically determining i/o connector configuration |
US7516249B2 (en) * | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Method for automatically determining I/O connector configuration |
US20050071523A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | Method and system for automatically determining I/O connector configuration |
US9086894B2 (en) | 2003-09-25 | 2015-07-21 | Toshiba Global Commerce Solutions Holdings Corporation | System for automatically determining I/O connector configuration |
US8281019B1 (en) * | 2003-10-10 | 2012-10-02 | Symantec Corporation | Method and system for scanning network devices |
US20050080811A1 (en) * | 2003-10-10 | 2005-04-14 | Cendura Corporation | Configuration management architecture |
US20050097199A1 (en) * | 2003-10-10 | 2005-05-05 | Keith Woodard | Method and system for scanning network devices |
US20050102669A1 (en) * | 2003-10-15 | 2005-05-12 | Siemens Medical Solutions Usa, Inc. | Software installation file verification media and methods for medical equipment |
US20050096025A1 (en) * | 2003-10-30 | 2005-05-05 | Iyad Qumei | Open update framework for mobile handsets capable of processing firmware and software update packages based on mime-types |
US20050144609A1 (en) * | 2003-12-12 | 2005-06-30 | Intel Corporation | Methods and apparatus to provide a robust code update |
US20050160418A1 (en) * | 2004-01-19 | 2005-07-21 | Samsung Electronics Co., Ltd | Embedded system using binary position information and software downloading method therein |
US8838754B1 (en) * | 2004-01-26 | 2014-09-16 | Qualcomm Incorporated | Mobile device with a management forest in a device management network |
US20110173598A1 (en) * | 2004-04-21 | 2011-07-14 | Chris Cassapakis | Updating an electronic device with update agent code |
US8578361B2 (en) * | 2004-04-21 | 2013-11-05 | Palm, Inc. | Updating an electronic device with update agent code |
US7971199B1 (en) * | 2004-05-03 | 2011-06-28 | Hewlett-Packard Development Company, L.P. | Mobile device with a self-updating update agent in a wireless network |
US7543118B1 (en) * | 2004-05-07 | 2009-06-02 | Hewlett-Packard Development Company, L.P. | Multiple variance platform for the management of mobile devices |
US7657886B1 (en) * | 2004-06-03 | 2010-02-02 | Hewlett-Packard Development Company, L.P. | Mobile device with a MMU for faster firmware updates in a wireless network |
US7926050B2 (en) * | 2004-06-17 | 2011-04-12 | Nagravision S.A. | Secure method to update software in a security module |
US20050283777A1 (en) * | 2004-06-17 | 2005-12-22 | Karl Osen | Secure method to update software in a security module |
US20060005195A1 (en) * | 2004-07-05 | 2006-01-05 | Canon Kabushiki Kaisha | Information processor and information processing method |
US8135998B2 (en) * | 2004-07-05 | 2012-03-13 | Canon Kabushiki Kaisha | Information processor and information processing method |
US8479058B2 (en) | 2004-07-05 | 2013-07-02 | Canon Kabushiki Kaisha | Information processor and information processing method |
US20080059958A1 (en) * | 2004-08-05 | 2008-03-06 | Wladyslaw Bolanowski | Update of Software in a Portable Radio Communication Equipment |
US8365158B2 (en) * | 2004-08-05 | 2013-01-29 | Sony Ericsson Mobile Communications Ab | Update of software in a portable radio communication equipment |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
US7844964B2 (en) * | 2004-09-23 | 2010-11-30 | Hewlett Packard Development Company, L.P. | Network for mass distribution of configuration, firmware and software updates |
US20060010437A1 (en) * | 2004-09-23 | 2006-01-12 | Sunil Marolia | Network for mass distribution of configuration, firmware and software updates |
US20080222629A1 (en) * | 2004-09-28 | 2008-09-11 | Capricode Oy | Method and Device Arrangement for Managing the Use Profile of a Terminal Device |
US9477459B2 (en) | 2004-09-28 | 2016-10-25 | Capricode Oy | Method and device arrangement for managing the use profile of a terminal device |
WO2006051159A1 (en) * | 2004-09-28 | 2006-05-18 | Capricode Oy | Method and device arrangement for managing the use profile of a terminal device |
US8365162B2 (en) * | 2004-09-28 | 2013-01-29 | Capricode Oy | Method and device arrangement for managing the use profile of a terminal device |
US20060075000A1 (en) * | 2004-10-06 | 2006-04-06 | International Business Machines Corporation | Transient Range Versioning Based on Redirection |
US8117170B2 (en) | 2004-10-06 | 2012-02-14 | International Business Machines Corporation | Transient range versioning based on redirection |
US20060174300A1 (en) * | 2004-11-08 | 2006-08-03 | Jinsheng Gu | Updating compressed read-only memory file system (CRAMFS) images |
WO2006052897A2 (en) * | 2004-11-08 | 2006-05-18 | Innopath Software, Inc. | Reorganizing images in static file system differencing and updating |
US7865479B2 (en) | 2004-11-08 | 2011-01-04 | Innopath Software, Inc. | Updating compressed read-only memory file system (CRAMFS) images |
WO2006052897A3 (en) * | 2004-11-08 | 2008-10-02 | Innopath Software Inc | Reorganizing images in static file system differencing and updating |
US20060112113A1 (en) * | 2004-11-08 | 2006-05-25 | Jinsheng Gu | Static file system differencing and updating |
US7711706B2 (en) * | 2004-11-08 | 2010-05-04 | Innopath Software, Inc. | Reorganizing images in static file system differencing and updating |
US20060123032A1 (en) * | 2004-11-08 | 2006-06-08 | Premjith Manapetty | Reorganizing images in static file system differencing and updating |
US8219807B1 (en) | 2004-12-17 | 2012-07-10 | Novell, Inc. | Fine grained access control for linux services |
US20060136520A1 (en) * | 2004-12-17 | 2006-06-22 | Nokia Corporation | Apparatus, method and computer program to provide metadata-based data transfer from one mobile terminal to another mobile terminal |
US8271785B1 (en) | 2004-12-20 | 2012-09-18 | Novell, Inc. | Synthesized root privileges |
US20060143362A1 (en) * | 2004-12-29 | 2006-06-29 | Cong Li | Apparatus and method for incremental package deployment |
US7613875B2 (en) * | 2004-12-29 | 2009-11-03 | Intel Corporation | Apparatus and method for incremental package deployment |
US20090254723A1 (en) * | 2004-12-29 | 2009-10-08 | Cong Li | Apparatus and method for incremental package deployment |
US8225037B2 (en) | 2004-12-29 | 2012-07-17 | Intel Corporation | Apparatus and method for incremental package deployment |
US7991950B2 (en) | 2004-12-29 | 2011-08-02 | Intel Corporation | Apparatus and method for incremental package deployment |
US7801883B2 (en) * | 2005-01-19 | 2010-09-21 | Samsung Electronics Co., Ltd. | Method and apparatus for improving data processing speed through storage of record information of identity module |
US20060161594A1 (en) * | 2005-01-19 | 2006-07-20 | Samsung Electronics Co., Ltd. | Method and apparatus for improving data processing speed through storage of record information of identity module |
US8214398B1 (en) | 2005-02-16 | 2012-07-03 | Emc Corporation | Role based access controls |
US7716661B2 (en) * | 2005-03-16 | 2010-05-11 | Microsoft Corporation | Embedded device update service |
US20060230395A1 (en) * | 2005-03-16 | 2006-10-12 | Microsoft Corporation | Embedded device update service |
US20060265706A1 (en) * | 2005-05-19 | 2006-11-23 | Isaacson Scott A | System for creating a customized software installation on demand |
US20060277542A1 (en) * | 2005-05-19 | 2006-12-07 | Novell, Inc. | System and method for creating a customized installation on demand |
US8468518B2 (en) | 2005-05-19 | 2013-06-18 | Oracle International Corporation | System and method for creating a customized installation on demand |
US8074214B2 (en) * | 2005-05-19 | 2011-12-06 | Oracle International Corporation | System for creating a customized software installation on demand |
US8352935B2 (en) | 2005-05-19 | 2013-01-08 | Novell, Inc. | System for creating a customized software distribution based on user requirements |
US20060265696A1 (en) * | 2005-05-23 | 2006-11-23 | International Business Machines Corporation | Method and system for data migration between versions of software |
US7861239B2 (en) * | 2005-05-23 | 2010-12-28 | International Business Machines Corporation | Data migration between versions of software |
US20070074200A1 (en) * | 2005-05-29 | 2007-03-29 | Hon Hai Precision Industry Co., Ltd. | Function selection system and method |
US20060282653A1 (en) * | 2005-06-08 | 2006-12-14 | Ping-Ying Chu | Method for updating frimware of memory card |
US20070073786A1 (en) * | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | System and method for propagating security information in a web portal system |
US7752651B2 (en) | 2005-09-26 | 2010-07-06 | Bea Systems Inc. | System and method for propagating security information in a web portal system |
US7730477B2 (en) * | 2005-09-26 | 2010-06-01 | Bea Systems Inc. | System and method for propagation in a web portal system |
US20070073785A1 (en) * | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | System and method for propagation in a web portal system |
US20100125646A1 (en) * | 2005-09-27 | 2010-05-20 | Ceedo Technologies (2005) Ltd | System For Enabling Host-Independent Software Portability Of A Self-Contained Device |
US20100159989A1 (en) * | 2005-09-30 | 2010-06-24 | Mediatek Inc. | Cellular phone and portable storage device using the same |
US20070079019A1 (en) * | 2005-09-30 | 2007-04-05 | Shih-Chang Hu | Cellular phone and portable storage device using the same |
US7730236B2 (en) * | 2005-09-30 | 2010-06-01 | Mediatek Inc. | Cellular phone and portable storage device using the same |
US7873758B2 (en) | 2005-09-30 | 2011-01-18 | Mediatek Inc. | Cellular phone and portable storage device using the same |
WO2007047008A3 (en) * | 2005-10-20 | 2007-07-12 | Harris Corp | Mobile wireless communications device providing enhanced file management and related methods |
WO2007047008A2 (en) * | 2005-10-20 | 2007-04-26 | Harris Corporation | Mobile wireless communications device providing enhanced file management and related methods |
US7630734B2 (en) | 2005-10-20 | 2009-12-08 | Harris Corporation | Mobile wireless communications device providing enhanced file management and related methods |
US20070143530A1 (en) * | 2005-12-15 | 2007-06-21 | Rudelic John C | Method and apparatus for multi-block updates with secure flash memory |
US8676973B2 (en) | 2006-03-07 | 2014-03-18 | Novell Intellectual Property Holdings, Inc. | Light-weight multi-user browser |
US8870647B2 (en) | 2006-04-12 | 2014-10-28 | Bally Gaming, Inc. | Wireless gaming environment |
US9786123B2 (en) | 2006-04-12 | 2017-10-10 | Bally Gaming, Inc. | Wireless gaming environment |
US20070255938A1 (en) * | 2006-04-27 | 2007-11-01 | Eric Gagneraud | Media transfer system and method |
US7555642B2 (en) * | 2006-04-27 | 2009-06-30 | Hewlett-Packard Development Company, L.P. | Media transfer system and method |
US8893110B2 (en) | 2006-06-08 | 2014-11-18 | Qualcomm Incorporated | Device management in a network |
US20140059593A1 (en) * | 2006-06-22 | 2014-02-27 | Tivo Inc. | In-band data recognition and synchronization system |
US20210217442A1 (en) * | 2006-06-22 | 2021-07-15 | Tivo Solutions Inc. | In-band data recognition and synchronization system |
US11825144B2 (en) * | 2006-06-22 | 2023-11-21 | Tivo Solutions Inc. | In-band data recognition and synchronization system |
US10153000B2 (en) | 2006-06-22 | 2018-12-11 | Tivo Solutions Inc. | In-band data recognition and synchronization system |
US9100670B2 (en) * | 2006-06-22 | 2015-08-04 | Tivo Inc. | In-band data recognition and synchronization system |
US20080010246A1 (en) * | 2006-07-06 | 2008-01-10 | Curtis Bryce A | System and method for providing operating system component version verification |
US20080052279A1 (en) * | 2006-07-12 | 2008-02-28 | Sunil Marolia | Device and network capable of providing personalized services |
CN100454843C (en) * | 2006-07-25 | 2009-01-21 | 华为技术有限公司 | Control system and method for software batch distribution |
US8752044B2 (en) | 2006-07-27 | 2014-06-10 | Qualcomm Incorporated | User experience and dependency management in a mobile device |
US9081638B2 (en) | 2006-07-27 | 2015-07-14 | Qualcomm Incorporated | User experience and dependency management in a mobile device |
TWI449372B (en) * | 2006-10-30 | 2014-08-11 | Microsoft Corp | Method and computer system for offline execution of web based applications |
JP4698756B2 (en) * | 2006-10-30 | 2011-06-08 | マイクロソフト コーポレーション | Offline execution of web-based applications |
US7814234B2 (en) * | 2006-10-30 | 2010-10-12 | Microsoft Corporation | Offline execution of web based applications |
JP2010508581A (en) * | 2006-10-30 | 2010-03-18 | マイクロソフト コーポレーション | Offline execution of web-based applications |
US20080104195A1 (en) * | 2006-10-30 | 2008-05-01 | Microsoft Corporation | Offline execution of web based applications |
US9101820B2 (en) | 2006-11-09 | 2015-08-11 | Bally Gaming, Inc. | System, method and apparatus to produce decks for and operate games played with playing cards |
US8784212B2 (en) | 2006-11-10 | 2014-07-22 | Bally Gaming, Inc. | Networked gaming environment employing different classes of gaming machines |
US9275512B2 (en) | 2006-11-10 | 2016-03-01 | Bally Gaming, Inc. | Secure communications in gaming system |
US9111078B2 (en) | 2006-11-10 | 2015-08-18 | Bally Gaming, Inc. | Package manager service in gaming system |
US8920233B2 (en) | 2006-11-10 | 2014-12-30 | Bally Gaming, Inc. | Assignment template and assignment bundle in a gaming configuration and download system |
US8631501B2 (en) | 2006-11-10 | 2014-01-14 | Bally Gaming, Inc. | Reporting function in gaming system environment |
US8667457B2 (en) | 2006-11-13 | 2014-03-04 | Bally Gaming, Inc. | System and method for validating download or configuration assignment for an EGM or EGM collection |
US20090124394A1 (en) * | 2006-11-13 | 2009-05-14 | Bally Gaming, Inc. | System and method for validating download or configuration assignment for an egm or egm collection |
US9082258B2 (en) | 2006-11-13 | 2015-07-14 | Bally Gaming, Inc. | Method and system for providing download and configuration job progress tracking and display via host user interface |
US9466172B2 (en) | 2006-11-13 | 2016-10-11 | Bally Gaming, Inc. | Download and configuration management engine for gaming system |
US8347280B2 (en) * | 2006-11-13 | 2013-01-01 | Bally Gaming, Inc. | System and method for validating download or configuration assignment for an EGM or EGM collection |
US20090055816A1 (en) * | 2007-08-23 | 2009-02-26 | Sony Corporation | Information processing apparatus, update method, and program |
US20090064172A1 (en) * | 2007-08-31 | 2009-03-05 | Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd | System and method for task scheduling |
US11281515B2 (en) | 2007-09-07 | 2022-03-22 | Ebay Inc. | Method and system for problem modification and processing |
US10417075B2 (en) | 2007-09-07 | 2019-09-17 | Ebay Inc. | Method and system for problem modification and processing |
US10055271B2 (en) * | 2007-09-07 | 2018-08-21 | Ebay Inc. | Method and system for problem modification and processing |
US20160019109A1 (en) * | 2007-09-07 | 2016-01-21 | Ebay Inc. | Method and system for problem modification and processing |
US20090076628A1 (en) * | 2007-09-18 | 2009-03-19 | David Mark Smith | Methods and apparatus to upgrade and provide control redundancy in process plants |
US8920236B2 (en) | 2007-11-02 | 2014-12-30 | Bally Gaming, Inc. | Game related systems, methods, and articles that combine virtual and physical elements |
US9613487B2 (en) | 2007-11-02 | 2017-04-04 | Bally Gaming, Inc. | Game related systems, methods, and articles that combine virtual and physical elements |
US20090119422A1 (en) * | 2007-11-07 | 2009-05-07 | International Business Machines Corporation | Method and apparatus for performing maintenance operations on peripheral devices |
US20090125514A1 (en) * | 2007-11-08 | 2009-05-14 | Brown Russell A | Sequence Matching Algorithm |
US8965935B2 (en) * | 2007-11-08 | 2015-02-24 | Oracle America, Inc. | Sequence matching algorithm |
US8819124B2 (en) | 2007-11-12 | 2014-08-26 | Bally Gaming, Inc. | System and method for one-way delivery of notifications from server-to-clients using modified multicasts |
US8616958B2 (en) | 2007-11-12 | 2013-12-31 | Bally Gaming, Inc. | Discovery method and system for dynamically locating networked gaming components and resources |
US20100057839A1 (en) * | 2008-01-09 | 2010-03-04 | Nec Electronics Corporation | System and method for distributing design system, design system distributing server, and client system |
US8689203B2 (en) * | 2008-02-19 | 2014-04-01 | Microsoft Corporation | Software update techniques based on ascertained identities |
US20090210868A1 (en) * | 2008-02-19 | 2009-08-20 | Microsoft Corporation | Software Update Techniques |
US20090248397A1 (en) * | 2008-03-25 | 2009-10-01 | Microsoft Corporation | Service Initiation Techniques |
US9483911B2 (en) | 2008-04-30 | 2016-11-01 | Bally Gaming, Inc. | Information distribution in gaming networks |
US8856657B2 (en) | 2008-04-30 | 2014-10-07 | Bally Gaming, Inc. | User interface for managing network download and configuration tasks |
US9005034B2 (en) | 2008-04-30 | 2015-04-14 | Bally Gaming, Inc. | Systems and methods for out-of-band gaming machine management |
US9443377B2 (en) | 2008-05-30 | 2016-09-13 | Bally Gaming, Inc. | Web pages for gaming devices |
US20090298583A1 (en) * | 2008-05-30 | 2009-12-03 | Bally Gaming, Inc. | Web pages for gaming devices |
US20090320012A1 (en) * | 2008-06-04 | 2009-12-24 | Mediatek Inc. | Secure booting for updating firmware over the air |
US9495250B2 (en) * | 2008-09-02 | 2016-11-15 | Fujitsu Limited | Providing code to a programmable device |
US20100058311A1 (en) * | 2008-09-02 | 2010-03-04 | Fujitsu Network Communications, Inc. | Providing Code To A Programmable Device |
US20110209131A1 (en) * | 2008-10-06 | 2011-08-25 | Uwe Hohenstein | Method and device for replacing a component of a computer system |
US8851988B2 (en) | 2008-11-14 | 2014-10-07 | Bally Gaming, Inc. | Apparatus, method, and system to provide a multiple processor architecture for server-based gaming |
US20100228652A1 (en) * | 2009-03-06 | 2010-09-09 | Vodafone Holding Gmbh | Billing mechanism for a mobile communication network |
US20100241752A1 (en) * | 2009-03-17 | 2010-09-23 | Chi Mei Communication Systems, Inc. | Portable electronic device and method for downloading a firmware loader from a host computer |
US8250223B2 (en) * | 2009-03-17 | 2012-08-21 | Chi Mei Communication Systems, Inc. | Portable electronic device and method for downloading a firmware loader from a host computer |
US9986295B2 (en) | 2009-04-08 | 2018-05-29 | Tivo Solutions Inc. | Automatic contact information transmission system |
US8904374B2 (en) * | 2009-08-21 | 2014-12-02 | Hitachi Soloutions, Ltd. | Firmware update data generating apparatus and information device |
US20110179408A1 (en) * | 2009-08-21 | 2011-07-21 | Hitachi Solutions, Ltd. | Update data generating apparatus and information device, as well as program |
US9183010B2 (en) | 2009-10-07 | 2015-11-10 | Wyse Technology L.L.C. | Comparing and provisioning configurations for a client having a windows-based embedded image |
US8832259B1 (en) * | 2009-10-30 | 2014-09-09 | Hewlett-Packard Development Company, L.P. | Virtual service mode methods for network remote monitoring and managing system |
US9128795B2 (en) * | 2009-12-22 | 2015-09-08 | Echostar Technologies L.L.C. | Method and system for changing software or firmware on an electronic device |
US20120311555A1 (en) * | 2009-12-22 | 2012-12-06 | Echostar Global B.V. | Method and system for changing software or firmware on an electronic device |
US20120296878A1 (en) * | 2010-01-21 | 2012-11-22 | Nec Corporation | File set consistency verification system, file set consistency verification method, and file set consistency verification program |
US20110185350A1 (en) * | 2010-01-26 | 2011-07-28 | Mitsuru Kawahata | Shared-program updating system |
US9584322B2 (en) * | 2010-03-08 | 2017-02-28 | Intel Corporation | System and method for hypervisor-based remediation and provisioning of a computer |
US20110219234A1 (en) * | 2010-03-08 | 2011-09-08 | Etay Bogner | System and method for hypervisor-based remediation and provisioning of a computer |
US10970102B2 (en) | 2010-03-08 | 2021-04-06 | Intel Corporation | System and method for hypervisor-based remediation and provisioning of a computer |
US8954949B2 (en) * | 2010-10-11 | 2015-02-10 | International Business Machines Corporation | Smart patch delivery system |
US20120089973A1 (en) * | 2010-10-11 | 2012-04-12 | International Business Machines Corporation | Smart patch delivery system |
US20130283255A1 (en) * | 2011-01-12 | 2013-10-24 | Zte Corporation | Method, Device and System for Installing Terminal Software |
US9465599B2 (en) * | 2011-01-12 | 2016-10-11 | Zte Corporation | Method, device and system for installing terminal software |
US9407502B2 (en) | 2011-01-27 | 2016-08-02 | Wyse Technology L.L.C. | State-based provisioning of a client having a windows-based embedded image |
US8751778B2 (en) | 2011-01-27 | 2014-06-10 | Wyse Technology L.L.C. | Generating, validating and applying custom extensible markup language (XML) configuration on a client having a windows-based embedded image |
CN103443783A (en) * | 2011-01-27 | 2013-12-11 | 韦斯技术有限公司 | State-based provisioning of a client having a WINDOWS-based embedded image |
US8725997B2 (en) | 2011-01-27 | 2014-05-13 | Wyse Technology L.L.C. | Self-provisioning of configuration for a specific-purpose client having a windows-based embedded image with a write-filter |
US8495183B2 (en) | 2011-01-27 | 2013-07-23 | Wyse Technology Inc. | State-based provisioning of a client having a windows-based embedded image |
US8560818B2 (en) | 2011-01-27 | 2013-10-15 | Wyse Technolgoy Inc. | Automatic retrieval, parsing and application of configuration for a specific-purpose client having a windows-based embedded image with a write-filter |
US8938524B2 (en) * | 2011-01-27 | 2015-01-20 | Wyse Technology L.L.C. | Comparing and provisioning configurations for a client having a windows-based embedded image |
US9178759B2 (en) | 2011-01-27 | 2015-11-03 | Wyse Technology L.L.C. | Configuring and customizing a specific-purpose client having a windows-based embedded image using extensible markup language (XML) configuration |
US8700888B2 (en) | 2011-01-27 | 2014-04-15 | Wyse Technology L.L.C. | Specific-purpose client with configuration history for self-provisioning of configuration and obviating reinstallation of embedded image |
US9569228B2 (en) | 2011-01-27 | 2017-02-14 | Wyse Technology L.L.C. | Comparing and provisioning configurations for a client having a windows-based embedded image |
US20120197973A1 (en) * | 2011-01-27 | 2012-08-02 | Wyse Technology Inc. | Transferring configuration data from a public cloud server and applying onto a mobile client |
US9037633B2 (en) * | 2011-01-27 | 2015-05-19 | Wyse Technology L.L.C. | Transferring configuration data from a public cloud server and applying onto a mobile client |
US8825990B2 (en) | 2011-01-27 | 2014-09-02 | Wyse Technology L.L.C. | Configuring and customizing a specific-purpose client having a windows-based embedded image using extensible markup language (XML) configuration |
US20120198344A1 (en) * | 2011-01-27 | 2012-08-02 | Wyse Technology Inc. | Comparing and provisioning configurations for a client having a windows-based embedded image |
WO2012102911A1 (en) * | 2011-01-27 | 2012-08-02 | Wyse Technology Inc. | State-based provisioning of a client having a windows-based embedded image |
US9124667B2 (en) | 2011-01-27 | 2015-09-01 | Wyse Technology L.L.C. | State-based provisioning of a client having a windows-based embedded image |
US9762440B2 (en) | 2011-01-27 | 2017-09-12 | Wyse Technology L.L.C. | State-based provisioning of a client having a windows-based embedded image |
US20120204167A1 (en) * | 2011-02-03 | 2012-08-09 | Nec Corporation | Software management system |
US9021460B2 (en) * | 2011-02-03 | 2015-04-28 | Nec Corporation | Software management system |
US10379839B2 (en) * | 2011-02-10 | 2019-08-13 | Trilliant Networks, Inc. | Device and method for facilitating secure communications over a cellular network |
US20140282482A1 (en) * | 2011-02-10 | 2014-09-18 | Trilliant Networks, Inc. | Device and method for facilitating secure communications over a cellular network |
US8595716B2 (en) * | 2011-04-06 | 2013-11-26 | Robert Bosch Gmbh | Failsafe firmware updates |
US20120260244A1 (en) * | 2011-04-06 | 2012-10-11 | Brent Keller | Failsafe firmware updates |
US9058716B2 (en) | 2011-06-06 | 2015-06-16 | Bally Gaming, Inc. | Remote game play in a wireless gaming environment |
US9898889B2 (en) | 2011-06-06 | 2018-02-20 | Bally Gaming, Inc. | Remote game play in a wireless gaming environment |
EP2549395A1 (en) * | 2011-07-18 | 2013-01-23 | Honeywell International Inc. | Systems, methods and apparatus for fast file transfer |
US11157472B1 (en) | 2011-10-27 | 2021-10-26 | Valve Corporation | Delivery of digital information to a remote device |
US11709810B1 (en) | 2011-10-27 | 2023-07-25 | Valve Corporation | Delivery of digital information to a remote device |
USRE47394E1 (en) | 2011-10-31 | 2019-05-14 | Wsou Investments, Llc | Wirelessly transferring data to a packaged electronic device |
US9369959B2 (en) | 2011-10-31 | 2016-06-14 | Nokia Technologies Oy | Wirelessly transferring data to a packaged electronic device |
US20130139127A1 (en) * | 2011-11-29 | 2013-05-30 | Martin Vecera | Systems and methods for providing continuous integration in a content repository |
US10169213B2 (en) * | 2011-11-29 | 2019-01-01 | Red Hat, Inc. | Processing of an application and a corresponding test file in a content repository |
US10083021B2 (en) * | 2011-12-06 | 2018-09-25 | Samsung Electronics Co., Ltd. | Method and apparatus for providing firmware over the air service to user equipments |
US20140366012A1 (en) * | 2011-12-06 | 2014-12-11 | Samsung Electronics Co., Ltd. | Method and apparatus for providing firmware over the air service to user equipments |
EP2798480A4 (en) * | 2011-12-30 | 2016-06-29 | Intel Corp | Vector frequency compress instruction |
US11636932B1 (en) | 2012-01-10 | 2023-04-25 | Cerner Innovation, Inc. | Proximity-based mobile-device updates of electronic health records |
US10847260B1 (en) | 2012-01-10 | 2020-11-24 | Cerner Innovation, Inc. | Proximity-based mobile-device updates of electronic health records |
US11227678B1 (en) | 2012-01-10 | 2022-01-18 | Cerner Innovation, Inc. | Proximity-based mobile-device updates of electronic health records |
US11139055B1 (en) | 2012-01-10 | 2021-10-05 | Cerner Innovation, Inc. | Computerized systems and methods for providing mobile-device updates of electronic health records |
US11862310B2 (en) | 2012-01-10 | 2024-01-02 | Cerner Innovation, Inc. | Proximity-based mobile-device updates of electronic health records |
US10566082B1 (en) | 2012-01-10 | 2020-02-18 | Cerner Innovation, Inc. | Proximity-based mobile-device updates of electronic health records |
US10726947B1 (en) | 2012-01-10 | 2020-07-28 | Cerner Innovation, Inc. | Computerized systems and methods for providing mobile-device updates of electronic health records |
US10354751B1 (en) * | 2012-01-10 | 2019-07-16 | Cerner Innovation, Inc. | Computerized systems and methods for providing mobile-device updates of electronic health records |
US11538565B1 (en) | 2012-01-10 | 2022-12-27 | Cerner Innovation, Inc. | Decision support tool for managing autoimmune inflammatory disease |
US11037664B1 (en) | 2012-01-10 | 2021-06-15 | Cerner Innovation, Inc. | Decision support tool for managing autoimmune inflammatory disease |
US10403091B2 (en) | 2012-01-18 | 2019-09-03 | Bally Gaming, Inc. | Play for fun network gaming system and method |
US9120007B2 (en) | 2012-01-18 | 2015-09-01 | Bally Gaming, Inc. | Network gaming architecture, gaming systems, and related methods |
US9792770B2 (en) | 2012-01-18 | 2017-10-17 | Bally Gaming, Inc. | Play for fun network gaming system and method |
US9307347B2 (en) * | 2012-06-01 | 2016-04-05 | Nokia Technologies Oy | Wireless programming |
US20130326495A1 (en) * | 2012-06-01 | 2013-12-05 | Nokia Corporation | Wireless programming |
US20140007075A1 (en) * | 2012-06-27 | 2014-01-02 | Google Inc. | Methods for updating applications |
US9075693B2 (en) * | 2012-06-27 | 2015-07-07 | Google Inc. | Methods for updating applications |
US20140012970A1 (en) * | 2012-07-03 | 2014-01-09 | Research In Motion Limited | Methods and devices for facilitating a download session |
US20140096125A1 (en) * | 2012-09-28 | 2014-04-03 | Wal-Mart Stores, Inc. | Systems and methods for installing, managing, and provisioning applications |
US9317269B2 (en) * | 2012-09-28 | 2016-04-19 | Wal-Mart Stores, Inc. | Systems and methods for installing, managing, and provisioning applications |
US11126418B2 (en) * | 2012-10-11 | 2021-09-21 | Mcafee, Llc | Efficient shared image deployment |
US9753715B2 (en) * | 2012-11-15 | 2017-09-05 | Nintendo Co., Ltd. | Information processing apparatus, terminal system, storage medium having stored therein information processing program, and method of obtaining update data for efficiently updating data for an application |
US20140137097A1 (en) * | 2012-11-15 | 2014-05-15 | Nintendo Co., Ltd. | Information processing apparatus, terminal system, storage medium having stored therein information processing program, and method of obtaining update data for application |
EP2932374B1 (en) * | 2012-12-14 | 2023-11-15 | Telefonaktiebolaget LM Ericsson (publ) | Systems, methods, and computer program products for a software build and load process using a compilation and deployment service |
EP2932374A1 (en) * | 2012-12-14 | 2015-10-21 | Telefonaktiebolaget LM Ericsson (PUBL) | Systems, methods, and computer program products for a software build and load process using a compilation and deployment service |
US9710251B2 (en) * | 2013-03-15 | 2017-07-18 | Vivint, Inc. | Software updates from a security control unit |
US11334335B1 (en) | 2013-03-15 | 2022-05-17 | Vivint, Inc. | Software updates from a security control unit |
US20140282486A1 (en) * | 2013-03-15 | 2014-09-18 | Vivint, Inc. | Software updates from a security control unit |
US10042630B1 (en) * | 2013-03-15 | 2018-08-07 | Vivint, Inc. | Software updates from a security control unit |
CN105144097A (en) * | 2013-05-14 | 2015-12-09 | 桑迪士克科技股份有限公司 | Firmware updates for multiple product configurations |
WO2014186176A1 (en) * | 2013-05-14 | 2014-11-20 | Sandisk Technologies Inc. | Firmware updates for multiple product configurations |
US20150052512A1 (en) * | 2013-08-19 | 2015-02-19 | Dresser, Inc. | System and method for updating firmware across devices in a process facility |
US9411574B2 (en) * | 2013-08-19 | 2016-08-09 | Dresser, Inc. | System and method for updating firmware across devices in a process facility |
US9576153B2 (en) * | 2013-08-23 | 2017-02-21 | Cellco Partnership | Device and method for providing information from a backend component to a frontend component by a secure device management abstraction and unification module |
US20150059006A1 (en) * | 2013-08-23 | 2015-02-26 | Cellco Partnership (D/B/A Verizon Wireless) | Secure Device Management Abstraction and Unification Module |
US20180338068A1 (en) * | 2014-01-31 | 2018-11-22 | Digimarc Corporation | Methods for encoding, decoding and interpreting auxiliary data in media signals |
US20150234648A1 (en) * | 2014-02-18 | 2015-08-20 | Nec Corporation | Firmware management system, method, and recording medium storing program |
JP2015176601A (en) * | 2014-03-17 | 2015-10-05 | 廣達電腦股▲分▼有限公司 | Software update method, software update system, and mobile device |
US20150278825A1 (en) * | 2014-03-31 | 2015-10-01 | Red Hat, Inc. | Behavior adjustment based on capabilities of a downstream server |
US11068905B2 (en) * | 2014-03-31 | 2021-07-20 | Red Hat, Inc. | Behavior adjustment based on capabilities of a downstream server |
US9614724B2 (en) | 2014-04-21 | 2017-04-04 | Microsoft Technology Licensing, Llc | Session-based device configuration |
US11430256B2 (en) | 2014-04-29 | 2022-08-30 | Microsoft Technology Licensing, Llc | Image scoring and identification based on facial feature descriptors |
US9606788B2 (en) | 2014-04-30 | 2017-03-28 | Microsoft Technology Licensing, Llc | Dynamic update installer for customized software |
WO2015167943A1 (en) * | 2014-04-30 | 2015-11-05 | Microsoft Technology Licensing, Llc | Dynamic update installer for customized software |
US10111099B2 (en) | 2014-05-12 | 2018-10-23 | Microsoft Technology Licensing, Llc | Distributing content in managed wireless distribution networks |
US9430667B2 (en) | 2014-05-12 | 2016-08-30 | Microsoft Technology Licensing, Llc | Managed wireless distribution network |
US9384335B2 (en) | 2014-05-12 | 2016-07-05 | Microsoft Technology Licensing, Llc | Content delivery prioritization in managed wireless distribution networks |
US9384334B2 (en) | 2014-05-12 | 2016-07-05 | Microsoft Technology Licensing, Llc | Content discovery in managed wireless distribution networks |
US9874914B2 (en) | 2014-05-19 | 2018-01-23 | Microsoft Technology Licensing, Llc | Power management contracts for accessory devices |
US10691445B2 (en) | 2014-06-03 | 2020-06-23 | Microsoft Technology Licensing, Llc | Isolating a portion of an online computing service for testing |
US9367490B2 (en) | 2014-06-13 | 2016-06-14 | Microsoft Technology Licensing, Llc | Reversible connector for accessory devices |
US9477625B2 (en) | 2014-06-13 | 2016-10-25 | Microsoft Technology Licensing, Llc | Reversible connector for accessory devices |
US9864594B1 (en) * | 2014-09-30 | 2018-01-09 | Amazon Technologies, Inc. | Software upgrade and operation testing of a packaged electronic device |
DE102014116321A1 (en) * | 2014-11-10 | 2016-05-12 | Harting Electric Gmbh & Co. Kg | Update a firmware |
US10248402B2 (en) * | 2015-01-01 | 2019-04-02 | Bank Of America Corporation | Automated code deployment system |
US20160196127A1 (en) * | 2015-01-01 | 2016-07-07 | Bank Of America Corporation | Automated code deployment system |
EP3046023A1 (en) * | 2015-01-19 | 2016-07-20 | LSIS Co., Ltd. | Photovoltaic system |
US10289408B2 (en) * | 2015-01-21 | 2019-05-14 | Western Digital Technologies, Inc. | Managing wear of system areas of storage devices |
US9720762B2 (en) * | 2015-03-04 | 2017-08-01 | Unisys Corporation | Clearing bank descriptors for reuse by a gate bank |
US20160259690A1 (en) * | 2015-03-04 | 2016-09-08 | Unisys Corporation | Clearing bank descriptors for reuse by a gate bank |
US10248403B2 (en) * | 2015-03-13 | 2019-04-02 | Kony, Inc. | Providing updates for natively rendered mobile applications |
US20160266889A1 (en) * | 2015-03-13 | 2016-09-15 | Kony, Inc. | Providing updates for natively rendered mobile applications |
US10649766B2 (en) * | 2015-06-05 | 2020-05-12 | Unisys Corporation | Dynamic replacement of software components |
US20160357543A1 (en) * | 2015-06-05 | 2016-12-08 | Unisys Corporation | Dynamic replacement of software components |
US9772837B2 (en) * | 2015-06-29 | 2017-09-26 | Verizon Patent And Licensing Inc. | Dynamic delivery of code and fixes |
US10860310B2 (en) | 2015-09-30 | 2020-12-08 | Apple Inc. | Software updating |
US10599427B2 (en) | 2015-09-30 | 2020-03-24 | Apple Inc. | Software updating |
US9792109B2 (en) | 2015-09-30 | 2017-10-17 | Apple Inc. | Software updating |
US9946533B2 (en) * | 2015-09-30 | 2018-04-17 | Apple Inc. | Software updating |
US20170090901A1 (en) * | 2015-09-30 | 2017-03-30 | Apple Inc. | Software Updating |
CN108292209A (en) * | 2016-01-20 | 2018-07-17 | 谷歌有限责任公司 | The method and apparatus that caching and the application currently compiled are selectively provided |
US10826913B2 (en) * | 2016-08-25 | 2020-11-03 | Samsung Electronics Co., Ltd. | Apparatus and method for providing security service in communication system |
US20180063159A1 (en) * | 2016-08-25 | 2018-03-01 | Samsung Electronics Co., Ltd. | Apparatus and method for providing security service in communication system |
US10922073B2 (en) * | 2017-04-19 | 2021-02-16 | Servicenow, Inc. | Distributed incremental updating of trays using a source control system |
US10705828B2 (en) * | 2017-06-14 | 2020-07-07 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus for updating application |
CN109144555A (en) * | 2017-06-19 | 2019-01-04 | 歌拉利旺株式会社 | Electronic equipment and method for updating program |
US11144299B2 (en) * | 2018-07-05 | 2021-10-12 | Silicon Motion, Inc. | Firmware updating method |
US10628286B1 (en) | 2018-10-18 | 2020-04-21 | Denso International America, Inc. | Systems and methods for dynamically identifying program control flow and instrumenting source code |
US11070618B2 (en) * | 2019-01-30 | 2021-07-20 | Valve Corporation | Techniques for updating files |
US20220006817A1 (en) * | 2019-03-29 | 2022-01-06 | Huawei Technologies Co., Ltd. | Information Verification Method, Apparatus, And Device |
US11775288B2 (en) * | 2019-08-27 | 2023-10-03 | Konamobility Company Limited | Method and apparatus for generating difference between old and new versions of data for updating software |
US11630657B2 (en) * | 2020-05-14 | 2023-04-18 | Hyundai Motor Company | Software updating system and method of controlling the same |
US20210357370A1 (en) * | 2020-05-14 | 2021-11-18 | Valve Corporation | Efficient file-delivery techniques |
US11886391B2 (en) * | 2020-05-14 | 2024-01-30 | Valve Corporation | Efficient file-delivery techniques |
WO2022063773A1 (en) * | 2020-09-28 | 2022-03-31 | Robert Bosch Gmbh | Method for updating software |
US11159617B1 (en) * | 2021-01-22 | 2021-10-26 | Juniper Networks, Inc | Apparatus, system, and method for synchronizing replicated objects across network nodes in highly scaled environments |
US11706203B2 (en) * | 2021-05-14 | 2023-07-18 | Citrix Systems, Inc. | Method for secondary authentication |
US20220368686A1 (en) * | 2021-05-14 | 2022-11-17 | Citrix Systems, Inc. | Method for secondary authentication |
Also Published As
Publication number | Publication date |
---|---|
US7805719B2 (en) | 2010-09-28 |
US20060130046A1 (en) | 2006-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7805719B2 (en) | System and method for updating and distributing information | |
CA2414281C (en) | System and method for updating and distributing information | |
US6832373B2 (en) | System and method for updating and distributing information | |
CN100456240C (en) | Applying custom software image updates to non-volatile storage in a failsafe manner | |
US7082549B2 (en) | Method for fault tolerant updating of an electronic device | |
US7774596B2 (en) | System and method for updating firmware in a secure manner | |
JP3799246B2 (en) | Device driver upgrade system and method | |
US10789062B1 (en) | System and method for dynamic data deduplication for firmware updates | |
EP1580664B1 (en) | Computing device with relatively limited storage space and operating / file system thereof | |
US11138295B2 (en) | Method for securely updating firmware components and docking station using the same | |
US7689981B1 (en) | Mobile handset with efficient interruption point detection during a multiple-pass update process | |
US7698699B2 (en) | Computing device with relatively limited storage space and operating/file system thereof | |
US11379216B2 (en) | Software update agent device and software patching method through the same | |
CN1710546A (en) | Systems and methods for building a disk image | |
EP1584005B1 (en) | Mobile handset with a fault tolerant update agent | |
WO2005088448A1 (en) | Method and apparatus for reliable in-place update | |
US20120151005A1 (en) | Image file download method | |
CN111046389A (en) | Method for securely updating firmware components and portable computer station for implementation | |
US20050210055A1 (en) | Computing device with relatively limited storage space and operating/file system thereof | |
ES2364400T3 (en) | FAILURE PROOF PROCEDURE AND APPLIANCE FOR PERSONALIZED UPDATES OF LOGIC SUPPORT IMAGES TO NON-VOLATILE MEMORY. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:O'NEILL, PATRICK;REEL/FRAME:019453/0576 Effective date: 20030120 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BITFONE CORPORATION;REEL/FRAME:021316/0317 Effective date: 20080118 Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.,TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BITFONE CORPORATION;REEL/FRAME:021316/0317 Effective date: 20080118 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION |