延长EEPROM使用寿命的程序优化方法
文章原始地址:http://feotech.com/?p=67
EEPROM(Electrically Erasable Programmable Read一Only Memory)即電子擦除式只讀存儲器,它是一種非揮發性存儲器,與擦除式只讀存儲器(EPROM)類似,電源消失后,儲存的數據依然存在,要消除儲存在其中的內容,不是用紫外線照射方式,而是以電子信號直接消除即可。
正是由于EEPROM具有以上特點,該器件可廣泛應用于對數據存儲安全性及可靠性要求高的應用場合,如門禁考勤系統,測量和醫療儀表,非接觸式智能卡,稅控收款機,預付費電度表或復費率電度表、水表、煤氣表以及家電遙控器等應用場合。該類型存儲器在可靠數據存儲領域會獲得越來越廣泛的應用。
但是,EEPROM有固定的使用壽命,這是指某一位由1寫為O或由O寫為1的次數。不同廠家的產品,相同廠家不同型號、系列的產品,它們的壽命也不盡相同,100萬次為常見主流產品。假若某EEPROM壽命為100萬次,每秒擦寫一次,則其使用時間為1000000/(3600×24)=12天。這對于需要較長時間保存數據的應用場合,顯然不滿足要求。
1 延長EEPROM壽命的方法
一般應用中,要存儲的數據比較單一,EEPROM空間與要存儲的數據相比要大得多。為此,可采用一種利用存儲器空間延長EEPROM工作壽命的方法。
方法l:不固定數據存放的地址,而是用一個固定的基地址加上EEPROM內的一個單元的內容(即偏移地址)作為真正的地址;若發現存儲單元已壞(寫入和讀出的內容不同),則偏移地址加1,重新寫入。如果采用100倍的存儲器空間冗余,可將EEPROM的實際壽命延長100倍。
方法2:從第一個存儲單元開始存儲數據N次,然后轉到下一個單元再存N次,依次類推,當最后一個單元存放N次之后,再轉到第一個單元重新開始。本文推薦采用該法,因為上一種方法存在一個致命缺陷:當某一個EEPROM單元寫壞再用下一個單元時,原先存儲的數據就讀不出來了。本文后面的內容也依此作根據進行闡釋。
2 EEPROM數據儲存地址的確認
嵌入式系統中的EEPROM電源消失后,儲存的數據依然存在。確認數據所存地址是能夠正確將所存數據讀出的基本條件,但是掉電后再上電時如何確認數據的地址指針呢?可以采用以下的方法。
2.1 找最大數據法
查找EEPROM中的最大數據,就是掉電前最后一次存儲的數據。該法對于單片機來講,編程時程序量較大,可采用折半查找法或分塊查找法降低程序代碼量。
2.2用后還原法
循環將當前數據寫入EEPROM后,立即將前面的EEPROM空間都清0再上電,查找數據非0的EEPROM空間即可。有的單片機要求在寫入數據之前,必須將所有空間都恢復為OxFF,這樣查找非0xFF的數據空間即可。
2.3地址指針法
為每一個數據在EEPROM中設一個地址指針EE—ADR[i],這樣只要確認EEADR[i]數值即可找到相應數據。對于地址指針法有下述一些技巧。
①一個地址指針對應一個數據。該方法思路簡單,假設EEPROM空間可以存放50組數據和50個地址ADR[i],一組數據占用4個字節,一個地址占用1個字節,共250字節,在儲存數據時,使50個地址指向50組數據的首地址,且使小于變量i的ADR[i]都清零,或重新賦值為0xFF。查找數據時,找到非O或非0xFF的ADR[i],然后根據ADR[i]的值來確定數據的儲存地址即可。
②用兩個變量來記錄數據儲存的地址,ADDR一0LD和ADDILNEW分別標志當前數據讀出時的地址和新采集來的數據下一次要存儲的地址。
③用一個字節的EEPROM空間作為地址指針。此時,地址指針的數值總是和數據儲存的地址值相等,此種情況最具有技巧性,因為此時可以使用最少的地址指針,因而可以最大量的節省。EEPROM空間,從而延長EEP—ROM壽命。此方法的思路是:假設第O字節作為地址指針,當該指針值為1時,數據從第一個地址開始儲存;為2時,數據從第二個地址開始儲存,依此類推。
總結
以上是生活随笔為你收集整理的延长EEPROM使用寿命的程序优化方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Keil MDK在个别电脑上下载程序失败
- 下一篇: LDO和DC-DC的区别