專利名稱:通過數(shù)據(jù)緩沖提高eeprom使用壽命的方法
通過數(shù)據(jù)緩沖提高EEPROM使用壽命的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式技術(shù)領(lǐng)域,特別是針對在EEPROM存儲器上存儲數(shù)據(jù)時,由 于受到器件本身特性的限制,在對某一單元存儲數(shù)據(jù)達(dá)到一定次數(shù)以后該單元會失效的問 題提出的一種通過數(shù)據(jù)緩沖提高EEPROM使用壽命的方法。
背景技術(shù):
現(xiàn)有技術(shù)在嵌入式系統(tǒng)在初始化時配置系統(tǒng)各個模塊,初始化外部存儲器設(shè)備 后,確認(rèn)訪問存儲器的首地址和存儲空間大小,獲得程序工作時所需要相應(yīng)的訪問地址。 電可擦寫可編程只讀存儲器 EEPROM(ElectricalIyErasable Programmable Read-Only Memory)是一種掉電后數(shù)據(jù)不丟失的只讀存儲芯片。其做為系統(tǒng)的一個存儲設(shè)備之一,一般 操作直接將主芯片對EEPROM存儲器內(nèi)部空間進(jìn)行尋址。而一個嵌入式軟件系統(tǒng)需要保存 的參數(shù)數(shù)據(jù)中,往往只有某些數(shù)據(jù)塊是易變的,而其它數(shù)據(jù)則是相對不常變更的;這些易變 的數(shù)據(jù)參數(shù)一般表現(xiàn)為軟件上定義的某些變量;數(shù)據(jù)結(jié)構(gòu)固定,在不使用任何軟件技術(shù)的 情況下,寫入的地址也是固定的,這就容易造成EEPROM中某個固定的單元反復(fù)的擦除/寫 入。EEPROM的每個單元一般只能保證承受十萬次的擦除/寫入,當(dāng)有某個單元達(dá)到擦寫的 次數(shù)極限,而無法對這個單元進(jìn)行擦寫時,就意味著這個EEPROM的使用壽命已經(jīng)結(jié)束。所 以一個定時保存數(shù)據(jù)到EEPROM的嵌入式系統(tǒng)需要考慮EEPROM的壽命。
發(fā)明內(nèi)容鑒于上述技術(shù)的不足,本發(fā)明的目的是提供一種通過數(shù)據(jù)緩沖提高EEPROM使用 壽命的方法。為實現(xiàn)上述的目的,本發(fā)明采用以下方案實現(xiàn)一種通過數(shù)據(jù)緩沖提高EEPROM使 用壽命的方法,其特征在于使用環(huán)形緩沖區(qū)保存數(shù)據(jù),所述環(huán)形緩沖區(qū)包括復(fù)數(shù)個環(huán)形數(shù) 據(jù)緩沖區(qū)和與各環(huán)形數(shù)據(jù)緩沖區(qū)一一對應(yīng)大小相同且具有的相同指針操作的環(huán)形狀態(tài)緩 沖區(qū);具體按以下步驟實現(xiàn)步驟10、初始化該環(huán)形緩沖區(qū);步驟20、將需保存的數(shù)據(jù)按順序?qū)懭氕h(huán)形數(shù)據(jù)緩沖區(qū),使所述環(huán)形數(shù)據(jù)緩沖區(qū)的 每個存儲單元都均勻循環(huán)使用;步驟30、在所述的復(fù)數(shù)個環(huán)形數(shù)據(jù)緩沖區(qū)分別提供一指針指向最后寫入數(shù)據(jù)的存 儲單元的位置,并在所述的狀態(tài)緩沖區(qū)存儲一數(shù)值,該數(shù)值等于對應(yīng)的環(huán)形數(shù)據(jù)緩沖區(qū)最 后寫入位置的地址值加1 ;步驟40、當(dāng)系統(tǒng)復(fù)位后,系統(tǒng)讀取狀態(tài)緩沖區(qū)的數(shù)值,并將需保存的數(shù)據(jù)寫入指針 指向該數(shù)值對應(yīng)的數(shù)據(jù)緩沖區(qū)的位置。本發(fā)明具有如下優(yōu)點(diǎn)可以使EEPROM的每個單元都承受到十萬次擦除/寫入,另 外當(dāng)系統(tǒng)在一個復(fù)位環(huán)境中,如電源失效的情況,系統(tǒng)能夠再次正確找到環(huán)形緩沖區(qū)的位 置,實現(xiàn)了在EEPROM中持久的保存參數(shù)的同時保證數(shù)據(jù)存儲的安全高效。
圖1是本發(fā)明實施例的環(huán)形緩沖區(qū)的結(jié)構(gòu)圖。圖2是本發(fā)明實施例復(fù)位后找出數(shù)據(jù)緩沖區(qū)的當(dāng)前位置的程序流程圖。圖3是本發(fā)明EEPROM讀環(huán)形緩沖區(qū)的程序流程圖。圖4是本發(fā)明EEPROM寫環(huán)形緩沖區(qū)的程序流程圖。
具體實施方式下面結(jié)合附圖及實施例對本發(fā)明做進(jìn)一步說明。本發(fā)明提供一種通過數(shù)據(jù)緩沖提高EEPROM使用壽命的方法,其特征在于使用環(huán) 形緩沖區(qū)保存數(shù)據(jù),如圖1所示,是實施例的環(huán)形緩沖區(qū)的結(jié)構(gòu)示意圖,由該圖可知,所述 環(huán)形緩沖區(qū)包括復(fù)數(shù)個環(huán)形數(shù)據(jù)緩沖區(qū)和與各環(huán)形數(shù)據(jù)緩沖區(qū)一一對應(yīng)大小相同且具有 的相同指針操作的環(huán)形狀態(tài)緩沖區(qū);具體按以下步驟實現(xiàn)步驟10,初始化該環(huán)形緩沖區(qū);步驟20,將需保存的數(shù)據(jù)按順序?qū)懭氕h(huán)形數(shù)據(jù)緩沖區(qū),使所述環(huán)形數(shù)據(jù)緩沖區(qū)的 每個存儲單元都均勻循環(huán)使用;步驟30,在所述的復(fù)數(shù)個環(huán)形數(shù)據(jù)緩沖區(qū)分別提供一指針指向最后寫入數(shù)據(jù)的存 儲單元的位置,并在所述的狀態(tài)緩沖區(qū)存儲一數(shù)值,該數(shù)值等于對應(yīng)的環(huán)形數(shù)據(jù)緩沖區(qū)最 后寫入位置的地址值加1 (該數(shù)值表示記錄數(shù)據(jù)緩沖區(qū)可用的最后地址值,加1只是邏輯上 需要在寫入數(shù)據(jù)的基礎(chǔ)上算出未占用數(shù)據(jù)空間的位置);步驟40,當(dāng)系統(tǒng)復(fù)位后,系統(tǒng)讀取狀態(tài)緩沖區(qū)的數(shù)值,并將需要保存的數(shù)據(jù)寫入指 針指向該數(shù)值對應(yīng)的數(shù)據(jù)緩沖區(qū)的位置。本發(fā)明在使用環(huán)形緩沖區(qū)在EEPROM中保存數(shù)據(jù),可以增加數(shù)據(jù)在EEPROM中保存 的次數(shù)。如果緩沖區(qū)有兩級,那么數(shù)據(jù)可以保存的次數(shù)就是單個EEPROM單元的兩倍。使用 這個方法增加環(huán)形緩沖區(qū)的大小就可以增加數(shù)據(jù)保存的次數(shù)。換句話說,將數(shù)據(jù)分散存儲 到多個EEPROM位置可以增加數(shù)據(jù)存儲的次數(shù)。當(dāng)使用環(huán)形緩沖區(qū)時,數(shù)據(jù)保存的次數(shù)等于 使用的環(huán)形緩沖區(qū)數(shù)量乘以單個EEPROM單元的次數(shù)。這里要說明的是,本發(fā)明提供狀態(tài)緩沖區(qū),是為了在電源掉電后恢復(fù)指針的位置, 這個環(huán)形狀態(tài)緩沖區(qū)不是用于保存特別的地址,只是一個“記號”顯示數(shù)據(jù)緩沖區(qū)的保存位 置狀態(tài)。因此,所述的環(huán)形數(shù)據(jù)緩沖區(qū)和環(huán)形狀態(tài)緩沖區(qū)具有相同的大小和相同的指針操 作,具體的復(fù)位后找出數(shù)據(jù)緩沖區(qū)的當(dāng)前位置的程序流程如圖2所示,首先先查找EEPROM 位置地址,其地址addr =狀態(tài)緩沖區(qū)起始地址,并判斷狀態(tài)緩沖區(qū)當(dāng)前地址是否等于狀態(tài) 緩沖區(qū)下一地址的值+1 ?是,則EEPROM位置地址addr =緩沖區(qū)的單元n+1,并返回繼續(xù)判 斷,否則EEPROM位置地址addr = EEPROM當(dāng)前位置地址addr減去緩沖區(qū)的大小值再減1, 再返回。請參照圖3和圖4,圖3、圖4是本實施例EEPROM讀/寫環(huán)形緩 沖區(qū)的程序流程 圖,當(dāng)寫入環(huán)形數(shù)據(jù)緩沖區(qū)時,環(huán)形狀態(tài)緩沖區(qū)也要同時更新所述的指針指向數(shù)據(jù)緩沖區(qū) 和狀態(tài)緩沖區(qū)的相同位置,狀態(tài)緩沖區(qū)的數(shù)值等于數(shù)據(jù)緩沖區(qū)最后寫入位置的地址值加1, 當(dāng)緩沖區(qū)從最后回繞到起始時也是這樣。系統(tǒng)復(fù)位后,就可以從環(huán)形狀態(tài)緩沖區(qū)中搜索,如果相鄰兩個單元的內(nèi)容之差大于1,就可以找出最后修改過的位置。這里要注意的是在第一次使用前需要初始化環(huán)形狀態(tài)緩沖區(qū)EEPR0M,因此,上述的步驟10是很重要。否則可能無法正確找到緩沖區(qū)最后更新的位置。這種問題只會發(fā)生于 在環(huán)形緩沖區(qū)完成漫游整個緩沖區(qū)之前被復(fù)位。最好的解決辦法是保證緩沖區(qū)被初始化, 在Flash擦除/編程時一起擦除/編程。值得一提的是,本發(fā)明的方法可通過ST Embedded Toolset R2. 1. 2開發(fā)環(huán)境編寫 程序代碼,可用以Sti5105為主芯片的數(shù)字電視機(jī)頂盒作為目標(biāo)設(shè)備,本發(fā)明的一 EEPROM 中包含有多個的環(huán)形數(shù)據(jù)緩沖區(qū)和與各環(huán)形數(shù)據(jù)緩沖區(qū)一一對應(yīng)大小相同且具有的相同 指針操作的環(huán)形狀態(tài)緩沖區(qū)。以上所述僅為本發(fā)明之較佳實施例,凡依本發(fā)明申請專利范圍所做之均等變化與 修飾,皆應(yīng)屬本發(fā)明之涵蓋范圍。
權(quán)利要求
一種通過數(shù)據(jù)緩沖提高EEPROM使用壽命的方法,其特征在于使用環(huán)形緩沖區(qū)保存數(shù)據(jù),所述環(huán)形緩沖區(qū)包括復(fù)數(shù)個環(huán)形數(shù)據(jù)緩沖區(qū)和與各環(huán)形數(shù)據(jù)緩沖區(qū)一一對應(yīng)大小相同且具有的相同指針操作的環(huán)形狀態(tài)緩沖區(qū);具體按以下步驟實現(xiàn)步驟10、初始化該環(huán)形緩沖區(qū);步驟20、將需保存的數(shù)據(jù)按順序?qū)懭氕h(huán)形數(shù)據(jù)緩沖區(qū),使所述環(huán)形數(shù)據(jù)緩沖區(qū)的每個存儲單元都均勻循環(huán)使用;步驟30、在所述的復(fù)數(shù)個環(huán)形數(shù)據(jù)緩沖區(qū)分別提供一指針指向最后寫入數(shù)據(jù)的存儲單元的位置,并在所述的狀態(tài)緩沖區(qū)存儲一數(shù)值,該數(shù)值等于對應(yīng)的環(huán)形數(shù)據(jù)緩沖區(qū)最后寫入位置的地址值加1;步驟40、當(dāng)系統(tǒng)復(fù)位后,系統(tǒng)讀取狀態(tài)緩沖區(qū)的數(shù)值,并將需保存的數(shù)據(jù)寫入指針指向該數(shù)值對應(yīng)的數(shù)據(jù)緩沖區(qū)的位置。
2.根據(jù)權(quán)利要求1所述的通過數(shù)據(jù)緩沖提高EEPR0M使用壽命的方法,其特征在于該 方法用以Sti5105為主芯片的數(shù)字電視機(jī)頂盒作為目標(biāo)設(shè)備。
全文摘要
本發(fā)明提供一種通過數(shù)據(jù)緩沖提高EEPROM使用壽命的方法,使用環(huán)形緩沖區(qū)緩沖保存數(shù)據(jù)的方法,使EEPROM的每個單元都均勻使用,并建立一個斷點(diǎn)復(fù)位機(jī)制保證該方法的正常運(yùn)作。本發(fā)明可以使EEPROM的每個單元都承受到十萬次擦除/寫入,另外當(dāng)系統(tǒng)在一個復(fù)位環(huán)境中,如電源失效的情況,系統(tǒng)能夠再次正確找到環(huán)形緩沖區(qū)的位置,實現(xiàn)了在EEPROM中持久的保存參數(shù)的同時保證數(shù)據(jù)存儲的安全高效。
文檔編號G11C16/10GK101989459SQ201010521400
公開日2011年3月23日 申請日期2010年10月27日 優(yōu)先權(quán)日2010年10月27日
發(fā)明者郭鑫俊 申請人:福建新大陸通信科技股份有限公司