Flash real-time operating system for small embedded applications
First Claim
1. A byte-oriented method of utilizing flash memory, the byte-oriented method comprising:
- writing a new byte of data corresponding to a first logical address to a current physical block in the flash memory identified by location data stored to a write pointer;
storing the location data stored by the write pointer to a previous physical block written with data bytes corresponding to the first logical address, wherein storing the location data stored by the write pointer to the previous physical block results in the current physical block being added to a linked list of physical blocks written with data bytes corresponding to the first logical address; and
incrementing the location data stored to the write pointer to identify an unwritten physical block immediately following the current physical block.
0 Assignments
0 Petitions
Accused Products
Abstract
A flash real time operating system for embedded applications employing flash memory is capable of storing and accessing individual bytes of data corresponding to a particular logical address in real time. The operating system writes data bytes to sequential physical blocks within the flash memory. Physical blocks written with data bytes corresponding to the same logical address are connected by a linked list, which is dynamically modified to reduce access times required to read and write data to the flash memory. The operating system also monitors the number of physical blocks written with data within each physical sector. When one physical sector reaches its storage capacity, the operating system transfers the physical blocks holding valid data from the old physical sector to a new, previously erased physical sector.
31 Citations
21 Claims
-
1. A byte-oriented method of utilizing flash memory, the byte-oriented method comprising:
-
writing a new byte of data corresponding to a first logical address to a current physical block in the flash memory identified by location data stored to a write pointer;
storing the location data stored by the write pointer to a previous physical block written with data bytes corresponding to the first logical address, wherein storing the location data stored by the write pointer to the previous physical block results in the current physical block being added to a linked list of physical blocks written with data bytes corresponding to the first logical address; and
incrementing the location data stored to the write pointer to identify an unwritten physical block immediately following the current physical block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of utilizing flash memory, the method comprising:
-
assigning logical address ranges to physical sectors, wherein each of the logical address ranges is assigned to one of the physical sectors, and wherein the physical sectors outnumber the logical address ranges resulting in some of the physical sectors being unassigned;
writing data bytes corresponding to a logical address range to physical blocks located within an assigned physical sector, wherein a set of physical blocks written with data bytes corresponding to a particular logical address within the logical address range are connected by a linked list corresponding to the particular logical address;
monitoring how many of the physical blocks within the assigned physical sector have been written with data;
assigning the logical address range to the new physical sector;
transferring valid data bytes stored in the physical blocks within the assigned physical sector to a new physical sector when the physical blocks within the assigned physical sector written with data exceeds a threshold value; and
erasing the assigned physical sector after valid data bytes have been transferred from the assigned physical sector to the new physical sector. - View Dependent Claims (11, 12, 13, 14)
-
-
15. An embedded system, comprising:
-
a flash memory comprising a plurality of physical sectors, each of the plurality of physical sectors including a plurality of physical blocks and a block index;
a controller connected to the flash memory and running an operating system, wherein the operating system includes;
means for writing new data corresponding to a first logical address to a current physical block in a first physical sector of the flash memory identified by location data stored to a write pointer;
means for storing the location data stored by the write pointer to an area of the block index corresponding to the first logical address if data corresponding to the first logical address has not been previously written to this sector;
means for storing the location data stored by the write pointer to a previously written physical block holding data corresponding to the first logical address if data corresponding to the first logical address has been previously written to the physical sector, wherein storing the location data stored by the write pointer to a previously written physical block holding data corresponding to the first logical address results in the current physical block being added to a linked list connecting physical blocks written with data corresponding to the first logical address; and
means for incrementing the location data stored by the write pointer to identify an unwritten physical block immediately following the current physical block. - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
Specification