GB2348986A - Updating program components stored on one-time-programmable memory - Google Patents

Updating program components stored on one-time-programmable memory Download PDF

Info

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
Application number
GB9908563A
Other versions
GB9908563D0 (en
Inventor
Lawrence King
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsemi Semiconductor ULC
Original Assignee
Mitel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitel Corp filed Critical Mitel Corp
Priority to GB9908563A priority Critical patent/GB2348986A/en
Publication of GB9908563D0 publication Critical patent/GB9908563D0/en
Publication of GB2348986A publication Critical patent/GB2348986A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates 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)

  1. 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. 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. 3. The memory device of claim 2, wherein said volatile memory portion is Random Access Memory (RAM).
  4. 4. The memory device of claim 2, wherein said non-volatile memory portion is One Time Programmable (OTP) memory.
  5. 5. The memory device of claim 2, wherein said non-volatile memory portion is CD ROM.
GB9908563A 1999-04-15 1999-04-15 Updating program components stored on one-time-programmable memory Withdrawn GB2348986A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2231419A (en) * 1989-05-05 1990-11-14 Technophone Ltd Program-updating PROM

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2231419A (en) * 1989-05-05 1990-11-14 Technophone Ltd Program-updating PROM

Cited By (44)

* Cited by examiner, † Cited by third party
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)