SPMA078 March 2021 TM4C1290NCPDT , TM4C1290NCPDT , TM4C1290NCZAD , TM4C1290NCZAD , TM4C1292NCPDT , TM4C1292NCPDT , TM4C1292NCZAD , TM4C1292NCZAD , TM4C1294KCPDT , TM4C1294KCPDT , TM4C1294NCPDT , TM4C1294NCPDT , TM4C1294NCZAD , TM4C1294NCZAD , TM4C1297NCZAD , TM4C1297NCZAD , TM4C1299KCZAD , TM4C1299KCZAD , TM4C1299NCZAD , TM4C1299NCZAD , TM4C129CNCPDT , TM4C129CNCPDT , TM4C129CNCZAD , TM4C129CNCZAD , TM4C129DNCPDT , TM4C129DNCPDT , TM4C129DNCZAD , TM4C129DNCZAD , TM4C129EKCPDT , TM4C129EKCPDT , TM4C129ENCPDT , TM4C129ENCPDT , TM4C129ENCZAD , TM4C129ENCZAD , TM4C129LNCZAD , TM4C129LNCZAD , TM4C129XKCZAD , TM4C129XKCZAD , TM4C129XNCZAD , TM4C129XNCZAD
All trademarks are the property of their respective owners.
The FEE driver uses two physical sectors of the EEPROM flash, which is 16 blocks or 1024 bytes for each dataset. The TM4C129 devices support up to six datasets. The size of the dataset determines how many images of the data can be stored in the 1024 bytes. This will then determine the supported write-erase endurance specification. The use of two sectors will allow retaining a valid copy of the data in the case of power loss or reset while trying to program or erase. The relationship between dataset size and supported write-erase endurance is shown in Table 1-1.
Dataset Maximum Size (Words) | Dataset Minimum Size (Words) | Supported Write-Erase Cycles | Number of Images |
---|---|---|---|
124 | 61 | 1M | 2 |
60 | 39 | 2M | 4 |
38 | 29 | 3M | 6 |
28 | 22 | 4M | 8 |
21 | 18 | 5M | 10 |
17 | 15 | 6M | 12 |
14 | 13 | 7M | 14 |
12 | 11 | 8M | 16 |
10 | 9 | 9M | 18 |
8 | 8 | 10M | 20 |
7 | 7 | 11M | 22 |
6 | 6 | 12M | 24 |
5 | 5 | 13M | 26 |
4 | 4 | 16M | 32 |
3 | 3 | 18M | 36 |
2 | 2 | 21M | 42 |
1 | 1 | 25M | 50 |
A flash emulated EEPROM driver
An instance of a dataset stored in a pair of sectors. Only one image in the sector-pair is the most recent image and it holds the current data for that dataset.
The EEPROM of the TM4C129x device is composed of a bank of split gate flash. The flash cells have an intrinsic write-erase endurance of more than 100,000 cycles. The bank is implemented with 13 sectors. Twelve sectors are used for data and the thirteenth is used for the copy buffers. A sector is the smallest amount that can be erased at one time. Each of the twelve data sectors is broken into eight blocks. Each block holds 16 32-bit words (64 bytes). Within that block there are actually storage locations for seven images of the 16 words, with additional flash control bits to identify which of the seven images holds the valid data.
In normal operation, the EEPROM hardware state-machine keeps track of which of the seven images of a word are valid. When the program tries to update a word the eighth time, the word is initially written into the copy sector. Then the current value of each of the other 127 words ((16 words x 8 blocks) – 1) is also copied to the copy sector. The data sector is then erased, and the data in the copy sector is programmed into the first image of the data sector.
The copy sector, like the data sectors, has multiple images. There are 12 image locations in the copy sector. That means that before the thirteenth time a data sector must be erased, the copy sector must be erased to prepare more room. The hardware state-machine will initiate an erase of the copy sector the next time a data sector requires an erase. This results in a longer delay before the data can be stored in non-volatile memory.
In typical applications, different words are updated at varying frequencies. Since the word most often updated, may not be the one updated the most often within a stretch of seven updates, a conservative limit of 500,000 cycles is specified for the most often updated word in the sector.
When large amounts of data are written in a single sweep, the full 600,000 write-erase cycle advantage of the wear leveling can be achieved. Adding software wear leveling, even greater number of write-erase cycles are possible.
This project proposes a high endurance EEPROM model that combines software wear leveling with the hardware wear leveling for extended write-erase endurance. The plan is to use two physical sectors of the EEPROM flash, which is 16 blocks or 1024 bytes of the 6K bytes available. The use of two sectors will reduce the possibility of data loss when power is lost during programming or erase operations.
At the beginning of each dataset will be a control block that consists of the following four words: