<?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>8-bit MicrocontrollersのトピックRe: Managing Burned Out EEPROM segments</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153264#M8525</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello belskyc,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A way to keep track of bad EEPROM blocks might be to simply maintain a separate 100 byte array within either EEPROM or flash, to be written, but never erased.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The more difficult issue might be to sense when a particular EEPROM block has gone bad.&amp;nbsp; One possibility would be to verify the contents of an EEPROM block immediately after a write, and then attempt at least one additional erase/write cycle before marking the block as bad.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, this would not cater for a failure mode where the corruption of a bit state takes some time to occur after the write process.&amp;nbsp; I do not know enough about the failure mechanism to say whether this is a real possibility.&amp;nbsp; If this case needs to be allowed, you will probably need to maintain two data arrays so, that a comparison can be made prior to making use of the data.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Another factor that will need to be taken into account is the possibility of power loss occuring during the data update process.&amp;nbsp; You would need to ensure that the supply voltage does remain above the LVD level for the whole erase/write cycle (25 ms plus).&amp;nbsp; It is possible that you will need early warning of power loss to the input of the regulator and/or a larger bulk capacitance than usual at the output of the regulator.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 10 Nov 2009 10:17:58 GMT</pubDate>
    <dc:creator>bigmac</dc:creator>
    <dc:date>2009-11-10T10:17:58Z</dc:date>
    <item>
      <title>Managing Burned Out EEPROM segments</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153263#M8524</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I have an application using the DZ60A (8-bit uP) that is susceptible to EEPROM cells burning out due to exceeding the lifetime erase/write cycles of the EEPROM.&amp;nbsp; The value (I'll just call is "x" in this example) that I'm storing to EEPROM is 4-bytes, and I'm using the 4-byte mode of EEPROM.&amp;nbsp; Thus, I have created a two-dimensional array in EEPROM sized [100][4] where I can do a "rolling" routine writing "x" to the next arrary cell during every write.&amp;nbsp; This gives me approximately 5-million erase/cycles for "x".&amp;nbsp; My situation now is that I need a method to monitor and save the locations of any array cells that are burnt out.&amp;nbsp; Does anyone have any creative solutions for this type of application?&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;belskyc&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Nov 2009 07:48:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153263#M8524</guid>
      <dc:creator>belskyc</dc:creator>
      <dc:date>2009-11-10T07:48:44Z</dc:date>
    </item>
    <item>
      <title>Re: Managing Burned Out EEPROM segments</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153264#M8525</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello belskyc,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A way to keep track of bad EEPROM blocks might be to simply maintain a separate 100 byte array within either EEPROM or flash, to be written, but never erased.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The more difficult issue might be to sense when a particular EEPROM block has gone bad.&amp;nbsp; One possibility would be to verify the contents of an EEPROM block immediately after a write, and then attempt at least one additional erase/write cycle before marking the block as bad.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, this would not cater for a failure mode where the corruption of a bit state takes some time to occur after the write process.&amp;nbsp; I do not know enough about the failure mechanism to say whether this is a real possibility.&amp;nbsp; If this case needs to be allowed, you will probably need to maintain two data arrays so, that a comparison can be made prior to making use of the data.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Another factor that will need to be taken into account is the possibility of power loss occuring during the data update process.&amp;nbsp; You would need to ensure that the supply voltage does remain above the LVD level for the whole erase/write cycle (25 ms plus).&amp;nbsp; It is possible that you will need early warning of power loss to the input of the regulator and/or a larger bulk capacitance than usual at the output of the regulator.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Nov 2009 10:17:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153264#M8525</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2009-11-10T10:17:58Z</dc:date>
    </item>
    <item>
      <title>Re: Managing Burned Out EEPROM segments</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153265#M8526</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;bigmac wrote: You would need to ensure that the supply voltage does remain above the LVD level for the whole erase/write cycle (25 ms plus).&amp;nbsp; It is possible that you will need early warning of power loss to the input of the regulator and/or a larger bulk capacitance than usual at the output of the regulator.&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;And if taking that route, maybe you could change your approach and write to EEPROM only when you're about to lose power.&amp;nbsp; All other times, you keep that data in RAM.&amp;nbsp; That way you minimize total EEPROM writes, in the first place.&amp;nbsp; Just need to make it last long enough for the whole programming duration (e.g., supercapacitors).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm hoping some day we'll see MRAM instead of EEPROM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Nov 2009 16:21:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153265#M8526</guid>
      <dc:creator>tonyp</dc:creator>
      <dc:date>2009-11-10T16:21:54Z</dc:date>
    </item>
    <item>
      <title>Re: Managing Burned Out EEPROM segments</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153266#M8527</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;belskyc wrote: My situation now is that I need a method to monitor and save the locations of any array cells that are burnt out.&amp;nbsp; Does anyone have any creative solutions for this type of application?&amp;nbsp;&amp;nbsp;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I believe EEPROM (at least some types) is burned out at the bit level (not the byte level).&amp;nbsp; If that is indeed so (someone else might know better), you could use 7-bits for data and 1-bit for "bad" flag.&amp;nbsp; You will write the bad flag only once (from one to zero), when you feel the cell has had it.&amp;nbsp; When writing data, you always OR the bad flag bit with 1 to keep it in the erased state.&amp;nbsp; All that assuming the first sentence is valid.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Nov 2009 16:37:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153266#M8527</guid>
      <dc:creator>tonyp</dc:creator>
      <dc:date>2009-11-10T16:37:54Z</dc:date>
    </item>
    <item>
      <title>Re: Managing Burned Out EEPROM segments</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153267#M8528</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks bigmac and tonyp for all the input.&amp;nbsp; Great suggestions.&amp;nbsp; For this application, I didn't have the luxury of doing a hardware change to implement the LVD to store the critical values during power down, but I'm definitely going to keep this in mind for future applications - good idea.&amp;nbsp; I ended up going the route of creating a 12-byte word where I tracked burnt-out status of each EEPROM byte with a bit &amp;amp; mask&amp;nbsp;in the 12-byte word, thus I was able to track the necessary 96 bytes of EEPROM (I shrank from 100 bytes to 96 to fit the 96 bits).&amp;nbsp; This was a compromise of more complexity to save 100-byte memory to log burnt-out status down to 12-bytes to monitor the same.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks again for the suggestions - all good stuff.&lt;/P&gt;&lt;P&gt;~belskyc&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Nov 2009 03:39:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Managing-Burned-Out-EEPROM-segments/m-p/153267#M8528</guid>
      <dc:creator>belskyc</dc:creator>
      <dc:date>2009-11-18T03:39:15Z</dc:date>
    </item>
  </channel>
</rss>

