IP Library Granted Patent US 8,417,902
Granted Patent B2
US 8,417,902 · App. 12/185,932 · Granted Apr 9, 2013

One-time-programmable memory emulation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,417,902
App. No.
12/185,932
Granted
Apr 9, 2013
Kind
B2
Abstract

This document discloses one-time-programmable (“OTP”) memory emulation and methods of performing the same. OTP memory can be emulated by managing reads and writes to a memory array in response to an instruction to write data to a OTP memory location and selectively setting a security flag that corresponds to the memory locations. The memory array can be a NAND Flash memory array that includes multiple pages of memory. The memory array can be defined by memory blocks that can include multiple pages of memory. When an OTP write instruction is received, previously stored data can be read from a first page of memory, combined with the new data and stored to a target page of memory. A security flag can be set to prevent the target page from being reprogrammed prior to an erase.

Claims (48)

1. A method comprising:

receiving an instruction to write first data to a one-time-programmable memory location in a visible memory segment, wherein the visible memory segment comprises a plurality of memory locations;

identifying the memory segment that corresponds to the visible memory segment, wherein identifying the memory segment that corresponds to the visible memory segment comprises identifying a memory segment that is associated with a security indicator;

retrieving previously stored data from a first memory segment that has been identified as the visible memory segment;

storing the first data and the previously stored data to a target memory segment, the target memory segment being a different memory segment than the first memory segment; and

storing a security indicator in a security memory segment associated with the target memory segment that identifies the target memory segment as locked; and

updating a visible memory segment pointer with an address of the memory segment that is associated with the security indicator, wherein updating the visible memory segment pointer with the address of the memory segment that is associated with the security indicator comprises updating the visible memory segment pointer with a lowest address of a memory segment that is associated with the security indicator.

2. The method of claim 1 , further comprising:

erasing a memory block based on the visible memory segment pointer, wherein the memory block comprises a plurality of memory segments, and at least one of the plurality of memory segments includes the first memory segment.

3. The method of claim 2 , wherein erasing the memory block based on the visible segment pointer comprises erasing the memory block when the visible memory segment pointer identifies an address corresponding to a memory segment that is located in another memory block.

4. The method of claim 1 , wherein the first memory segment, the target memory segment, and the security memory segment comprise defined portions of a NAND Flash memory.

5. The method of claim 1 , further comprising determining whether the target memory segment has been programmed.

6. The method of claim 5 , wherein determining whether the target memory segment has been programmed comprises:

comparing a value of the security memory segment that is associated with the target memory segment to a first defined value; and

comparing a value of the target memory segment to a second defined value.

7. A one-time-programmable emulation system, comprising:

a visible segment identification module to identify a first memory segment that corresponds to a visible memory segment for a peripheral device, wherein the visible memory segment comprises a plurality of memory locations and the first memory segment is a memory segment that is associated with a security flag;

a program module to:

receive instructions to write first data to a one-time-programmable memory location in the visible memory segment;

read data previously stored in the first memory segment that corresponds to the visible memory segment; and

store the data read from the visible memory segment and the first data in a target memory segment; and

a security module to:

set a security flag in a security memory segment corresponding to the target memory segment that identifies the target memory segment as a locked memory segment; and

update a visible memory segment pointer with a lowest address of a memory segment that is associated with the security flag.

8. The system of claim 7 , wherein the program module is operable to erase a memory block when the visible memory segment is located in another memory block.

9. The system of claim 7 , further comprising a segment integrity module to determine if the target segment is programmed.

10. The system of claim 9 , wherein the segment integrity module is operable to compare a value of the security memory segment that is associated with the target memory segment to a first defined value.

11. The system of claim 10 , wherein the segment integrity module is operable to compare a value of the target memory segment to a second defined value.

12. A one-time-programmable emulation device, comprising:

means for receiving an instruction to write first data to a one-time-programmable memory location in a visible memory segment, wherein the visible memory segment comprises a plurality of memory locations;

means for identifying a first memory segment that corresponds to the visible memory segment, the first memory segment being a memory segment that is associated with a security indicator;

means for retrieving previously stored data from the first memory segment that corresponds to the visible memory segment;

means for storing the first data and the previously stored data to a target memory segment;

means for storing a security indicator in a security memory segment associated with the target memory segment that identifies the target memory segment as locked; and

means for updating a visible memory segment pointer with a lowest address of a memory segment that is associated with the security indicator.

13. A method, comprising:

receiving an instruction to write first data to a one-time-programmable memory location in a visible memory segment, wherein the visible memory segment comprises a plurality of one-time-programmable memory locations;

identifying a first memory segment that corresponds to the visible memory segment, the first memory segment being a memory segment that is associated with a security indicator;

retrieving previously stored data from the first memory segment that corresponds to the visible memory segment;

storing the first data and the previously stored data to a target memory segment;

storing a security indicator in a security memory segment associated with the target memory segment that identifies the target memory segment as locked; and

updating a visible memory segment pointer with a lowest address of a memory segment that is associated with the security indicator.

14. The method of claim 13 , further comprising erasing a memory block based on the visible memory segment pointer, wherein the memory block comprises a plurality of memory segments, and at least one of the plurality of memory segments includes the first memory segment.

15. The method of claim 14 , wherein erasing the memory block based on the visible segment pointer comprises erasing the memory block when the visible memory segment pointer identifies an address corresponding to a memory segment that is located in another memory block.

16. The method of claim 13 , further comprising determining whether the target memory segment has been programmed.

17. The method of claim 16 , wherein determining whether the target memory segment has been programmed comprises:

comparing a value of the security memory segment that is associated with the target memory segment to a first defined value; and

comparing a value of the target memory segment to a second defined value.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2010
From: ATMEL CORPORATION
To: ATMEL ROUSSET S.A.S.
Reel/Frame 024097/0324 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2008
From: KAABOUCH, MAJID; MARANINCHI, JEAN-PASCAL; LEFORT, CARINE
To: ATMEL CORPORATION
Reel/Frame 021524/0078 →