The present application makes reference to PCT Application having publication number WO/02/41147 A1 and PCT Application No. PCT/US01/44034, entitled “System and Method for Updating and Distributing Information”, filed Nov. 19, 2001, the complete subject matter of which is hereby incorporated herein by reference, in its entirety.
The present application also makes reference to U.S. Provisional Patent Application Ser. No. 60/249,606, entitled “System and Method for Updating and Distributing Information”, filed Nov. 17, 2000, the complete subject matter of which is hereby incorporated herein by reference, in its entirety.
[Not Applicable]
[Not Applicable]
Electronic devices, such as mobile phones and personal digital assistants (PDA's), often contain firmware and application software that are either provided by the manufacturers of the electronic devices, by telecommunication carriers, or by third parties. When a build of the memory image of firmware for an electronic device is created in a manufacturing or product development environment, often the information regarding the components in the build are lost or discarded. Thus, the subsequent execution of another build cannot make use of information from a previous build. In situations where it is important to discover how a given build is different from a previous build, there is often limited information available that is inadequate to determine the changes between builds.
There is a problem in updating devices with file-systems. There is a problem in saving update packages in file-systems such that an application, such as an update agent, can access it when the file-system is not available.
There is a problem of updating file-system based components in device with NAND based flash memory. There is a problem of implementing fault-tolerant updates of components or files in NAND flash memory.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.
A method and/or device supporting firmware update using an update agent in a mobile device, an MVP server for distributing update packages to mobile devices, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.
These and other advantages, aspects and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.
Aspects of the present invention relate generally to the process of the management of mobile devices, and, more specifically, to the generation and distribution of update packages used to update software/firmware in mobile devices. The following discussion makes reference to the term “electronic device” that is used herein to refer to mobile electronic devices such as, for example, a mobile handset, a cellular phone, a personal digital assistant (PDA), a pager, and a personal computer, to name just a few. Although the listed example electronic devices are mobile devices, application of the present invention is not limited in this manner, as representative embodiments of the present invention may be employed in a wide variety of electronic devices, both fixed and mobile.
Electronic devices may be adapted to access servers to retrieve update information for updating memory in the electronic devices. An electronic device may be, for example, a mobile electronic device having firmware/software such as mobile cellular phone handsets, personal digital assistants (PDAs), pagers, MP-3 players, digital cameras, etc. Update information may comprise information that modifies or changes firmware/software and/or software components installed in the electronic device. In a representative embodiment of the present invention, update information may comprise a set of executable instructions for converting a first version of code to an updated/second version of code. The update information may add new services to the electronic device, as desired by a service provider, device manufacturer, or an end-user, and/or may fix bugs (e.g., software errors) in the operating code of the electronic device. In a representative embodiment of the present invention, update information may comprise an update package.
As shown in the illustration of
In a representative embodiment of the present invention, the update agent 129 may be self-updating, i.e. the update agent 129 may be capable of updating itself. The update agent 129 may be capable of using update packages generated by the generator 116 in the generator environment 111 to update firmware and/or software in the mobile device 109.
In a representative embodiment of the present invention, a generator environment such as the generator environment 111, for example, may employ a transparent linker profiler tool 112 that facilitates the collection of profile information generated during a linker phase of a build of firmware and/or software. The profile information may be stored into a profile database such that it can be used in subsequent builds of firmware and/or software. The transparent linker profiler tool 112 may employ a linker 114 that may comprise, for example, a conventional linker for linking object code files into a firmware/software binary image. The transparent linker profiler tool 112 may also employ a code expansion slot (CES) tool 118 that may cause the automatic insertion of unused segments of memory in a firmware binary image. By inserting code expansion slots following segments of code that are expected to be dynamic and undergo future change, a representative embodiment of the present invention reduces the volume of changed code, by eliminating unnecessary movement of code that follows the changing or dynamic code. As shown in
In a representative embodiment of the present invention, the distribution network 107 may comprise a device management (DM) server 121 and a multiple variance platform (MVP) 117 that is used to manage the mobile device 109. As shown in
In a representative embodiment of the present invention, the mobile device 109 may comprise a NAND-based NV memory 123, and the update agent 129 may be capable of updating the NAND-based NV memory using fault-tolerant means. For example, the update agent 129 may employ a bank-by-bank method in which a point of interruption of the update process is determined by comparing cyclic redundancy check (CRC) values against previously computed CRC values that may be communicated to the mobile device 109, instead of storing status information in the NV memory 123 of the mobile device 109 during the update process.
A multiple variance platform in accordance with a representative embodiment of the present invention such as, for example, the multiple variance platform 117 of
In a representative embodiment of the present invention, the MVP platform 117 may be designed to be used with application servers such as the Tomcat open-source implementation of Java Servlet and JavaServer Pages technologies by the Apache Software Foundation, and Weblogic server platform by BEA Systems, Inc., that are capable of supporting a version of SSL, including the latest version of 3.0. The MVP platform 117 may also support any version of transport layer security (TLS). The MVP platform 117 may support encryption such as, for example, 128 bit encryption, and may support any of the standard encryption algorithms. In a representative embodiment of the present invention, the MVP platform 117 may support the most commonly used secure sockets layer (SSL) cipher suites, and key exchange mechanisms such as, for example, the RSA key exchange. In a representative embodiment of the present invention, use of the SSL protocol may require that the a client such as, for example, the MVP client 139 create a digital signature via a one-way hash, from data randomly generated during the handshake and known only to the client, and a server. The data hash may then be encrypted with a private key that corresponds to a public key in a certificate being presented to the server. As long as SSL-enabled client software is able to use any of the standard techniques of public-key cryptography, an MVP in accordance with a representative embodiment of the present invention may support the technique.
In a representative embodiment of the present invention, the MVP client 229 in the NAND NV memory 209 may be loaded to the RAM 211, and may be executed as a loaded executable 259. In addition, the “Main App” 220 files 221, 223, 225 and 227 may be loaded into the RAM 211 and comprise application instances 251, 253, 255 and 257 respectively. Thus, the MVP client copy 229 may update the application instances 251, 253, 255 and 257 in RAM 211, which may then be written into their corresponding instances 221, 223, 225 and 227 in NAND NV memory 209, replacing them.
As illustrated in
In a representative embodiment of the present invention, a software stack for file system 433 such as, for example, a software stack for an MS-DOS-type file system may be implemented within the update agent 415. The file system 433 (e.g., an MS-DOS type file system) may be randomly accessible, and may be fault tolerant. Thus, an advantage of employing a representative embodiment of the present invention is that operating system (OS) dependency may be eliminated.
In a representative embodiment of the present invention, the “Main App” 520 may be a large file, and a generator such as the generator 116 of
In another representative embodiment of the present invention, the MVP client 539 may be part of the kernel 519 of the electronic device (e.g., the mobile device 109). The MVP client 539 in the kernel 519 may update the entire “Main App” file 520, without the MVP client 539 being loaded into the MVP client portion 559 of the RAM 511. The “Main App” 520 may comprise a single file in file system 533. The MVP client 539 in the kernel 519 may have head/write permissions to “Main App” file 520 in file system 533. As described above, an update package produced using a differencing algorithm in the generator 116 of
In a representative embodiment of the present invention, the update agent core 711 may create a byte-by-byte compliant update. That is, each updated version of firmware in an electronic device (e.g., the mobile device 109) is an exact replica of a factory installed image. Thus, by employing a representative embodiment of the present invention, each updated version needs to be tested and qualified only once, and only in a single electronic device.
Aspects of the present invention may be found in a mobile electronic device having NAND-based non-volatile memory and volatile memory. The mobile electronic device may comprise a file system resident in the NAND-based non-volatile memory, and application code resident in the file system. The application code may comprise a plurality of application files. The mobile electronic device may also comprise client code in the NAND-based non-volatile memory. The client code may copy at least one of the plurality of application files into volatile memory, and may update the at least one of the plurality of application files in volatile memory. The client code may also copy the updated at least one of the plurality of application files from volatile memory into the file system, and may replace the at least one of the plurality of application files. The client code may create a backup copy of the least one of the plurality of application files before copying the updated at least one of the plurality of application files from volatile memory into the file system. The client code may delete the backup copy of the at least one of the plurality of application files after copying the updated at least one of the plurality of application files from volatile memory into the file system. The client code may be resident in the file system, and the mobile device may load the client code into volatile memory to conduct an update of the at least one of the plurality of application files.
A representative embodiment of the present invention may also comprise kernel code for initiating execution of an operating system. The kernel code may interface with hardware circuitry of the mobile electronic device through firmware code, and the client code may be resident in the kernel code. The client code may copy at least one of the plurality of application files into volatile memory from the NAND-based non-volatile memory, and may update the at least one of the plurality of application files in volatile memory. A representative embodiment of the present invention may also comprise update agent code resident in the firmware code, and the update agent code may update the firmware code of the mobile electronic device while the client code updates the at least one of the plurality of application files in volatile memory. The update agent code may update the firmware code of the mobile electronic device and the at least one of the plurality of application files in volatile memory. A representative embodiment of the present invention may also comprise an update package array resident in the NAND-based non-volatile memory, and the update package array may comprise a firmware update package, a manipulation file, and a plurality of update files corresponding to the at least one of the plurality of application files. The client code may employ the plurality of update files to update the at least one of the plurality of application files, and the update agent code may employ the firmware update package to update the firmware code.
In a representative embodiment of the present invention, the at least one of the plurality of application files may be updated using a fault tolerant bank-by-bank technique. The at least one of the plurality of application files may be updated in the mobile electronic device, using a set of executable instructions for converting a first file version to a second file version. The at least one of the plurality of application files may be updated before an operating system used for normal operation of the mobile electronic device, is operational. The mobile electronic device may comprise a cellular phone.
Additional aspects of the present invention may be seen in a method of updating files and firmware in a mobile electronic device having NAND-based non-volatile memory and volatile memory. In such a representative embodiment, the NAND-based non-volatile memory may comprise a file system. Such a method may comprise receiving update information via a wireless network, storing the update information in the NAND-based non-volatile memory, and retrieving a file before establishment of operating system support of the file system. The method may also comprise updating the retrieved file using at least a first portion of the update information, and saving the updated file to the file system. The mobile electronic device may comprise a cellular phone. The updating may be performed using a fault tolerant bank-by-bank method. The wireless network may comprise a cellular network. The method may also comprise updating firmware code using at least a second portion of the update information. The update information may comprise a set of executable instructions for converting a first version of code to a second version of code.
Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
While the present invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiment disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
The present application makes reference to, claims priority to, and claims benefit of U.S. Provisional Patent Application Ser. No. 60/568,898, entitled “MULTIPLE VARIANCE PLATFORM FOR THE MANAGEMENT OF MOBILE DEVICES”, filed May 7, 2004, the complete subject matter of which is hereby incorporated herein by reference, in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5084816 | Boese et al. | Jan 1992 | A |
5261055 | Moran et al. | Nov 1993 | A |
5442771 | Filepp et al. | Aug 1995 | A |
5479637 | Lisimaque et al. | Dec 1995 | A |
5579522 | Christeson et al. | Nov 1996 | A |
5596738 | Pope | Jan 1997 | A |
5598534 | Haas | Jan 1997 | A |
5608910 | Shimakura | Mar 1997 | A |
5623604 | Russell et al. | Apr 1997 | A |
5666293 | Metz et al. | Sep 1997 | A |
5752039 | Tanimura | May 1998 | A |
5778440 | Yiu et al. | Jul 1998 | A |
5790974 | Tognazzini | Aug 1998 | A |
5878256 | Bealkowski et al. | Mar 1999 | A |
5960445 | Tamori et al. | Sep 1999 | A |
5968182 | Chen et al. | Oct 1999 | A |
6009497 | Wells et al. | Dec 1999 | A |
6018747 | Burns et al. | Jan 2000 | A |
6038636 | Brown, III et al. | Mar 2000 | A |
6064814 | Capriles et al. | May 2000 | A |
6073206 | Piwonka et al. | Jun 2000 | A |
6073214 | Fawcett | Jun 2000 | A |
6088759 | Hasbun et al. | Jul 2000 | A |
6105063 | Hayes, Jr. | Aug 2000 | A |
6112024 | Almond et al. | Aug 2000 | A |
6112197 | Chatterjee et al. | Aug 2000 | A |
6126327 | Bi et al. | Oct 2000 | A |
6128695 | Estakhri et al. | Oct 2000 | A |
6138249 | Nolet | Oct 2000 | A |
6157559 | Yoo | Dec 2000 | A |
6163274 | Lindgren | Dec 2000 | A |
6198946 | Shin et al. | Mar 2001 | B1 |
6279153 | Bi et al. | Aug 2001 | B1 |
6301710 | Fujiwara | Oct 2001 | B1 |
6311322 | Ikeda et al. | Oct 2001 | B1 |
6343379 | Ozawa et al. | Jan 2002 | B1 |
6381740 | Miller et al. | Apr 2002 | B1 |
6408434 | Fujiwara | Jun 2002 | B1 |
6438585 | Mousseau et al. | Aug 2002 | B2 |
6526574 | Jones | Feb 2003 | B1 |
6615038 | Moles et al. | Sep 2003 | B1 |
6615404 | Garfunkel et al. | Sep 2003 | B1 |
6668336 | Lasser | Dec 2003 | B2 |
6725056 | Moles et al. | Apr 2004 | B1 |
6725392 | Frey et al. | Apr 2004 | B1 |
6832373 | O'Neill | Dec 2004 | B2 |
6836657 | Ji et al. | Dec 2004 | B2 |
6925467 | Gu et al. | Aug 2005 | B2 |
6928108 | Nelson et al. | Aug 2005 | B2 |
20010029178 | Criss et al. | Oct 2001 | A1 |
20010047363 | Peng | Nov 2001 | A1 |
20010048728 | Peng | Dec 2001 | A1 |
20020072359 | Moles et al. | Jun 2002 | A1 |
20020078209 | Peng | Jun 2002 | A1 |
20020116261 | Moskowitz et al. | Aug 2002 | A1 |
20020128994 | Sadhasivan et al. | Sep 2002 | A1 |
20020131404 | Mehta et al. | Sep 2002 | A1 |
20020152005 | Bagnordi | Oct 2002 | A1 |
20020156863 | Peng | Oct 2002 | A1 |
20020157090 | Anton, Jr. | Oct 2002 | A1 |
20030023964 | Rajaram et al. | Jan 2003 | A1 |
20030027563 | Herle et al. | Feb 2003 | A1 |
20030033599 | Rajaram et al. | Feb 2003 | A1 |
20030037075 | Hannigan et al. | Feb 2003 | A1 |
20030061384 | Nakatani | Mar 2003 | A1 |
20030074658 | Kim | Apr 2003 | A1 |
20030084435 | Messer et al. | May 2003 | A1 |
20030121032 | Cho et al. | Jun 2003 | A1 |
20030162533 | Moles et al. | Aug 2003 | A1 |
20030182414 | O'Neill | Sep 2003 | A1 |
20030186689 | Herle et al. | Oct 2003 | A1 |
20040015952 | Lajoie et al. | Jan 2004 | A1 |
20040031031 | Rudelic | Feb 2004 | A1 |
20040034853 | Gibbons et al. | Feb 2004 | A1 |
20040054995 | Lee | Mar 2004 | A1 |
20040111723 | Moles et al. | Jun 2004 | A1 |
20040117785 | Kincaid | Jun 2004 | A1 |
20040123282 | Rao | Jun 2004 | A1 |
20040133887 | Herle et al. | Jul 2004 | A1 |
20040152455 | Herle | Aug 2004 | A1 |
20040261072 | Herle | Dec 2004 | A1 |
20040261073 | Herle et al. | Dec 2004 | A1 |
20050060699 | Kim et al. | Mar 2005 | A1 |
20050097544 | Kim | May 2005 | A1 |
20050132179 | Glaum et al. | Jun 2005 | A1 |
20050144609 | Rothman et al. | Jun 2005 | A1 |
20050144612 | Wang et al. | Jun 2005 | A1 |
20050160195 | Bruner et al. | Jul 2005 | A1 |
20050216902 | Schafer | Sep 2005 | A1 |
20050216903 | Schafer | Sep 2005 | A1 |
Number | Date | Country |
---|---|---|
2339923 | Mar 2000 | CA |
82002626 | Aug 1996 | JP |
2002-0034228 | May 2000 | KR |
2001-0100328 | Nov 2001 | KR |
Number | Date | Country | |
---|---|---|---|
60568898 | May 2004 | US |