本發(fā)明涉及存儲器技術(shù)領(lǐng)域,具體涉及一種存儲器的控制方法及裝置。
背景技術(shù):
電可擦可編程只讀存儲器(Electrically Erasable Programmable Read-Only Memory,EEPROM),是一種掉電后數(shù)據(jù)不丟失的存儲芯片。
在實(shí)際應(yīng)用中,向EEPROM中寫入數(shù)據(jù)時,每次寫入的數(shù)據(jù)頁數(shù)據(jù)寄存器長度的限制,因此,當(dāng)待存儲的數(shù)據(jù)長度超過頁數(shù)據(jù)寄存器長度即超過一頁時,需要通過多次的寫入操作才能完成對全部數(shù)據(jù)的存儲。
其中,在每次寫入操作中,通常先對目標(biāo)存儲區(qū)進(jìn)行擦除操作,再對擦除后的目標(biāo)存儲區(qū)進(jìn)行編程操作,即可完成該頁數(shù)據(jù)的寫入。具體地,如圖1所示,在對目標(biāo)存儲區(qū)進(jìn)行擦除操作時,目標(biāo)存儲區(qū)內(nèi)的數(shù)據(jù)狀態(tài)先由有效狀態(tài)轉(zhuǎn)變?yōu)椴欢顟B(tài),再由不定狀態(tài)轉(zhuǎn)變?yōu)椴脸隣顟B(tài),屆時擦除操作完成。在對目標(biāo)存儲區(qū)進(jìn)行編程操作時,目標(biāo)存儲區(qū)內(nèi)的數(shù)據(jù)狀態(tài)先由擦除狀態(tài)轉(zhuǎn)變?yōu)椴欢顟B(tài),再由不定狀態(tài)轉(zhuǎn)變?yōu)橛行顟B(tài),屆時編程操作完成。當(dāng)更新好該目標(biāo)存儲區(qū)后,以新的地址作為目標(biāo)存儲區(qū),重復(fù)上面的操作,實(shí)現(xiàn)對另一個目標(biāo)存儲區(qū)的數(shù)據(jù)更新操作。
然而,在數(shù)據(jù)的寫入過程中,當(dāng)目標(biāo)存儲區(qū)的數(shù)據(jù)狀態(tài)處于不定狀態(tài)或擦除狀態(tài)時,若寫入操作中斷,則會導(dǎo)致數(shù)據(jù)丟失的情況出現(xiàn)。
為了避免數(shù)據(jù)丟失的情況出現(xiàn),目前通常采用備份存儲的方法進(jìn)行數(shù)據(jù)存儲,即:將同一待寫入的數(shù)據(jù)先后分別寫入目標(biāo)存儲區(qū)和備份存儲區(qū),并使得二者中的數(shù)據(jù)狀態(tài)無論何時至少一個為有效狀態(tài)。也就是說,對于同一待寫入的數(shù)據(jù),先對目標(biāo)存儲區(qū)進(jìn)行擦除及編程操作,再對備份存儲區(qū)進(jìn)行擦除及編程操作,并保證二者中的數(shù)據(jù)狀態(tài)在任意時刻至少一個為有效狀態(tài)。
在上述數(shù)據(jù)存儲的過程中,當(dāng)數(shù)據(jù)長度為N頁時,需要分別進(jìn)行2N次擦除操作和2N次編程操作,才能完成對全部數(shù)據(jù)的存儲,擦寫次數(shù)過多以及 擦寫時間過長導(dǎo)致EEPROM的使用壽命縮短,向存儲器中寫入數(shù)據(jù)的速度降低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題是如何延長EEPROM的使用壽命并提高向存儲器中寫入數(shù)據(jù)的速度。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種存儲器的控制方法,所述存儲器包括第一區(qū)域及第二區(qū)域,所述第一區(qū)域及第二區(qū)域的存儲空間相同且均包括兩個以上的存儲單元,待存儲的數(shù)據(jù)至少占用兩個以上的存儲單元,每個存儲單元的數(shù)據(jù)存儲容量為一頁,所述第一區(qū)域及第二區(qū)域的存儲空間大于或等于所述待存儲的數(shù)據(jù)所占用的存儲空間,所述控制方法包括:
當(dāng)接收到所述待存儲的數(shù)據(jù)時,讀取所述存儲器的第一區(qū)域及第二區(qū)域內(nèi)的數(shù)據(jù);
選取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦除狀態(tài)的區(qū)域;
對所選取的區(qū)域中各個存儲單元執(zhí)行編程操作,將所述待存儲的數(shù)據(jù)寫入至所選取的區(qū)域;
當(dāng)將待存儲的數(shù)據(jù)寫入至所選取的區(qū)域后,對所述第一區(qū)域及第二區(qū)域中的另一剩余的區(qū)域執(zhí)行擦除操作,以進(jìn)行下一次的數(shù)據(jù)寫入。
可選地,所述方法還包括:
當(dāng)讀取到所述存儲器中不存在數(shù)據(jù)為擦除狀態(tài)的區(qū)域,但存在數(shù)據(jù)為不定狀態(tài)的區(qū)域時,對所述數(shù)據(jù)為不定狀態(tài)的區(qū)域執(zhí)行擦除操作,以將所述數(shù)據(jù)為不定狀態(tài)的區(qū)域轉(zhuǎn)變?yōu)閿?shù)據(jù)為擦除狀態(tài)的區(qū)域。
可選地,所述待存儲的數(shù)據(jù)包括:數(shù)據(jù)信息、所述數(shù)據(jù)的標(biāo)識信息及校驗(yàn)信息。
可選地,所述方法還包括:
當(dāng)所述第一區(qū)域及第二區(qū)域內(nèi)數(shù)據(jù)均處于有效狀態(tài)時,分別獲取每區(qū)數(shù)據(jù)中的標(biāo)識信息;
根據(jù)所述標(biāo)識信息判斷所述數(shù)據(jù)對應(yīng)的區(qū)域是否有效;
對無效的區(qū)域執(zhí)行擦除操作。
可選地,所述選取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦除狀態(tài)的區(qū)域,包括:
獲取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)的校驗(yàn)信息,根據(jù)所述校驗(yàn)信息選取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)是否為擦除狀態(tài)。
本發(fā)明實(shí)施例還提供了一種存儲器的控制裝置,所述存儲器包括第一區(qū)域及第二區(qū)域,所述第一區(qū)域及第二區(qū)域的存儲空間相同且均包括兩個以上的存儲單元,待存儲的數(shù)據(jù)至少占用兩個以上的存儲單元,每個存儲單元的數(shù)據(jù)存儲容量為一頁,所述第一區(qū)域及第二區(qū)域的存儲空間大于或等于所述待存儲的數(shù)據(jù)所占用的存儲空間,所述控制裝置包括:
讀取單元,適于當(dāng)接收到所述待存儲的數(shù)據(jù)時,讀取所述存儲器的第一區(qū)域及第二區(qū)域內(nèi)的數(shù)據(jù);
選取單元,適于選取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦除狀態(tài)的區(qū)域;
編程單元,適于對所選取的區(qū)域中各個存儲單元執(zhí)行編程操作,將所述待存儲的數(shù)據(jù)寫入至所選取的區(qū)域;
擦除單元,適于當(dāng)將待存儲的數(shù)據(jù)寫入至所選取的區(qū)域后,對另一剩余的區(qū)域執(zhí)行擦除操作,以進(jìn)行下一次的數(shù)據(jù)寫入。
可選地,所述擦除單元還適于當(dāng)讀取到所述存儲器中不存在數(shù)據(jù)為擦除狀態(tài)的區(qū)域,但存在數(shù)據(jù)為不定狀態(tài)的區(qū)域時,對所述數(shù)據(jù)為不定狀態(tài)的區(qū)域執(zhí)行擦除操作,將所述數(shù)據(jù)為不定狀態(tài)的區(qū)域轉(zhuǎn)變?yōu)閿?shù)據(jù)為擦除狀態(tài)的區(qū)域。
可選地,所述讀取單元讀取到的待存儲的數(shù)據(jù)包括:數(shù)據(jù)信息、所述數(shù)據(jù)的標(biāo)識信息及校驗(yàn)信息。
可選地,所述裝置還包括:
第二獲取單元,適于當(dāng)?shù)谝粎^(qū)域及第二區(qū)域內(nèi)數(shù)據(jù)均處于有效狀態(tài)時,分別獲取每區(qū)數(shù)據(jù)中的標(biāo)識信息;
判斷單元,適于根據(jù)所述標(biāo)識信息判斷所述數(shù)據(jù)對應(yīng)的區(qū)域是否有效;
第四執(zhí)行單元,適于對無效的區(qū)域執(zhí)行擦除操作。
可選地,所述選取單元適于獲取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)的校驗(yàn)信息,根據(jù)所述校驗(yàn)信息選取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)是否為擦除狀態(tài)。
與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例的技術(shù)方案具有以下有益效果:
當(dāng)接收到待存儲的數(shù)據(jù)時,通過選取第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦除狀態(tài)的區(qū)域,進(jìn)而可以將所述待存儲的數(shù)據(jù)寫入至所選取的區(qū)域,并在所述待存儲的數(shù)據(jù)寫入至所選取的區(qū)域后,再對另一剩余的區(qū)域執(zhí)行擦除操作,由此可以實(shí)現(xiàn)數(shù)據(jù)的安全寫入。在保證數(shù)據(jù)安全的前提下,當(dāng)所述待存儲的數(shù)據(jù)長度為N頁時,僅需要執(zhí)行N次編程操作以及N次寫入操作,即可完成對全部數(shù)據(jù)的寫入,有效降低存儲器的擦寫次數(shù),提高存儲器的使用壽命,并且可以提高向存儲器中寫入數(shù)據(jù)的速度。
附圖說明
圖1是現(xiàn)有技術(shù)中一種存儲器的數(shù)據(jù)寫入示意圖;
圖2是現(xiàn)有技術(shù)中另一種存儲器的數(shù)據(jù)寫入示意圖;
圖3是現(xiàn)有技術(shù)中又一種存儲器的數(shù)據(jù)寫入示意圖;
圖4是本發(fā)明實(shí)施例中一種存儲器的控制方法流程圖;
圖5是本發(fā)明實(shí)施例中一種存儲器的數(shù)據(jù)寫入示意圖;
圖6是本發(fā)明實(shí)施例中一種存儲器的控制裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
目前,在向存儲器中寫入數(shù)據(jù)時,為了避免因操作中斷而導(dǎo)致的數(shù)據(jù)丟失的情況出現(xiàn),通常采用備份存儲的方法進(jìn)行數(shù)據(jù)的寫入。下面分別以待存儲的數(shù)據(jù)為單頁數(shù)據(jù)以及兩頁數(shù)據(jù)為例,對上述寫入過程進(jìn)行說明:
如圖2所示,當(dāng)待存儲的數(shù)據(jù)為單頁數(shù)據(jù)時,初始狀態(tài)時,目標(biāo)存儲區(qū)內(nèi)的數(shù)據(jù)與備份存儲區(qū)內(nèi)的數(shù)據(jù)相同。當(dāng)向存儲器中寫入數(shù)據(jù)時,可以先對 目標(biāo)存儲區(qū)執(zhí)行擦除操作,使得目標(biāo)存儲區(qū)內(nèi)的數(shù)據(jù)狀態(tài)由有效狀態(tài)轉(zhuǎn)變?yōu)椴欢顟B(tài),再由不定狀態(tài)轉(zhuǎn)變?yōu)椴脸隣顟B(tài)。當(dāng)數(shù)據(jù)擦除后,向目標(biāo)存儲區(qū)內(nèi)寫入待存儲的數(shù)據(jù)。自對目標(biāo)存儲區(qū)執(zhí)行擦除操作時起,至向目標(biāo)存儲區(qū)內(nèi)寫入待存儲的數(shù)據(jù)止,備份存儲區(qū)內(nèi)的數(shù)據(jù)狀態(tài)一直為有效狀態(tài),由此可以保證在向目標(biāo)存儲區(qū)寫入待存儲的數(shù)據(jù)的過程中,無論操作何時中斷,目標(biāo)存儲區(qū)原有數(shù)據(jù)均不會丟失。
當(dāng)向目標(biāo)存儲區(qū)內(nèi)寫入待存儲的數(shù)據(jù)后,先對備份存儲區(qū)內(nèi)的數(shù)據(jù)先執(zhí)行擦除操作,再寫入新的數(shù)據(jù)。此時,目標(biāo)存儲區(qū)內(nèi)的數(shù)據(jù)狀態(tài)一直為有效狀態(tài),由此可以保證在向備份存儲區(qū)寫入待存儲的數(shù)據(jù)的過程中,無論操作何時中斷,向目標(biāo)存儲區(qū)寫入的所述待存儲的數(shù)據(jù)均不會丟失。
如圖3所示,當(dāng)待存儲的數(shù)據(jù)為兩頁數(shù)據(jù)時,所述目標(biāo)存儲區(qū)包括第一目標(biāo)存儲區(qū)以及第二目標(biāo)存儲區(qū),所述備份存儲區(qū)包括第一備份存儲區(qū)及第二備份存儲區(qū)。具體地,先對第一目標(biāo)存儲區(qū)執(zhí)行擦除操作,再向所述第一目標(biāo)存儲區(qū)執(zhí)行編程操作,以寫入所述待存儲的數(shù)據(jù)中的一頁數(shù)據(jù)。接著,對第二目標(biāo)存儲區(qū)執(zhí)行擦除操作,再向所述第二目標(biāo)存儲區(qū)執(zhí)行編程操作。當(dāng)向目標(biāo)存儲區(qū)內(nèi)寫入數(shù)據(jù)后,參照對目標(biāo)存儲區(qū)內(nèi)寫入數(shù)據(jù)的過程,再依次向第一目標(biāo)存儲區(qū)對應(yīng)的第一備份存儲區(qū)以及第二目標(biāo)存儲區(qū)對應(yīng)的第二備份存儲區(qū)寫入數(shù)據(jù)。在上述數(shù)據(jù)寫入過程中,在任意時刻,所述目標(biāo)存儲區(qū)或備份存儲區(qū)內(nèi)數(shù)據(jù)的狀態(tài)為有效狀態(tài)。換言之,在任意時刻,所述第一目標(biāo)存儲區(qū)以及第二目標(biāo)存儲區(qū)內(nèi)數(shù)據(jù)為有效狀態(tài),或者,所述第一備份存儲區(qū)及第二備份存儲區(qū)內(nèi)數(shù)據(jù)為有效狀態(tài)。因此,無論上述操作何時中斷,存儲器中至少保留一個有效數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的安全寫入。
由圖2及圖3可以看出,采用上述方法向存儲器中寫入數(shù)據(jù)時,雖然可以實(shí)現(xiàn)數(shù)據(jù)的安全寫入,但每頁數(shù)據(jù)的寫入需要分別執(zhí)行2次編程操作及2次擦除操作。當(dāng)待存儲的數(shù)據(jù)長度為N頁時,就需要分別執(zhí)行2N次編程操作及2N次擦除操作,導(dǎo)致對存儲器的擦寫次數(shù)過多,影響存儲器的使用壽命,并降低了存儲器中寫入數(shù)據(jù)的速度。
針對上述問題,本發(fā)明實(shí)施例提供了一種存儲器的控制方法,應(yīng)用所述方法,當(dāng)接收到待存儲的數(shù)據(jù)時,通過選取第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦 除狀態(tài)的區(qū)域,進(jìn)而可以將所述待存儲的數(shù)據(jù)寫入至所選取的區(qū)域中,并在將待存儲的數(shù)據(jù)寫入至所選取的區(qū)域后,對另一剩余區(qū)域執(zhí)行擦除操作。因此,無論寫入操作何時中斷,存儲器中至少一個數(shù)據(jù)為有效狀態(tài)的區(qū)域,由此可以實(shí)現(xiàn)數(shù)據(jù)的安全寫入。在保證數(shù)據(jù)安全的前提下,當(dāng)所述待存儲的數(shù)據(jù)長度為N頁時,僅需要執(zhí)行N次編程操作以及N次擦除操作,即可完成對全部數(shù)據(jù)的寫入,不僅可以有效降低存儲器的擦寫次數(shù),提高存儲器的使用壽命,而且可以提高向存儲器中寫入數(shù)據(jù)的速度。
為使本發(fā)明的上述目的、特征和有益效果能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實(shí)施例做詳細(xì)地說明。
如圖4所示,本發(fā)明實(shí)施例提供了一種存儲器的控制方法。
需要說明的是,在本發(fā)明的實(shí)施例中,所述存儲器包括第一區(qū)域及第二區(qū)域。其中,所述第一區(qū)域及第二區(qū)域的存儲空間相同,并且均包括兩個以上的存儲單元。每個存儲單元內(nèi)可以存儲的數(shù)據(jù)長度為1頁。所述待存儲的數(shù)據(jù)至少占用兩個以上的存儲單元,所述第一區(qū)域及第二區(qū)域的存儲空間大于或等于所述待存儲的數(shù)據(jù)所占用的存儲空間。
所述方法可以包括以下步驟:
步驟41,當(dāng)接收到所述待存儲的數(shù)據(jù)時,讀取所述存儲器的第一區(qū)域及第二區(qū)域內(nèi)的數(shù)據(jù)。
在具體實(shí)施中,所述待存儲的數(shù)據(jù)不僅包括數(shù)據(jù)本身,還包括所述待存儲的數(shù)據(jù)的標(biāo)識信息及校驗(yàn)信息。
在具體實(shí)施中,由于向存儲器中寫入數(shù)據(jù)時,每次所寫入的數(shù)據(jù)的長度受頁數(shù)據(jù)寄存器長度限制,使得每次寫入的數(shù)據(jù)長度不能超過1頁。當(dāng)待存儲的數(shù)據(jù)長度為多頁時,需要通過多次的寫入操作才能完成對全部數(shù)據(jù)的存儲。也就是說,所述待存儲的數(shù)據(jù)可以包括多份待寫入的數(shù)據(jù),且每份待寫入的數(shù)據(jù)長度小于等于1頁。
在具體實(shí)施中,所述標(biāo)識信息可以采用序號的形式進(jìn)行標(biāo)識,根據(jù)所述標(biāo)識信息可以識別所述待存儲的數(shù)據(jù)的寫入順序。每份待寫入的數(shù)據(jù)的標(biāo)識信息可以相同,也可以不同。當(dāng)每份待寫入的數(shù)據(jù)的標(biāo)識信息相同時,通過 所述標(biāo)識信息可以區(qū)分?jǐn)?shù)據(jù)所在的區(qū)域。當(dāng)每份待寫入的數(shù)據(jù)的標(biāo)識信息不同時,通過所述標(biāo)識信息不僅可以區(qū)分所述數(shù)據(jù)所在的區(qū)域,還可以區(qū)分所述數(shù)據(jù)在該區(qū)域中的具體位置。
在具體實(shí)施中,根據(jù)所述校驗(yàn)信息可以對所述數(shù)據(jù)的完整性進(jìn)行校驗(yàn)。由于所述待存儲的數(shù)據(jù)包括多份待寫入的數(shù)據(jù),因此,既可以在每份待寫入的數(shù)據(jù)中分別設(shè)置不同的校驗(yàn)信息,也可以在所述多份待寫入的數(shù)據(jù)中設(shè)置相同的校驗(yàn)信息。通過所述校驗(yàn)信息來驗(yàn)證所讀取的數(shù)據(jù)是否完整,從而可以根據(jù)驗(yàn)證結(jié)果判斷所述存儲單元內(nèi)數(shù)據(jù)的狀態(tài)。其中,在通過所述校驗(yàn)信息來驗(yàn)證所讀取的數(shù)據(jù)是否完整時,可以采用奇偶校驗(yàn)等方式進(jìn)行驗(yàn)證。
需要說明的是,在本發(fā)明的實(shí)施例中,所述存儲器為具有數(shù)據(jù)保存功能的設(shè)備,通過所述設(shè)備可以讀取和寫入數(shù)據(jù),比如,所述存儲器可以為電可擦可編程只讀存儲器(Electrically Erasable Programmable Read-Only Memory,EEPROM)。所述存儲器可以是一臺獨(dú)立的設(shè)備,也可以同時提供其他服務(wù),比如可以在其他設(shè)備上開辟一塊專用的數(shù)據(jù)存儲區(qū),以提供數(shù)據(jù)保存服務(wù)。當(dāng)然,不論是采用哪種方式的存儲器,都可以用于讀取和寫入數(shù)據(jù)。
步驟42,選取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦除狀態(tài)的區(qū)域。
通過讀取所述第一區(qū)域及第二區(qū)域內(nèi)的數(shù)據(jù),可以獲知兩個區(qū)域內(nèi)數(shù)據(jù)的狀態(tài)。
通常情況下,存儲單元內(nèi)數(shù)據(jù)的狀態(tài)可以包括以下幾種:擦除狀態(tài)、不定狀態(tài)以及有效狀態(tài)。其中,所述擦除狀態(tài)即存儲單元內(nèi)的數(shù)據(jù)已擦除,此時可以直接寫入新的數(shù)據(jù)。所述不定狀態(tài)即存儲單元內(nèi)的數(shù)據(jù)不完整,所述數(shù)據(jù)不完整可以是因?qū)λ龃鎯卧獔?zhí)行的擦除操作被中斷所導(dǎo)致的,也可以是因?qū)λ龃鎯卧獔?zhí)行的編程操作被中斷所操作的,此時無法直接寫入新的數(shù)據(jù)。所述有效狀態(tài)即所述存儲單元內(nèi)的數(shù)據(jù)完整,此時可以直接讀取存儲單元內(nèi)的數(shù)據(jù)。
根據(jù)每個區(qū)域內(nèi)各個存儲單元中數(shù)據(jù)的狀態(tài),可以確定該區(qū)域內(nèi)的數(shù)據(jù)狀態(tài)。具體地,當(dāng)該區(qū)域內(nèi)各個存儲單元中數(shù)據(jù)均為有效狀態(tài)時,該區(qū)域內(nèi)的數(shù)據(jù)為有效狀態(tài)。當(dāng)該區(qū)域內(nèi)各個存儲單元中數(shù)據(jù)均為擦除狀態(tài)時,該區(qū) 域內(nèi)的數(shù)據(jù)為擦除狀態(tài)。當(dāng)該區(qū)域內(nèi)各個存儲單元中數(shù)據(jù)的狀態(tài)不同時,該區(qū)域內(nèi)的數(shù)據(jù)為不定狀態(tài)。
在具體實(shí)施中,在判斷每個存儲單元中數(shù)據(jù)的狀態(tài)時,若能夠從該存儲單元中讀取到數(shù)據(jù),則所述存儲單元內(nèi)數(shù)據(jù)的狀態(tài)要么為有效狀態(tài),要么為不定狀態(tài)。若未能夠從該存儲單元中讀取到數(shù)據(jù),則所述存儲單元內(nèi)數(shù)據(jù)的狀態(tài)為擦除狀態(tài)。
當(dāng)從該存儲單元中讀取到數(shù)據(jù)時,通過對所讀取的數(shù)據(jù)進(jìn)行校驗(yàn),可以判定所讀取的數(shù)據(jù)的狀態(tài)。
當(dāng)讀取到所述存儲器中不存在數(shù)據(jù)為擦除狀態(tài)的區(qū)域,但存在數(shù)據(jù)為不定狀態(tài)的區(qū)域時,對所述數(shù)據(jù)為不定狀態(tài)的區(qū)域執(zhí)行擦除操作,以將所述數(shù)據(jù)為不定狀態(tài)的區(qū)域轉(zhuǎn)變?yōu)閿?shù)據(jù)為擦除狀態(tài)的區(qū)域。比如,當(dāng)讀取到所述第一區(qū)域是數(shù)據(jù)為有效狀態(tài)的區(qū)域,第二區(qū)域是數(shù)據(jù)為不定狀態(tài)的區(qū)域時,對所述第二區(qū)域執(zhí)行擦除操作,將所述第二區(qū)域轉(zhuǎn)變?yōu)閿?shù)據(jù)為擦除狀態(tài)的區(qū)域。
步驟43,對所選取的區(qū)域中各個存儲單元執(zhí)行編程操作,將所述待存儲的數(shù)據(jù)寫入至所選取的區(qū)域。
步驟44,當(dāng)將待存儲的數(shù)據(jù)寫入至所選取的區(qū)域后,對所述第一區(qū)域及第二區(qū)域中的另一剩余的區(qū)域執(zhí)行擦除操作,以進(jìn)行下一次的數(shù)據(jù)寫入。
下面以所述待存儲的數(shù)據(jù)為X,且X的數(shù)據(jù)長度為2頁為例,對步驟43及44的具體實(shí)施進(jìn)行詳細(xì)說明:
如圖5所示,所述存儲器中包括:第一區(qū)域A及第二區(qū)域B。其中,所述第一區(qū)域A包括:存儲單元A1及存儲單元A2。所述第二區(qū)域B包括:存儲單元B1及存儲單元B2。
在向存儲器中寫入數(shù)據(jù)前,所述第一區(qū)域A中數(shù)據(jù)為擦除狀態(tài),即存儲單元A1及存儲單元A2內(nèi)數(shù)據(jù)為擦除狀態(tài)。所述第二區(qū)域B中數(shù)據(jù)為有效狀態(tài),即存儲單元B1及存儲單元B2內(nèi)數(shù)據(jù)為有效狀態(tài)。
所述待存儲的數(shù)據(jù)為X包括數(shù)據(jù)X1及X2,X1及X2的數(shù)據(jù)長度分別為1頁,寫入順序如下:先向存儲器中寫入數(shù)據(jù)X1,再向存儲器中寫入數(shù)據(jù)X2。 數(shù)據(jù)X1的目標(biāo)地址為存儲單元A1,數(shù)據(jù)X2的目標(biāo)地址為存儲單元A2。
具體地,對所選取的區(qū)域中各個存儲單元執(zhí)行編程操作,即對第一區(qū)域A中各個存儲單元執(zhí)行編程操作。具體地,對存儲單元A1執(zhí)行編程操作,將數(shù)據(jù)X1寫入至存儲單元A1。接著對存儲單元A2執(zhí)行編程操作,將數(shù)據(jù)X2寫入至存儲單元A2。
對第一區(qū)域A執(zhí)行編程操作后,也就是存儲單元A1及A2內(nèi)數(shù)據(jù)均為有效狀態(tài)后,再對第二區(qū)域B執(zhí)行擦除操作,即依次對存儲單元B1及B2執(zhí)行擦除操作,使得存儲單元B1及B2內(nèi)數(shù)據(jù)由有效狀態(tài)轉(zhuǎn)變?yōu)椴欢顟B(tài),再由不定狀態(tài)轉(zhuǎn)變?yōu)椴脸隣顟B(tài)。下一次向存儲器中寫入數(shù)據(jù)時,直接將數(shù)據(jù)寫入至第二區(qū)域B即可,并對第一區(qū)域A執(zhí)行擦除操作。
從圖5中可以看出,在任意時刻,所述第一區(qū)域A及第二區(qū)域B內(nèi)至少一個區(qū)域的數(shù)據(jù)為有效狀態(tài),因此,無論何時中斷寫入操作,存儲器內(nèi)至少存儲一個完整數(shù)據(jù)。并且,當(dāng)待存儲的數(shù)據(jù)長度為N頁時,寫入過程中僅需要N次編程操作以及N次擦除操作,存儲器的讀寫次數(shù)減少1倍。
在具體實(shí)施中,若寫入操作在執(zhí)行步驟43后、執(zhí)行步驟44前中斷,下次向存儲器中寫入數(shù)據(jù)時,所述第一區(qū)域及第二區(qū)域內(nèi)數(shù)據(jù)可能均處于有效狀態(tài)。此時可以先分別獲取每區(qū)數(shù)據(jù)中的標(biāo)識信息,進(jìn)而通過所述標(biāo)識信息區(qū)分各區(qū)數(shù)據(jù)的寫入順序,然后根據(jù)預(yù)先設(shè)置的所述數(shù)據(jù)寫入順序與區(qū)域有效性的對應(yīng)關(guān)系,再對無效區(qū)域執(zhí)行擦除操作,將待存儲的數(shù)據(jù)寫入至所述無效區(qū)域。
比如,在向存儲器中寫入數(shù)據(jù)時,可以依次增加待存儲數(shù)據(jù)中的序號值,這樣,當(dāng)?shù)谝粎^(qū)域及第二區(qū)域內(nèi)數(shù)據(jù)均處于有效狀態(tài)時,序號值較大的數(shù)據(jù)為后寫入的數(shù)據(jù),序號值較小的數(shù)據(jù)為先寫入的數(shù)據(jù)。相應(yīng)地,序號值較大的數(shù)據(jù)對應(yīng)有效區(qū)域,序號值較小的數(shù)據(jù)對應(yīng)無效區(qū)域。對序號值較小的數(shù)據(jù)執(zhí)行擦除操作,將待存儲的數(shù)據(jù)寫入至所述無效區(qū)域。
由上述內(nèi)容可以看出,應(yīng)用本發(fā)明實(shí)施例中的方法,當(dāng)接收到待存儲的數(shù)據(jù)時,通過選取第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦除狀態(tài)的區(qū)域,進(jìn)而可以將所述待存儲的數(shù)據(jù)寫入至所選取的區(qū)域,并在所述待存儲的數(shù)據(jù)寫入至所 選取的區(qū)域后,再對另一剩余的區(qū)域執(zhí)行擦除操作,由此可以實(shí)現(xiàn)數(shù)據(jù)的安全寫入。在保證數(shù)據(jù)安全的前提下,當(dāng)所述待存儲的數(shù)據(jù)長度為N頁時,僅需要執(zhí)行N次編程操作以及N次寫入操作,即可完成對全部數(shù)據(jù)的寫入,不僅可以有效降低存儲器的擦寫次數(shù),提高存儲器的使用壽命,而且可以提高向存儲器中寫入數(shù)據(jù)的速度。
為了使本領(lǐng)域技術(shù)人員更好地理解和實(shí)現(xiàn)本發(fā)明,以下對上述存儲器的控制方法對應(yīng)的裝置進(jìn)行詳細(xì)描述。
如圖6所示,本發(fā)明實(shí)施例提供了一種存儲器的控制裝置。其中,所述存儲器包括第一區(qū)域及第二區(qū)域,所述第一區(qū)域及第二區(qū)域的存儲空間相同且均包括兩個以上的存儲單元。所述待存儲的數(shù)據(jù)至少占用兩個以上的存儲單元,每個存儲單元的數(shù)據(jù)存儲容量為一頁,所述第一區(qū)域及第二區(qū)域的存儲空間大于或等于所述待存儲的數(shù)據(jù)所占用的存儲空間
所述裝置可以包括:讀取單元61,選取單元62,編程單元63以及擦除單元64。其中:
所述讀取單元61適于當(dāng)接收到所述待存儲的數(shù)據(jù)時,讀取所述存儲器的第一區(qū)域及第二區(qū)域內(nèi)的數(shù)據(jù)。所述選取單元62適于選取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦除狀態(tài)的區(qū)域。所述編程單元63適于對所選取的區(qū)域中各個存儲單元執(zhí)行編程操作,將所述待存儲的數(shù)據(jù)寫入至所選取的區(qū)域。所述擦除單元64適于當(dāng)將待存儲的數(shù)據(jù)寫入至所選取的區(qū)域后,對另一剩余的區(qū)域執(zhí)行擦除操作,以進(jìn)行下一次的數(shù)據(jù)寫入。
在具體實(shí)施中,所述擦除單元64還適于當(dāng)讀取到所述存儲器中不存在數(shù)據(jù)為擦除狀態(tài)的區(qū)域,但存在數(shù)據(jù)為不定狀態(tài)的區(qū)域時,對所述數(shù)據(jù)為不定狀態(tài)數(shù)據(jù)的區(qū)域執(zhí)行擦除操作,將所述數(shù)據(jù)為不定狀態(tài)數(shù)據(jù)的區(qū)域轉(zhuǎn)變?yōu)閿?shù)據(jù)為擦除狀態(tài)數(shù)據(jù)的區(qū)域。
在具體實(shí)施中,所述讀取單元61讀取到的待存儲的數(shù)據(jù)包括:數(shù)據(jù)信息、所述數(shù)據(jù)的標(biāo)識信息以及校驗(yàn)信息。相應(yīng)地,所述裝置還可以包括:第二獲取單元、判斷單元及第四執(zhí)行單元(未示出)。其中,所述第二獲取單元適于當(dāng)?shù)谝粎^(qū)域及第二區(qū)域內(nèi)數(shù)據(jù)均處于有效狀態(tài)時,分別獲取每區(qū)數(shù)據(jù)中的標(biāo) 識信息。所述判斷單元適于根據(jù)所述標(biāo)識信息判斷所述數(shù)據(jù)對應(yīng)的區(qū)域是否有效。所述第四執(zhí)行單元適于對無效的區(qū)域執(zhí)行擦除操作。
在具體實(shí)施中,所述讀取單元61讀取到的待存儲的數(shù)據(jù)還包括:校驗(yàn)信息。相應(yīng)地,所述選取單元62適于獲取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)的校驗(yàn)信息,根據(jù)所述校驗(yàn)信息選取所述第一區(qū)域及第二區(qū)域中數(shù)據(jù)為擦除狀態(tài)的區(qū)域。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機(jī)可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:ROM、RAM、磁盤或光盤等。
雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。