Claims
- 1. In an embedded microcontroller based control system comprising a microcontroller having the ability to execute programs stored on a first non-volatile storage device, the embedded microcontroller based control system also having a second non-volatile storage device coupled to the microcontroller, a method comprising:
accessing a key entry stored on the second non-volatile storage device, the key entry identifying programs on the first non-volatile storage device licensed for execution on the microcontroller; and limiting use of the programs stored on the first non-volatile storage device based on the key entry on the second non-volatile storage device.
- 2. The method as defined in claim 1 wherein limiting use of the programs stored on the first non-volatile storage device based on the key entry on the second non-volatile storage device further comprises limiting a number of instances of use of a first software program stored on the first non-volatile storage device.
- 3. The method as defined in claim 1 wherein limiting use of the programs stored on the first non-volatile storage device based on the key entry on the second non-volatile storage device further comprises limiting use of a set of software programs stored on the first non-volatile storage device to a version number identified in the key entry, where the set of software programs are distinguished by version number.
- 4. The method as defined in claim 1 wherein limiting use of the programs stored on the first non-volatile storage device based on the key entry on the second non-volatile storage device further comprises limiting use of a first software program after an expiration date identified in the key entry.
- 5. The method as defined in claim 1 wherein accessing a key entry stored on the second non-volatile storage device further comprises reading the key entry from the second non-volatile storage device across an interface bus.
- 6. The method as defined in claim 5 wherein second non-volatile storage device further comprises a read only memory (ROM) device.
- 7. The method as defined in claim 6 wherein reading the key entry from the ROM device across an interface bus further comprises reading a serial electrically erasable programmable read only memory (serial EEPROM) across a Serial Peripheral Interface (SPI) bus.
- 8. A system for selectively allowing use of embedded comprising:
a microcontroller; a first non-volatile storage device coupled to the microcontroller, the first non-volatile storage device storing a plurality of programs executable by the microcontroller, the plurality of programs comprising at least a program to perform flow calculations, a program to perform PLC functions, and a program to perform RTU functions; a second non-volatile storage device coupled to the microcontroller by way of an interface bus, the second non-volatile storage device storing software license information; and wherein the microcontroller is adapted to refrain from executing at least one of the plurality of programs on the first non-volatile storage device if the software license information on the second non-volatile storage device does not contain an entry allowing use.
- 9. The system as defined in claim 8 wherein the second non-volatile storage device further comprises a read only memory (ROM) device.
- 10. The system as defined in claim 9 wherein the interface bus further comprises a serial interface bus.
- 11. The system as defined in claim 10 wherein the ROM device further comprises a serial electrically erasable programmable read only memory (serial EEPROM).
- 12. The system as defined in claim 10 wherein the serial interface bus further comprises a Serial Peripheral Interface (SPI) bus.
- 13. The system as defined in claim 12 wherein the serial EEPROM further comprises a part number 25LC040-I device manufactured by Microchip Technology Incorporated.
- 14. The system as defined in claim 10 wherein the serial interface bus further comprises an Inter-Integrated Circuit (I2C) bus.
- 15. The system as defined in claim 8 wherein the second ROM device further comprises a flash ROM device.
- 16. A gas flow measurement computer comprising:
a microcontroller; a non-volatile storage device coupled to the microcontroller, the non-volatile storage device storing a gas flow measurement software program executable by the microcontroller; a read only memory (ROM) device coupled to the microcontroller by way of an interface bus, the ROM device storing a string of bytes that indicate a number of instances the gas flow measurement software program that may run on the microcontroller; and wherein the microcontroller accesses the string of bytes on the ROM device and limits the number of instances of the gas flow measurement software program to the number indicated in the string of bytes.
- 17. The gas flow measurement computer as defined in claim 16 wherein the microcontroller further comprises a Motorola® microcontroller model number MPC862SR.
- 18. The gas flow measurement computer as defined in claim 16 wherein the interface bus further comprises a serial interface bus.
- 19. The gas flow measurement computer as defined in claim 18 wherein the ROM device further comprises a serial electrically erasable programmable read only memory (serial EEPROM).
- 20. The gas flow measurement computer as defined in claim 19 wherein the serial interface bus further comprises a Serial Peripheral Interface (SPI) bus.
- 21. The gas flow measurement computer as defined in claim 20 wherein the serial EEPROM further comprises a model number 25LC040-I manufactured by Microchip Technology Incorporated.
- 22. The gas flow measurement computer as defined in claim 16 wherein the non-volatile storage device further comprises a read only memory device.
- 23. A method of manufacturing an integrated functionality control system comprising:
manufacturing an embedded microcontroller based control system comprising a microcontroller, a non-volatile storage device coupled to the microcontroller, and an interface bus coupled to the microcontroller; loading a plurality of software programs on the non-volatile storage device at the time of manufacture of the embedded microcontroller based control system; coupling a license key to the interface bus, the license key containing software licensing information; and allowing, selectively, use of the plurality of software programs based on the software licensing information.
- 24. The method of manufacturing an integrated functionality control system as defined in claim 23 wherein loading a plurality of software programs on the non-volatile storage device at the time of manufacture of the embedded microcontroller based control system further comprises:
loading a volumetric gas flow calculation program; loading a sequence logic implementation program; and loading a communications program.
- 25. The method of manufacturing an integrated functionality control system as defined in claim 24 wherein allowing, selectively, use of the plurality of software programs based on the software licensing information further comprises allowing up to a specified quantity, based on the licensing information on the license key, of instances of the volumetric gas flow calculation program executing on the microcontroller.
- 26. The method of manufacturing an integrated functionality control system as defined in claim 24 wherein allowing, selectively, use of the plurality of software programs based on the software licensing information further comprises allowing the sequence logic implementation program to execute fully if authorized by the licensing information on the license key.
- 27. The method of manufacturing an integrated functionality control system as defined in claim 24 wherein allowing, selectively, use of the plurality of software programs based on the software licensing information further comprises allowing the communications program to execute fully if authorized by the licensing information on the license key.
- 28. A method of managing software licensing on an embedded microcontroller based system comprising:
coupling a first license key, having a key entry, to a microcontroller by way of an interface bus; coupling a second license key, having a key entry, to the microcontroller by way of the interface bus; limiting use of software on the embedded microcontroller based system based on the key entries of the first and second license keys; and relocating one of the key entries to a different key.
- 29. The method of managing software licensing on an embedded microcontroller based system as defined in claim 28 wherein relocating one of the key entries to a different key further comprises merging the key entry from the second license key with the key entry on the first license key.
- 30. The method of managing software licensing on an embedded microcontroller based system as defined in claim 29 wherein merging the key entry from the second license key with the key entry on the first license key further comprises merging the key entry, licensing a first quantity, of the first license key with the key entry, licensing a second quantity, of the second license key to be a single key entry on one of the first and second license keys.
- 31. The method of managing software licensing on an embedded microcontroller based system as defined in claim 28 wherein relocating one of the key entries to a different key further comprises splitting the key entry from the first license key to reside partially on the first license key, and partially on the second license key.
- 32. The method of managing software licensing on an embedded microcontroller based system as defined in claim 31 wherein splitting the key entry from the first license key to reside partially on the first license key and partially on the second license key further comprises:
dividing a quantity of a key entry of the first license key; thereby creating a first key entry on the first license key, and a second key entry on the first license key, each of the first and second key entries having a quantity; and moving the second key entry to the second license key.
- 33. The method of managing software licensing on an embedded microcontroller based system as defined in claim 28 wherein coupling a first license key, having a key entry, to a microcontroller by way of an interface bus further comprises coupling a read only memory (ROM) device to the microcontroller.
- 34. The method of managing software licensing on an embedded microcontroller based system as defined in claim 33 wherein coupling a read only memory (ROM) device to the microcontroller further comprises coupling a serial electrically erasable programmable read only memory (serial EEPROM) to the microcontroller by way of the interface bus.
- 35. The method of managing software licensing on an embedded microcontroller based system as defined in claim 34 wherein coupling a serial electrically erasable programmable read only memory (serial EEPROM) to the microcontroller by way of the interface bus further comprises coupling the serial EEPROM to the microcontroller by way of a Serial Peripheral Interface (SPI) bus.
- 36. The method of managing software licensing on an embedded microcontroller based system as defined in claim 33 wherein coupling a second license key, having a key entry, to the microcontroller by way of the interface bus further comprises coupling a second serial electrically erasable programmable read only memory (serial EEPROM) to the microcontroller by way of the interface bus.
- 37. The method of managing software licensing on an embedded microcontroller based system as defined in claim 28 wherein limiting use of software on the embedded microcontroller based system based on the key entries of the first and second license keys further comprises limiting a number of instances of use of a first software program based on the key entries of the first and second license keys.
- 38. The method of managing software licensing on an embedded microcontroller based system as defined in claim 28 wherein limiting use of software on the embedded microcontroller based system based on the key entries of the first and second license keys further comprises limiting use of a set of software programs distinguished by version number to a version number identified in the key entries of the first and second license keys.
- 39. The method of managing software licensing on an embedded microcontroller based system as defined in claim 28 wherein limiting use of software on the embedded microcontroller based system based on the key entries of the first and second license keys further comprises limiting use of a first software program after an expiration date identified in one of the key entries of the first and second license keys.
- 40. A method comprising:
executing software programs on an embedding microcontroller based control system; licensing use of the software programs by a non-volatile storage device coupled to the microcontroller, the microcontroller checking for software licenses on the non-volatile storage device before executing programs; and upgrading the software licenses comprising:
entering an encrypted upgrade string into the embedded microcontroller based control system; decrypting the upgrade string; and therewith changing the software licenses on the non-volatile storage device.
- 41. The method as defined in claim 40 further comprising, before the entering the encrypted upgrade string step:
reading a parameter stored on the non-volatile storage device; and providing the parameter stored on the non-volatile storage to an entity generating the upgrade string.
- 42. The method as defined in claim 41 wherein reading a parameter stored on the non-volatile storage device further comprises:
reading a hardware identification number stored on the non-volatile storage device; and reading a state number stored on the non-volatile storage device.
- 43. The method as defined in claim 41 further comprising, between the decrypting step and the changing step, verifying that the parameter stored on the non-volatile storage device matches a corresponding parameter contained in the upgrade string.
- 44. The method as defined in claim 43 wherein changing the software licenses on the ROM device further comprises changing software licenses on the non-volatile storage device only if the parameter stored on the non-volatile storage device matches the corresponding parameter contained in the upgrade string.
- 45. The method as defined in claim 44 wherein reading a parameter stored on the non-volatile storage device further comprises:
reading a hardware identification number stored on the non-volatile storage device; and reading a state number stored on the non-volatile storage device.
- 46. The method as defined in claim 45 wherein verifying that the parameter stored on the non-volatile storage device matches a corresponding parameter contained in the upgrade string further comprises:
verifying that the hardware identification number stored on the non-volatile storage device matches a corresponding hardware identification number contained in the upgrade string; and verifying that the state number stored on the non-volatile storage device matches a corresponding state number contained in the upgrade string.
- 47. The method as defined in claim 46 further comprising, after the changing the software licenses on the non-volatile storage device step, writing a new state number to the non-volatile storage device.
- 48. A method of upgrading software licenses for software contained in embedded microcontroller based systems, the method comprising:
requiring a user of the embedded microcontroller based system to provide a parameter from a read only memory (ROM) device within the embedded microcontroller based system; combining updated software license information with the parameter from the ROM device to produce an upgrade string; sending the upgrading string to the user of the embedded microcontroller based system; and having the end user enter the upgrade sting into the embedded microcontroller based system to upgrade software licenses.
- 49. The method as defined in claim 48 wherein combining updated software license information with the parameter from the ROM device to produce an upgrade string further comprises encrypting the updated software license information and the parameter from the ROM device.
- 50. The method as defined in claim 48 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by electronic mail.
- 51. The method as defined in claim 48 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by post office mail.
- 52. The method as defined in claim 48 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by facsimile.
- 53. The method as defined in claim 48 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by voice communications.
- 54. The method as defined in claim 48 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by web based generation and delivery.
- 55. The method as defined in claim 48 wherein requiring a user of the embedded microcontroller based system to provide a parameter from a ROM device within the embedded microcontroller based system further comprises requiring the user of the embedded microcontroller to provide a hardware identification number and state number from the ROM device.
- 56. The method as defined in claim 55 wherein combining updated software license information with the parameter from the ROM device to produce an upgrade string further comprises encrypting the updated software license information, the hardware identification number and the state number to produce the upgrade string.
- 57. The method as defined in claim 56 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by electronic mail.
- 58. The method as defined in claim 56 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by post office mail.
- 59. The method as defined in claim 56 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by facsimile.
- 60. The method as defined in claim 56 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by voice communications.
- 61. The method as defined in claim 56 wherein sending the upgrading string to the user of the embedded microcontroller based system further comprises sending the upgrade string to the user by web based generation and delivery.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to application Ser. No. ______ (Att'y Docket No. 1787-70700) titled “In-Place Dynamically Resizable Persistent Historical Database,” incorporated by reference herein as if reproduced in full below.