Aging of Flash

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Aging of Flash

3,027 Views
AHoyle
Contributor I
I am using the flash in a HC908JB8 to store calibration data. My concern is if the user re-calibrates the device ten time a day the flash will reach it life span limit in approximately four years. Since I only need to store a few bytes, I was wondering, if I used a check sum to check the data had been stored OK, and if not I could use another bit of the flash to store the data.

My question is, which ages the flash the most erasing or programming? If it is programming could I use the next row in the same block, if the first one has failed? Or should I use the next block? Or would this approach just not work?

I know I could use an external EEPROM but physical space and component count is very limited. Note ambient temperatures should not be a problem 10 to 30 degrees expected.

Thanks in advance.
Labels (1)
0 Kudos
6 Replies

470 Views
bigmac
Specialist III
Hello,
 
Have a look at AN2346, where a method of distributing wear over a whole flash block is detailed.  Sample assembly code is also given.
 
I believe there are two restraints - the total number of program/erase cycles per byte within a block, and the total accumulated time that high voltage is applied to a row, between erases, should not exceed a certain limit.  It is OK to program different bytes in the same row, at different times.  The big no-no is that no one byte should be programmed more than once, without an intervening erase.
 
For the HC908QT/QY series (and I assume other HC908 of similar vintage) the row erase endurance is specified as minimum 10k cycles, and the row program endurance is specified as minimum 10k cycles - these are separate specifications.  The cumulative program HV period is 4 milliseconds maximum.
 
These figures would indicate, assuming four updates per day, and without wear distribution, a very conservative flash lifetime of about 7 years.
 
Regards,
Mac
 

Message Edited by bigmac on 2006-11-2301:07 AM

0 Kudos

470 Views
AHoyle
Contributor I
Thanks for all your comments.

From AN1831r1 it says the life time is last least 10000 cycles. At 10 re-calibrations a day assuming a 5 day week and 50 week year I should be able to expect 4 years if my maths is correct.

I original idea was to work one row of the flash to death then move on to the next row or block. However, thanks to Alban's reply I think I will now just fill up the flash starting from the block after my code. Then only erase this area when it is full. Since my code only uses 4K I should have about 4K to store the calibration data in. This should increase the life time of my device to 128 years assume the calibration data is 128 bytes. I think that should be long enough for me not to care!!

Thanks for all your help
0 Kudos

470 Views
bigmac
Specialist III
Hello,
 
It is probably a better idea to place your code after the flash blocks used for data storage, not before.  This way you can protect your code from spurious erasure using the block protect register.
 
Regards,
Mac
 
0 Kudos

470 Views
tonyp
Senior Contributor II


AHoyle wrote:
If it is programming could I use the next row in the same block, if the first one has failed? Or should I use the next block? Or would this approach just not work?

Like Alban implied, it's safer to wear out a block of Flash evenly, rather than wear a few bytes to death, and then attempt to use the following "brand new" bytes.
 
I don't know on what limit you based your calculations (or the JB8's limit), but most Flash is capable of about 100K write-erase cycles (both actions count as one towards the limit), so in your example you'll be good for at least 27 years.
0 Kudos

470 Views
peg
Senior Contributor IV
Hi Tony,
 
I have been shot down here for making blanket statements on this before.
It appears it depends on the type of FLASH.
Newer stuff approaches these levels but earlier generation FLASH is significantly less.
The JB8 is hardly new.
It appears older devices are still made the original way with the original flash type.
 
Regards
Peg
 
0 Kudos

470 Views
Alban
Senior Contributor II
Hi AHoyle,
 
Indeed an interesting question. I like these !
 
I certainly advise you the method you are suggesting of filling one block row by row and delete only once a page. Your algorithm could detect the first non-0xFF value as being the good one.
 
Also, completely non specified but the internal Flash will support much more than stated in the datasheet @25°C. Freescale does the Flash characterization across the WHOLE temperature range.
Th JB8, even if non Automotive, probably displays the same reliability numbers as a GZ60 qualified from -40°C to +125°C.
 
Don't bother with an external Flash....
 
Alban.
0 Kudos