552
Prolonging and Estimating EEPROM Life
© Tibbo Technology Inc.
Prolonging and Estimating EEPROM Life
Here are some ideas on prolonging the life of your EEPROM (this text assumes your
familiarity with the stor. object*):
·
Limit the number of updates you make to the EEPROM's data. For example, if you
are counting events, then do not write to the EEPROM every time you increment
the count. Instead, keep a counter variable in RAM and implement the EEPROM
update policy. For example, you may choose to update the EEPROM once for
every 100 increments of the RAM counter, or after x hours of inactivity.
·
Before writing data into an EEPROM location, read this location to see if it already
contains the data to be written. In EEPROMs, writing the same data into the same
location still counts as a write cycle!
·
Use a wear leveling scheme, in which you rotate your storage area through a
range of EEPROM addresses. For example, if you have a 32-bit counter, create an
array of 32-bit locations and rotate between these locations when incrementing
the counter. This one should be taken in conjunction with the next point...
·
When placing a frequently updated data into the EEPROM, try to keep this data
within sector boundaries. Like flash storage, EEPROMs
do
have sectors. Tibbo
devices with 2KB EEPROMs have 16-byte sectors. Devices with 256-byte EEPROMs
have 8-byte sectors. When you update the data in a portion of a sector, you are
actually wearing off the entire sector! When counting sector boundaries, take into
the account the stor.base property — it gives all your writes a fixed offset! For
example, on the EM1000 (2KB EEPROM), to write into the third sector of the
EEPROM, use stor.setdata(s,4), because stor.base=29 and 29+4=33, i.e. the first
location of the third 16-byte sector (stor. locations are counted from 1).
·
Use redundancy — keep two or more copies of your EEPROM data and protect the
data with checksums. Should one copy fail, there will be another copy to use.
This also helps against abrupt power failures. If the power is turned off while the
EEPROM write is in progress you may lose your data. Having a backup copy helps
in such situations.
·
Consider using our STG library* — it will save you a lot of headache in dealing with
EEPROM data.
When estimating the life of the EEPROM in your system, consider the following:
·
Always take into the account the underlying sector nature of EEPROM ICs. Writing
even a single byte into a sector reduces the lifespan of the entire sector.
·
Writing a string of several characters constitutes the number of write cycles equal
to the number of characters in that string. Executing stor.setdata("ABC",4) counts
as three write cycles, not one.
·
High ambient temperature reduces the life of EEPROMs.
·
All vendor estimates for the projected EEPROM life are probabilistic in nature. You
will encounter "stronger" and "weaker" specimen with vastly different endurance
levels. All in all, it is quite safe to assume that your EEPROM will last for at least 1
million write cycles per sector... and yet, there is no guarantee of that.
*
The stor. object and STG library are documented in the TIDE, TiOS, Tibbo BASIC,
and Tibbo C manual.