GB2348986A - Updating program components stored on one-time-programmable memory - Google Patents
Updating program components stored on one-time-programmable memory Download PDFInfo
- Publication number
- GB2348986A GB2348986A GB9908563A GB9908563A GB2348986A GB 2348986 A GB2348986 A GB 2348986A GB 9908563 A GB9908563 A GB 9908563A GB 9908563 A GB9908563 A GB 9908563A GB 2348986 A GB2348986 A GB 2348986A
- Authority
- GB
- United Kingdom
- Prior art keywords
- program
- program components
- volatile memory
- replacement
- memory portion
- 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.)
- Withdrawn
Links
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/66—Updates of program code stored in read-only memory [ROM]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
A method of reprogramming a memory device incorporating a volatile memory portion RAM and a non-volatile memory OTP portion begins with the step of storing a plurality of program components F1-F6 in respective addresses of the non-volatile memory portion. One, or more, of the program components calls one, or more, other of the program components stored at a further one, or more, of the respective addresses. Next, a replacement program component F4' is stored in a replacement address of the nonvolatile memory portion to replace the one other of the program components stored at the further one F4 of the respective addresses. An initialization component then builds a vector table in the volatile memory portion of the respective addresses, searches the non-volatile memory portion for any replacement program component and, in response to finding one, or more, replacement program component, substitutes the replacement address for the further one of the respective addresses in the vector table, whereby the vector table identifies the respective addresses and the replacement address but not the further one of the respective addresses such that the one of the program components calls the one replacement program component.
Description
METHOD FOR UPDATING PROGRAM COMPONENTS STORED ON A ONE TIME
PROGRAMMABLE MEMORY
FIELD OF THE INVENTION
This invention relates in general to computer memory, and more particularly to a method for patching updated software/firmware/code stored in a One Time Programmable memory (OTP).
BACKGROUND OF THE INVENTION
One of the lowest cost memories available on the market is referred to as One Time
Programmable (OTP) memory. OTP memory is manufactured with all memory cells in one state (all ones or all zeros). The state of each memory cell can be changed for the purpose of programming or data storage from the initial state to the opposite state only once. The final state can never be changed back to the initial state. This programming capability makes it very inexpensive and straightforward to enter a control program, however patching or updating of the program is not easily accommodated since there is normally insufficient memory in an OTP device to support any replacement of program components. Therefore, once all of the OTP memory space has been used, the OTP memory is typically replaced with a new memory, and the old memory is discarded. Another alternative to OTP memory is the use of more expensive"FLASH"memory.
SUMMARY OF THE INVENTION
According to the present invention, a control program stored in OPT memory may be updated a number of times before the device needs to be discarded. The inventor has realized that since the cost of OTP memory is quite low, it is possible to design a product with more
OTP memory than is minimally required such that the extra memory can be used to store program patches. However, in order to do so, the base program must be stored in the OTP in such a manner that the patches are recognized and used when they are installed. To that end, the method according to the present invention utilizes Random Access Memory (RAM) to store a vector table of OTP memorv locations where executable program components (including patches) are stored. Consequently, when the OTP code is executed, individual program components access the vector table in order to call other executable components.
When a components is replaced (i. e. a patch is inserted to the OTP code), the vector table is updated in RAM so that the remainder of the program continues to execute properly, without any requirement to replace the entire program (and therefore also the OTP memory).
BRIEF DESCRIPTION OF THE DRAWINGS
A detailed description of the preferred embodiment of the present invention is provided herein below, with reference to the drawings in which:
Figure 1 is a schematic representation of computer memory comprising OTP memory for storing program code and a scratchpad RAM memory, in accordance with the prior art;
Figure 2 is a schematic representation of computer memory comprising OTP memory for storing program code and a scratchpad RAM memory configured in accordance with the present invention; and
Figure 3 is a schematic representation of the computer memory of Figure 2 after a program patch has been added to the code stored in the OTP memory.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
With reference to Figure 1, a conventional program memory is shown comprising an
OTP memory for storing program components Init, Main, F1, F2, F3, F4, F5 and F6, the remainder of the OTP memory being unused. It will be appreciated that the program components shown are for illustration purposes only. For example, according to the exemplary program shown, assume that the Initialize or boot sector (Init) calls Main, Main calls F1, F2, and F3, F1 calls F4, F2 calls F4, F3 calls F6 and F4 calls F5. In the event that the routine F4 has an error then a replacement function F4 prime (F4') cannot be inserted even though there is unused space in the OTP memory. This is due to the interdependencies of the other functions F 1. F2. If F I and F2 were replaced with versions which called F4' (i. e. FI' and F2') then the functions which are dependent on Fl and F would require replacement, and so on. Eventually the problem expands to the point where all modules need replacement and the OTP memory is discarded because there is insufficient unused space remaining in the
OTP memory.
According to the present invention the design of the program is changed (as shown in
Figure 2) so that the address of each function is stored in RAM in a vector table, which occupies very little memory. Whenever a function is called, the address of the function is taken from RAM. Hence, when F2 calls F4 it uses the address for F4 which is stored in RAM.
As demonstrated in Figure 3, when the OPT memory is patched (e. g. a replacement
F4'is added to the OTP), the vector table is updated so that future execution of the code results in addressing of the new component F4'rather than the original component F4, without affecting any other function calls. Specifically, during initialization the Init program first builds the standard vector table (containing a pointer to F4), and then searches the remainder of the OTP searching for replacement programs. When Init recognizes the presence of the replacement program F4'it replaces the vector to F4 with a vector to F4'.
After the replacement program F4'has been added to the vector table all routines which formerly called F4 now call F4' (i. e. F I and F2, although themselves unchanged, now call F4'). Hence, the use of a vector table makes it possible to patch/update a program stored in OTP.
It is contemplated that the memories configured according to the present invention may have far ranging applications, including but not limited to, automotive control systems (e. g. fuel injection, ignition control), elevator control programs, air conditioning control programs, digital telephone sets, etc.
Furthermore, it will be appreciated that, although a particular embodiment of the invention has been described and illustrated in detail, various changes and modifications may be made. For example, patches/updates may be applied to any other non-volatile storage which is capable storing but not removing information (e. g. CD-ROMs). All such changes and modifications may be made without departing from the sphere and scope of the invention as defined by the claims appended hereto.
Claims (5)
- What is claimed is: 1. A method of reprogramming a memory device incorporating a volatile memory portion and a non-volatile memory portion, comprising the steps of : storing a plurality of program components in respective addresses of said non-volatile memory portion, wherein at least one of said program components calls at least one other of said program components stored at a further one of said respective addresses : storing at least one replacement program component in at least one replacement address of said non-volatile memory portion to replace said at least one other of said program components stored at said further one of said respective addresses; building a vector table in said volatile memory portion of said respective addresses; and searching said non-volatile memory portion for said at least one replacement program component and in response substituting said replacement address for said further one of said respective addresses in said vector table, whereby said vector table identifies said respective addresses and said replacement address but not said further one of said respective addresses such that said at least one of said program components calls said at least one replacement program component.
- 2. A memory device comprising: a volatile memory portion for storing a vector table of program component addresses which are accessed by respective program components when calling other ones of said program components; and a non-volatile memory portion storing said program components including an initialization program component for building said vector table, searching for patches to predetermined ones of said program components, and substituting replacement addresses of said patches for said predeterrnined ones of said program components in said vector table. such that program calls are made to said patches identified by said replacement addresses in said vector table rather than to said predetermined ones of said program components.
- 3. The memory device of claim 2, wherein said volatile memory portion is Random Access Memory (RAM).
- 4. The memory device of claim 2, wherein said non-volatile memory portion is One Time Programmable (OTP) memory.
- 5. The memory device of claim 2, wherein said non-volatile memory portion is CD ROM.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9908563A GB2348986A (en) | 1999-04-15 | 1999-04-15 | Updating program components stored on one-time-programmable memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9908563A GB2348986A (en) | 1999-04-15 | 1999-04-15 | Updating program components stored on one-time-programmable memory |
Publications (2)
Publication Number | Publication Date |
---|---|
GB9908563D0 GB9908563D0 (en) | 1999-06-09 |
GB2348986A true GB2348986A (en) | 2000-10-18 |
Family
ID=10851539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
GB9908563A Withdrawn GB2348986A (en) | 1999-04-15 | 1999-04-15 | Updating program components stored on one-time-programmable memory |
Country Status (1)
Country | Link |
---|---|
GB (1) | GB2348986A (en) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003019362A3 (en) * | 2001-08-24 | 2004-10-07 | Koninkl Philips Electronics Nv | Upgrading software held in read-only storage |
WO2006109263A2 (en) * | 2005-04-15 | 2006-10-19 | Koninklijke Philips Electronics N.V. | System and method for upgrading and extending the functionality of published blu-ray disc titles |
WO2008137806A1 (en) | 2007-05-03 | 2008-11-13 | Tego Inc. | Multiple radio frequency network node rfid tag utilizing otp memory systems |
US8242911B2 (en) | 2006-12-11 | 2012-08-14 | Tego Inc. | Composite multiple RFID tag facility |
US8242908B2 (en) | 2005-12-09 | 2012-08-14 | Tego Inc. | Methods and systems of a multiple radio frequency network node RFID tag |
US8242907B2 (en) | 2005-12-09 | 2012-08-14 | Tego, Inc. | Multiple radio frequency network node RFID tag |
US8269630B2 (en) | 2005-12-09 | 2012-09-18 | Tego Inc. | Methods and systems of a multiple radio frequency network node RFID tag |
US8279065B2 (en) | 2005-12-09 | 2012-10-02 | Tego Inc. | Methods and systems of a multiple radio frequency network node RFID tag |
US8390456B2 (en) | 2008-12-03 | 2013-03-05 | Tego Inc. | RFID tag facility with access to external devices |
EP2778905A1 (en) * | 2013-03-15 | 2014-09-17 | Dialog Semiconductor B.V. | Integrated circuit with a patching function |
US8941470B2 (en) | 2005-12-09 | 2015-01-27 | Tego Inc. | Methods and systems of a radio frequency network node RFID tag with hardened memory system |
US8988223B2 (en) | 2005-12-09 | 2015-03-24 | Tego Inc. | RFID drive management facility |
US9117128B2 (en) | 2005-12-09 | 2015-08-25 | Tego, Inc. | External access to memory on an RFID tag |
US9361568B2 (en) | 2005-12-09 | 2016-06-07 | Tego, Inc. | Radio frequency identification tag with hardened memory system |
US9418263B2 (en) | 2005-12-09 | 2016-08-16 | Tego, Inc. | Operating systems for an RFID tag |
US9430732B2 (en) | 2014-05-08 | 2016-08-30 | Tego, Inc. | Three-dimension RFID tag with opening through structure |
US9542577B2 (en) | 2005-12-09 | 2017-01-10 | Tego, Inc. | Information RFID tagging facilities |
US9953193B2 (en) | 2014-09-30 | 2018-04-24 | Tego, Inc. | Operating systems for an RFID tag |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2231419A (en) * | 1989-05-05 | 1990-11-14 | Technophone Ltd | Program-updating PROM |
-
1999
- 1999-04-15 GB GB9908563A patent/GB2348986A/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2231419A (en) * | 1989-05-05 | 1990-11-14 | Technophone Ltd | Program-updating PROM |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003019362A3 (en) * | 2001-08-24 | 2004-10-07 | Koninkl Philips Electronics Nv | Upgrading software held in read-only storage |
WO2006109263A2 (en) * | 2005-04-15 | 2006-10-19 | Koninklijke Philips Electronics N.V. | System and method for upgrading and extending the functionality of published blu-ray disc titles |
WO2006109263A3 (en) * | 2005-04-15 | 2007-01-25 | Koninkl Philips Electronics Nv | System and method for upgrading and extending the functionality of published blu-ray disc titles |
US8988223B2 (en) | 2005-12-09 | 2015-03-24 | Tego Inc. | RFID drive management facility |
US8248239B2 (en) | 2005-12-09 | 2012-08-21 | Tego Inc. | Multiple radio frequency network node RFID tag |
US10691992B2 (en) | 2005-12-09 | 2020-06-23 | Tego, Inc. | RF tag with memory management |
US9117128B2 (en) | 2005-12-09 | 2015-08-25 | Tego, Inc. | External access to memory on an RFID tag |
US8242908B2 (en) | 2005-12-09 | 2012-08-14 | Tego Inc. | Methods and systems of a multiple radio frequency network node RFID tag |
US9390362B2 (en) | 2005-12-09 | 2016-07-12 | Tego, Inc. | Radio frequency identification tag with emulated multiple-time programmable memory |
US8248238B2 (en) | 2005-12-09 | 2012-08-21 | Tego Inc. | Multiple radio frequency network node RFID tag |
US9361568B2 (en) | 2005-12-09 | 2016-06-07 | Tego, Inc. | Radio frequency identification tag with hardened memory system |
US8253567B2 (en) | 2005-12-09 | 2012-08-28 | Tego Inc. | Multiple radio frequency network node RFID tag |
US8269630B2 (en) | 2005-12-09 | 2012-09-18 | Tego Inc. | Methods and systems of a multiple radio frequency network node RFID tag |
US8279065B2 (en) | 2005-12-09 | 2012-10-02 | Tego Inc. | Methods and systems of a multiple radio frequency network node RFID tag |
US8284055B2 (en) | 2005-12-09 | 2012-10-09 | Tego Inc. | Multiple radio frequency network node RFID tag |
US8294579B2 (en) | 2005-12-09 | 2012-10-23 | Tego Inc. | Multiple radio frequency network node RFID tag |
US8325011B2 (en) | 2005-12-09 | 2012-12-04 | Tego Inc. | Multiple radio frequency network node RFID tag |
US10430702B2 (en) | 2005-12-09 | 2019-10-01 | Tego, Inc. | RF tag network connectivity through gateway facility |
US8558699B2 (en) | 2005-12-09 | 2013-10-15 | Tego Inc. | Multiple radio frequency network node RFID tag |
US9858452B2 (en) | 2005-12-09 | 2018-01-02 | Tego, Inc. | Information RFID tagging facilities |
US8941470B2 (en) | 2005-12-09 | 2015-01-27 | Tego Inc. | Methods and systems of a radio frequency network node RFID tag with hardened memory system |
US8947233B2 (en) | 2005-12-09 | 2015-02-03 | Tego Inc. | Methods and systems of a multiple radio frequency network node RFID tag |
US9842290B2 (en) | 2005-12-09 | 2017-12-12 | Tego, Inc. | Flight-cycle sensor monitoring of aviation component |
US9710682B2 (en) | 2005-12-09 | 2017-07-18 | Tego, Inc. | Operating systems for an RFID tag |
US9594998B2 (en) | 2005-12-09 | 2017-03-14 | Tego, Inc. | Radio frequency identification tag with hardened memory system |
US8242907B2 (en) | 2005-12-09 | 2012-08-14 | Tego, Inc. | Multiple radio frequency network node RFID tag |
US9405950B2 (en) | 2005-12-09 | 2016-08-02 | Tego, Inc. | External access to memory on an RFID tag |
US9418263B2 (en) | 2005-12-09 | 2016-08-16 | Tego, Inc. | Operating systems for an RFID tag |
US9424447B2 (en) | 2005-12-09 | 2016-08-23 | Tego, Inc. | RFID tag facility with access to a sensor |
US9542577B2 (en) | 2005-12-09 | 2017-01-10 | Tego, Inc. | Information RFID tagging facilities |
US9465559B2 (en) | 2005-12-09 | 2016-10-11 | Tego, Inc. | System and method for emulating many time programmable memory |
US9471821B2 (en) | 2005-12-09 | 2016-10-18 | Tego, Inc. | External access to memory on an RFID tag |
US8242911B2 (en) | 2006-12-11 | 2012-08-14 | Tego Inc. | Composite multiple RFID tag facility |
EP2147399A1 (en) * | 2007-05-03 | 2010-01-27 | Tego Inc. | Multiple radio frequency network node rfid tag utilizing otp memory systems |
WO2008137806A1 (en) | 2007-05-03 | 2008-11-13 | Tego Inc. | Multiple radio frequency network node rfid tag utilizing otp memory systems |
EP2147399A4 (en) * | 2007-05-03 | 2011-05-11 | Tego Inc | Multiple radio frequency network node rfid tag utilizing otp memory systems |
US8390456B2 (en) | 2008-12-03 | 2013-03-05 | Tego Inc. | RFID tag facility with access to external devices |
US9600207B2 (en) | 2013-03-15 | 2017-03-21 | Dialog Semiconductor B.V. | Integrated circuit with a patching function |
EP2778905A1 (en) * | 2013-03-15 | 2014-09-17 | Dialog Semiconductor B.V. | Integrated circuit with a patching function |
US9430732B2 (en) | 2014-05-08 | 2016-08-30 | Tego, Inc. | Three-dimension RFID tag with opening through structure |
US9953193B2 (en) | 2014-09-30 | 2018-04-24 | Tego, Inc. | Operating systems for an RFID tag |
US10204244B2 (en) | 2014-09-30 | 2019-02-12 | Tego, Inc. | Data aggregating radio frequency tag |
US10445536B2 (en) | 2014-09-30 | 2019-10-15 | Tego, Inc. | Operating system for an RF tag |
US10891449B2 (en) | 2014-09-30 | 2021-01-12 | Tego, Inc. | Self-monitoring wireless computing device |
Also Published As
Publication number | Publication date |
---|---|
GB9908563D0 (en) | 1999-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
GB2348986A (en) | Updating program components stored on one-time-programmable memory | |
US6804772B2 (en) | Dynamic field patchable microarchitecture | |
US6205548B1 (en) | Methods and apparatus for updating a nonvolatile memory | |
US8259498B2 (en) | Continuous address space in non-volatile-memories (NVM) using efficient management methods for array deficiencies | |
US7472331B2 (en) | Memory systems including defective block management and related methods | |
KR101029938B1 (en) | Flash memory system startup operation | |
US6629259B2 (en) | Method for automatically duplicating a BIOS | |
US7644406B2 (en) | Update system capable of updating software across multiple FLASH chips | |
US7774382B2 (en) | Method and apparatus for configuring a control device, and corresponding control device | |
CN100367306C (en) | Nonvolatile memory card | |
KR20060012696A (en) | Flash memory for performing bad block management and method for performing bad block management of flash memory | |
US20090327650A1 (en) | Device and method for bypassing a first program code portion with a replacement program code portion | |
WO2010067347A1 (en) | Continuous address space in non-volatile-memories (nvm) using efficient management methods for array deficiencies | |
US20090070523A1 (en) | Flash memory device storing data with multi-bit and single-bit forms and programming method thereof | |
US20050207232A1 (en) | Access method for a NAND flash memory chip, and corresponding NAND flash memory chip | |
US6510083B1 (en) | Electrically erasable and programmable memory that allows data update without prior erasure of the memory | |
US8275929B2 (en) | Memory and operating method thereof | |
US6772364B1 (en) | Fault tolerant field updating with alternation of memory areas | |
US6646917B1 (en) | Storage device managing nonvolatile memory by converting logical address to physical address of nonvolatile memory | |
US20060230190A1 (en) | Method and apparatus for executing application in system having NAND flash memory | |
US20060282626A1 (en) | Memory device and method of controlling operation of the memory device | |
CN1858703A (en) | Starting method of device | |
US20040064634A1 (en) | Method of emulating electrically erasable memory in a motor vehicle microcontroller | |
US20050144408A1 (en) | Memory protection unit, memory protection method, and computer-readable record medium in which memory protection program is recorded | |
EP1244007A2 (en) | Dynamic microcode patching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WAP | Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1) |