<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Aging of Flash --&amp;gt; Reliability in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137588#M4736</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi AHoyle,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Indeed an interesting question. I like these !&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;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.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Also, completely non specified but the internal Flash will support much more than stated in the datasheet @25°C. Freescale does the &lt;STRONG&gt;Flash characterization across the WHOLE temperature range&lt;/STRONG&gt;.&lt;/DIV&gt;&lt;DIV&gt;Th JB8, even if non Automotive, probably displays the same reliability numbers&amp;nbsp;as a GZ60 qualified from -40°C to +125°C.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Don't bother with an external Flash....&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Alban.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 22 Nov 2006 19:29:19 GMT</pubDate>
    <dc:creator>Alban</dc:creator>
    <dc:date>2006-11-22T19:29:19Z</dc:date>
    <item>
      <title>Aging of Flash</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137587#M4735</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;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?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Nov 2006 19:13:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137587#M4735</guid>
      <dc:creator>AHoyle</dc:creator>
      <dc:date>2006-11-22T19:13:46Z</dc:date>
    </item>
    <item>
      <title>Re: Aging of Flash --&gt; Reliability</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137588#M4736</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi AHoyle,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Indeed an interesting question. I like these !&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;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.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Also, completely non specified but the internal Flash will support much more than stated in the datasheet @25°C. Freescale does the &lt;STRONG&gt;Flash characterization across the WHOLE temperature range&lt;/STRONG&gt;.&lt;/DIV&gt;&lt;DIV&gt;Th JB8, even if non Automotive, probably displays the same reliability numbers&amp;nbsp;as a GZ60 qualified from -40°C to +125°C.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Don't bother with an external Flash....&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Alban.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Nov 2006 19:29:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137588#M4736</guid>
      <dc:creator>Alban</dc:creator>
      <dc:date>2006-11-22T19:29:19Z</dc:date>
    </item>
    <item>
      <title>Re: Aging of Flash</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137589#M4737</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;DIV&gt;AHoyle wrote:&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;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?&lt;BR /&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;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.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I don't know&amp;nbsp;on what limit you based your calculations (or the JB8's limit), but most Flash is capable&amp;nbsp;of about 100K write-erase cycles (both actions&amp;nbsp;count as one towards the limit), so in your example you'll be good for at least 27 years.&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Nov 2006 19:40:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137589#M4737</guid>
      <dc:creator>tonyp</dc:creator>
      <dc:date>2006-11-22T19:40:57Z</dc:date>
    </item>
    <item>
      <title>Re: Aging of Flash</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137590#M4738</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi Tony,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I have been shot down here for making blanket statements&amp;nbsp;on this before.&lt;/DIV&gt;&lt;DIV&gt;It appears it depends on the type of FLASH.&lt;/DIV&gt;&lt;DIV&gt;Newer stuff approaches these levels but earlier generation FLASH is significantly less.&lt;/DIV&gt;&lt;DIV&gt;The JB8 is hardly new.&lt;/DIV&gt;&lt;DIV&gt;It appears older devices are still made the original way with the original flash type.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regards&lt;/DIV&gt;&lt;DIV&gt;Peg&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Nov 2006 19:56:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137590#M4738</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2006-11-22T19:56:54Z</dc:date>
    </item>
    <item>
      <title>Re: Aging of Flash</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137591#M4739</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Have a look at AN2346, where a method of distributing wear over a whole flash block is detailed.&amp;nbsp; Sample assembly code is also given.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I believe there are two restraints - the total number of program/erase cycles per byte within a block, and&amp;nbsp;the total accumulated time that high voltage is applied to a row, between erases, should not exceed a certain limit.&amp;nbsp; It is OK to program different bytes in the same row, at different times.&amp;nbsp; The big no-no is that&amp;nbsp;no one byte should be programmed more than once, without an intervening erase.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;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.&amp;nbsp; The cumulative program HV period is 4 milliseconds maximum.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;These figures would indicate,&amp;nbsp;assuming four updates per day, and without wear distribution, a very conservative flash lifetime of about 7 years.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;Message Edited by bigmac on &lt;SPAN class="date_text"&gt;2006-11-23&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;01:07 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Nov 2006 22:41:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137591#M4739</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2006-11-22T22:41:16Z</dc:date>
    </item>
    <item>
      <title>Re: Aging of Flash</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137592#M4740</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Thanks for all your comments.&lt;BR /&gt;&lt;BR /&gt;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.&lt;BR /&gt;&lt;BR /&gt;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!!&lt;BR /&gt;&lt;BR /&gt;Thanks for all your help&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Nov 2006 01:10:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137592#M4740</guid>
      <dc:creator>AHoyle</dc:creator>
      <dc:date>2006-11-23T01:10:12Z</dc:date>
    </item>
    <item>
      <title>Re: Aging of Flash</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137593#M4741</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;It is probably a better idea to place your code &lt;U&gt;after&lt;/U&gt; the flash blocks used for data storage, not before.&amp;nbsp; This way you can protect your code from spurious&amp;nbsp;erasure using the block protect register.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Nov 2006 03:52:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Aging-of-Flash/m-p/137593#M4741</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2006-11-23T03:52:57Z</dc:date>
    </item>
  </channel>
</rss>

