4
\$\begingroup\$

We all know that the flash memories have data retention time of around 10..20 years.

But what if we need to design a device that has to work for 1000 years?

The obvious solution is to make a flash reprogramming once every 5..10 years, refreshing the charges in the memory cells. If the flash memory has 100K writing cycles life, it makes 500K..1M years retention time. Almost infinity.

But the obvious way is not always the right way.

So, is it possible to prolong the data retention time of the flash memories almost infinitely, by reflashing it every 5..10 years?

\$\endgroup\$
  • 1
    \$\begingroup\$ If you want to retain data for a very long time without changing it, why not a PROM? \$\endgroup\$ – pjc50 Nov 19 '16 at 8:33
  • \$\begingroup\$ The flash memories allows remote updating of the firmware. \$\endgroup\$ – johnfound Nov 19 '16 at 8:36
  • \$\begingroup\$ Would you be having any wet electrolytic capacitors in the circuit...? \$\endgroup\$ – Majenko Nov 19 '16 at 8:48
  • \$\begingroup\$ @Majenko Such a choice would be pretty unreasonable. Assume everything else in the circuit have longer life. \$\endgroup\$ – johnfound Nov 19 '16 at 8:54
  • 2
    \$\begingroup\$ Tin whiskers...? The point I am trying to make is that there are a million and one other things that could and probably would fail in your circuit over a thousand years, and the data retention of your flash is the least of your worries. \$\endgroup\$ – Majenko Nov 19 '16 at 9:11
6
\$\begingroup\$

Rewriting flash is indeed a mechanism to extend flash retention when your device is running in a high-temperature environment (at lower temperatures, flash retention is not so much a problem).

Texas Instrument's application report MSP430 Flash Memory Characteristics (which should also apply to all other NOR flash-based MCUs) says in section 4.2 ("Enhancing Flash Data Retention Time With Flash Refresh"):

As explained in the previous section, data retention time is very much dependent on the ambient temperature of the MSP430 application. One possible solution to enhance flash data retention is refreshing the flash contents from time to time with software.

In an ideal scenario, the application has idle time frames, where no external events must be observed. During such an idle time, the software can copy one flash segment into RAM or any other flash segment. After erasing the original segment, the content is copied back into the original segment. After such a flash refresh cycle, the data retention time for this segment restarts.
[...]
CAUTION
The application must ensure that flash refresh of a flash segment is not interrupted by a power failure.

\$\endgroup\$
  • 3
    \$\begingroup\$ Systems with dual flash are best at this. Copy from one block to another, perform a verify between the two blocks, switch the boot flag to the newly programmed block, and reboot. Rinse and repeat. \$\endgroup\$ – Majenko Nov 19 '16 at 9:05
0
\$\begingroup\$

Probably the use of refresh IS a good way to extend lifetime. Ferroelectric nonvolatile memory is said to be more durable, and other nonvolatile forms are in development.

Reflashing won't rejuvenate everything; some systems use dummy cells (which set the thresholds for multilevel discrimination), and aging dummy cells cannot be 'refreshed'. They aren't eraseable, they aren't even addressable, but they might discharge with the years just like data cells.

Spare blocks have also been employed to extend FLASH lifetime in some chips CAT24C256 in combination with self-checking internal codes.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.