Claims
- 1. A method of upgrading software in an engine controller, the method comprising:
determining a version of current software in the engine controller; identifying one or more data blocks of upgraded software associated with the version of current software; and replacing one or more data blocks of the current software with the one or more data blocks of upgraded software.
- 2. A method according to claim 1, comprising storing an image of the current software in a memory before replacing the one or more data blocks of the current software.
- 3. A method according to claim 2, wherein identifying the one or more data blocks of upgraded software comprises selecting the one or more data blocks of upgraded software from information stored in a memory, the information identifying a plurality of software versions and identifying one or more data blocks of upgraded software associated with each of the plurality of software versions.
- 4. A method according to claim 3, comprising, prior to identifying the one or more data blocks of upgraded software, verifying that the version of the current software corresponds with one of the plurality of software versions.
- 5. A method according to claim 3, wherein for each of the plurality of version, comprises locations for insertion of the one or more data blocks of upgraded software.
- 6. A method according to claim 3, wherein replacing the one or more data blocks of the current software comprises downloading a data stream into the engine controller, the data stream comprising the image of the current software modified by replacing one or more data blocks of the image with the one or more data blocks of upgraded software according to the information.
- 7. A method according to claim 6, comprising forming the data in memory prior to downloading the data stream into the engine controller.
- 8. A method according to claim 6, comprising forming the data stream dynamically while downloading the data stream into the engine controller.
- 9. A method according to claim 8, wherein forming the data stream dynamically comprises:
downloading the image of the current software from the memory until reaching a first memory location; downloading a block of upgraded software; and resuming downloading the image from the memory commencing at a second memory location that is spaced apart from tie first memory location by a size of the block of upgraded software.
- 10. A method according to claim 2, comprising, prior to replacing the one or more data blocks of the current software, verifying that the image of the current software matches the current software in the engine controller.
- 11. A method according to claim 2, comprising, subsequent to replacing the one or more data blocks of the current software, restoring the current software by downloading the image of the current software back into the engine controller.
- 12. A method according to claim 11, comprising, prior to restoring the current software, verifying that software in the engine controller is an upgraded version of the image of the current software.
- 13. A method according to claim 11, comprising, prior to replacing the one or more data blocks of the current software for a first time, requesting and storing a first identification number from the engine controller.
- 14. A method according to claim 13, comprising requesting a subsequent identification number and at least one of: verifying that the subsequent identification number matches the first identification number prior to replacing the one or more data blocks of the current software for a subsequent time; and verifying that the subsequent identification number matches the first identification number prior to restoring the current software.
- 15. A method according to claim 13, wherein the first identification number comprises a vehicle identification number.
- 16. A method according to claim 1, which comprises maintaining status information during replacing the one or more data blocks of the current software.
- 17. A method according to claim 11, which comprises maintaining status information during restoring the current software.
- 18. A method according to claim 16, where tie status information comprises a marker.
- 19. A method according to claim 17, wherein the status information comprises a maker.
- 20. A method according to claim 1, which comprises outputting an indication to users for an occurrence of one or more of: an error in communication with the engine controller; a low operating voltage; a failure to recognize hardware associated with the engine controller; an error erasing data from the engine controller; and error storing data to the engine controller; and an attempt to upgrade software that has already been upgraded.
- 21. A method according to claim 4, which comprises upgrading the information, such that the upgraded information identifies one or more additional software versions.
- 22. A method according to claim 21, wherein verifying that the version of the current software corresponds with one of the plurality of software versions comprises recording a version identifier, the version identifier identifying a version of the current software that is not identified in the information.
- 23. A method according to claim 21, wherein verifying that the version of the current software corresponds with one of the plurality of software versions comprises recording the current software into memory in circumstances where a version of the current software is not identified in the information.
- 24. A method of upgrading software in an engine controller, the method comprising:
providing information identifying a plurality of software versions and one or more blocks of upgraded software associated with each of the plurality of software versions; determining a version of current software in the engine controller; identifying, from within the information, one or more blocks of upgraded software associated with the version of the current software; and replacing one or more blocks of the current software with the one or more blocks of upgraded software associated with the version of the current software.
- 25. A method according to claim 24, comprising storing an image of the current software into a memory before replacing the one or more blocks of the current software.
- 26. A method according to claim 24, comprising, prior to identifying the one or more blocks of upgraded software, verifying that the version of the current software corresponds with one of the plurality of software versions.
- 27. A method according to claim 24, wherein, for each of the plurality of versions, the information comprises locations for insertion of one or more blocks of upgraded software.
- 28. A method according to claim 25, wherein replacing the one or more blocks of the current software comprises downloading a data stream into the engine controller, the data stream comprising the image of the current software modified by replacing one or more blocks of the image with the one or more blocks of upgraded software according to the information.
- 29. A method according to claim 28, comprising forming the data stream in the, memory prior to downloading the data stream into the engine controller.
- 30. A method according to claim 28, comprising forming the data stream dynamically while downloading the data stream into the engine controller.
- 31. A method according to claim 28, wherein forming the data stream dynamically comprises;
downloading the image of the current software from the memory until reaching a first memory location; downloading a block of upgraded software; and resuming downloading the image from the memory commencing at a second memory location that is spaced apart from the first memory location by a size of the block of upgraded software.
- 32. An apparatus for upgrading software in an engine controller, the apparatus comprising.
an interface configured to communicate data to and from the engine controller; a memory, which stores information identifying a plurality of software versions and one or more data blocks of upgraded software associated with each of the plurality of software versions; and a processor in communication with the memory and the interface, the processor configured to:
determine a version of current software in the engine controller; identify one or more data blocks of upgraded software associated with the version of the current software; and replace one or more data blocks of the current software with the one or more data blocks of upgraded software.
- 33. An apparatus according to claim 32, wherein the memory also stores information about a location for insertion of each data block of upgraded software into its associated software version.
- 34. An apparatus according to claim 32, wherein the processor is configured to obtain an image of the current software from the engine controller and store that image in the memory.
- 35. An apparatus according to claim 34, wherein the processor is configured to form a data stream and download the data stream into the engine controller in order to replace the one or more data blocks of the current software, the bit stream comprising the image of the current software modified by replacing one or more data blocks of the image with the one or more data blocks of the upgraded software.
- 36. An apparatus according to claim 35, wherein the bit stream is formed in the memory prior to the download of the bit stream into the engine controller.
- 37. An apparatus according to claim 35, wherein the bit stream is formed dynamically during the download of the bit stream into the engine controller.
- 38. An apparatus according to claim 34, wherein the processor is configured to restore the current software by downloading the image of the current software into the engine controller.
- 39. An apparatus according to claim 38, which comprises a user interface having at least one of:
(a) an output for indicating whether the version of the current software in the engine controller corresponds with one of the plurality of software versions identified in the information; (b) an output for indicating whether the image of the current software stored in memory matches the current software in the engine controller; (c) an output for indicating an error in communication with the engine controller; (d) an output for indicating a low operating voltage; (e) an output for indicating a failure to recognize hardware associated with the engine controller; (f) an output for indicating an error erasing data from the engine controller; and (g) an output for indicating an attempt to upgrade software that has already been upgraded.
- 40. An apparatus according to claim 39, wherein the user interface comprises one or more lights, the lights configured to flash intermittently in a manner representing a codification scheme, the codification scheme comprising one or more of the outputs of claim 39.
- 41. An apparatus for upgrading software in an engine controller, the apparatus comprising:
means for communicating data to and from the engine controller; means for storing information identifying a plurality of software versions and storing one or more data blocks of upgraded software associated with each of the plurality of software versions; means for determining a version of current software in the engine controller; means for identifying one or more data blocks of upgraded software associated with the version of the current software; and, means for replacing one or more data blocks of the current software with the one or more data blocks of upgraded software.
- 42. A machine readable medium carrying data, which data comprises:
information identifying a plurality of software versions and one or more data blocks of upgraded software associated with each of the plurality of software versions; and a set of instructions which, when executed by a data processor, configure the data processor to upgrade current software in an engine controller by determining a version of the current software in the engine controller, and replacing one or more data blocks of the current software with the one or more data blocks of upgraded software associated with the version of the current software.
- 43. A machine readable medium carrying data, which data comprises a set of instructions which, when executed by a data processor, cause the data processor to perform a method of upgrading current software in an engine controller, the method comprising:
determining a version of the current software in the engine controller; identifying one or more data blocks of upgraded software associated with the version of the current software; and replacing one or more data blocks of the current software with the one or more data blocks of the upgraded software.
- 44. A method according to claim 40, wherein the one or more data blocks of upgraded software are stored in at least one of: the data processor; the machine readable medium; and a memory in communication with the data processor.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This application claims the benefit under 35 U.S.C. §119 of provisional application No. 60/279,711 filed Mar. 30, 2001 and entitled Method and Apparatus for Programming Engine Controllers.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60279711 |
Mar 2001 |
US |