專利名稱:一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法
一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式軟件技術(shù)領(lǐng)域,尤其涉及一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法。
背景技術(shù):
設(shè)備在運(yùn)行時(shí)、往往有些數(shù)據(jù)是比較重要的,但是當(dāng)有大量這種重要數(shù)據(jù)并且改變很頻繁的情況下,這種數(shù)據(jù)的及時(shí)保存及中斷恢復(fù)就成為了問題;且這些重要數(shù)據(jù)需要占用較大的空間,或者其存取的靈活性無法保證。目前設(shè)備中并行接口的非易失存儲(chǔ)器很多,如EEPR0M、FLASH、FRAM、SRAM+備用電池方式等占據(jù)了市場(chǎng)主流,幾種產(chǎn)品性能方面各有優(yōu)缺。使用廣泛的是EEPROM及FLASH 存儲(chǔ)器,其它方式目前還存在標(biāo)準(zhǔn)問題及成本過高的問題。其中EEPROM的市場(chǎng)應(yīng)用范圍最為廣泛,其缺點(diǎn)也很明顯,寫入速度慢,至少IOms的寫等待時(shí)間,而且寫操作次數(shù)有限制, 并且總體存儲(chǔ)容量有限。FLASH存儲(chǔ)器存儲(chǔ)容量大,但其存儲(chǔ)特性又使得其在使用過程中存在存取不靈活的特點(diǎn),具體表現(xiàn)為傳統(tǒng)flash特性為塊(block)擦除、最小操作單元到位(bit)可編寫;位操作特性為將1改寫0,并且不可逆,逆操作需要通過flash塊擦操作實(shí)現(xiàn)?,F(xiàn)有技術(shù)中提供了一種數(shù)據(jù)存儲(chǔ)方法及裝置,如
公開日為2009年10月14日,公開號(hào)為CN101556556的中國專利,其特征點(diǎn)是獲得當(dāng)前待寫入數(shù)據(jù)塊的前一數(shù)據(jù)塊的起始存儲(chǔ)地址;將所述起始存儲(chǔ)地址減去所述當(dāng)前待寫入數(shù)據(jù)塊的大小,得到中間結(jié)果;若所述中間結(jié)果小于0,則將所述中間結(jié)果映射到所述存儲(chǔ)器的有效地址內(nèi),以該映射的結(jié)果作為所述當(dāng)前待寫入數(shù)據(jù)塊的起始存儲(chǔ)地址;若所述中間結(jié)果大于或等于0,則直接以該中間結(jié)果作為所述當(dāng)前待寫入數(shù)據(jù)塊的起始存儲(chǔ)地址;從所述當(dāng)前待寫入數(shù)據(jù)塊的起始存儲(chǔ)地址對(duì)應(yīng)的存儲(chǔ)單元開始寫入所述當(dāng)前待寫入數(shù)據(jù)塊。利用該發(fā)明實(shí)施例提供的方法, 可以減少對(duì)存儲(chǔ)器的讀寫次數(shù),從而降低向存儲(chǔ)器中寫數(shù)據(jù)時(shí)的功耗;但其數(shù)據(jù)存儲(chǔ)方法比較復(fù)雜,其還要判斷起始存儲(chǔ)地址與當(dāng)前待寫入數(shù)據(jù)塊的大小關(guān)系。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題,在于提供一種在大量存儲(chǔ)易變數(shù)據(jù)的情況下,保證其易變數(shù)據(jù)存取的靈活性的數(shù)據(jù)尋址存儲(chǔ)方法。本發(fā)明是這樣實(shí)現(xiàn)的一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法,包括如下步驟步驟10、將所述flash存儲(chǔ)器的存儲(chǔ)區(qū)定義為復(fù)數(shù)個(gè)頁空間,所述頁空間即根據(jù) flash存儲(chǔ)器的大小劃分出的flash存儲(chǔ)器的塊空間,將頁空間的前4個(gè)字節(jié)進(jìn)行保留,其中所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)作為該頁空間狀態(tài)標(biāo)志;所述狀態(tài)標(biāo)志包括頁清空、 頁接收以及頁有效的狀態(tài);所述頁清空表示頁空間處于flash存儲(chǔ)器初始化、擦除狀態(tài);所述頁接收表示頁空間正處于頁空間存儲(chǔ)滿或者頁空間的數(shù)據(jù)要轉(zhuǎn)移的狀態(tài);所述頁有效表示頁空間處于數(shù)據(jù)接收更新的狀態(tài);且頁空間以每4個(gè)字節(jié)作為一存儲(chǔ)單元來存儲(chǔ)一數(shù)據(jù),該4個(gè)字節(jié)的存儲(chǔ)單元頭2個(gè)字節(jié)用于保存要存儲(chǔ)的數(shù)據(jù)的虛擬地址,后2個(gè)字節(jié)用于保存要存儲(chǔ)的數(shù)據(jù);步驟20、當(dāng)應(yīng)用程序進(jìn)行寫入數(shù)據(jù)時(shí),將要寫入的數(shù)據(jù)定義為存儲(chǔ)的數(shù)據(jù)加上虛擬地址的結(jié)構(gòu);判斷頁空間的狀態(tài)標(biāo)志是否為頁清空,是則從當(dāng)前清空的第一個(gè)頁空間的頁首地址開始查詢頁空間中各虛擬地址位置是否為0XFFFF,是,則該虛擬地址位置可保存數(shù)據(jù),記錄要保存的數(shù)據(jù)的虛擬地址到該頁空間中該虛擬地址位置,并將該要保存的數(shù)據(jù)的存儲(chǔ)的數(shù)據(jù)保存于所述虛擬地址位置的后2個(gè)字節(jié)空間中;此時(shí)將所述第一個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁有效的狀態(tài),并繼續(xù)寫入下一個(gè)數(shù)據(jù);否,則繼續(xù)查詢所述頁空間中下一個(gè)的虛擬地址位置;如果當(dāng)前的第一個(gè)頁空間所有的所述虛擬地址位置無OXFFFF時(shí),則當(dāng)前的第一個(gè)頁空間存儲(chǔ)的數(shù)據(jù)已滿,將該第一個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁接收的狀態(tài);進(jìn)入步驟30 ;步驟30、將所述第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第二個(gè)頁空間里;所述的有效數(shù)據(jù)為應(yīng)用程序不斷寫入數(shù)據(jù),當(dāng)寫入的數(shù)據(jù)中存在同一虛擬地址的數(shù)據(jù)時(shí),最后一次寫入的數(shù)據(jù)為有效數(shù)據(jù),當(dāng)寫入的數(shù)據(jù)中不存在同一虛擬地址的數(shù)據(jù)時(shí), 寫入的數(shù)據(jù)都為有效數(shù)據(jù);當(dāng)?shù)谝粋€(gè)頁空間所有有效數(shù)據(jù)復(fù)制完畢,進(jìn)行頁空間擦除操作, 且將所述第一個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁清空的狀態(tài);當(dāng)?shù)诙€(gè)頁空間在接收復(fù)制數(shù)據(jù)時(shí),先將第二個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁有效的狀態(tài);當(dāng)接收完畢將第二個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁接收的狀態(tài);第一個(gè)頁空間繼續(xù)寫入數(shù)據(jù)。本發(fā)明具有如下優(yōu)點(diǎn)本發(fā)明將flash存儲(chǔ)器的存儲(chǔ)區(qū)定義為復(fù)數(shù)個(gè)頁空間,頁空間的前4個(gè)字節(jié)進(jìn)行保留,其中前4個(gè)字節(jié)的頭2個(gè)字節(jié)作為該頁空間狀態(tài)標(biāo)志;狀態(tài)標(biāo)志包括頁清空、頁接收以及頁有效的狀態(tài);且頁空間以每4個(gè)字節(jié)作為一存儲(chǔ)單元來存儲(chǔ)一數(shù)據(jù);并將要寫入的數(shù)據(jù)定義為存儲(chǔ)的數(shù)據(jù)加上虛擬地址的結(jié)構(gòu);應(yīng)用程序通過判斷頁空間的狀態(tài),存儲(chǔ)要寫入的數(shù)據(jù);當(dāng)一頁空間寫入數(shù)據(jù)滿后,則將有效數(shù)據(jù)復(fù)制到另一個(gè)處于頁清空狀態(tài)的頁空間;復(fù)制完畢后,頁空間進(jìn)行擦除操作并繼續(xù)寫數(shù)據(jù)。這樣讀取數(shù)據(jù)時(shí),只要通過數(shù)據(jù)的虛擬地址進(jìn)行查找,且當(dāng)所述應(yīng)用程序在寫入或者讀取數(shù)據(jù)時(shí),設(shè)備意外中斷,則重新啟動(dòng)設(shè)備,設(shè)備的flash存儲(chǔ)器中的應(yīng)用程序?qū)⒉檎姨幱陧撚行顟B(tài)的頁空間,并繼續(xù)進(jìn)行寫入或者讀取數(shù)據(jù);且在有效數(shù)據(jù)復(fù)制過程中遇到設(shè)備中斷,重新恢復(fù)后,也是可以根據(jù)查找處于也有效狀態(tài)的頁空間,進(jìn)行繼續(xù)復(fù)制。本發(fā)明實(shí)現(xiàn)了當(dāng)有大量重要的數(shù)據(jù)并且改變很頻繁的情況下,利用本發(fā)明的方法能及時(shí)保存及中斷恢復(fù)數(shù)據(jù);能保證數(shù)據(jù)存取靈活性。
圖1為本發(fā)明方法流程示意圖。圖2為本發(fā)明頁空間的結(jié)構(gòu)示意圖。圖3為本發(fā)明定義的數(shù)據(jù)結(jié)構(gòu)示意圖。
具體實(shí)施方式
請(qǐng)參閱圖1至圖3所示,本發(fā)明的一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法, 包括如下步驟步驟10、將所述flash存儲(chǔ)器的存儲(chǔ)區(qū)定義為復(fù)數(shù)個(gè)頁空間,所述頁空間即根據(jù) flash存儲(chǔ)器的大小劃分出的flash存儲(chǔ)器的塊空間,頁空間的存儲(chǔ)大小根據(jù)flash的塊大小決定,不同型號(hào)及不同容量的flash的塊(block)大小不同;如圖2所示,將頁空間的前 4個(gè)字節(jié)進(jìn)行保留,其中所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)作為該頁空間狀態(tài)標(biāo)志(后2 個(gè)字節(jié)可以用于后期的二次開發(fā));所述狀態(tài)標(biāo)志包括頁清空、頁接收以及頁有效的狀態(tài); 所述頁清空表示頁空間處于flash存儲(chǔ)器初始化、擦除的狀態(tài);所述頁接收表示頁空間正處于頁空間存儲(chǔ)滿或者頁空間的數(shù)據(jù)要轉(zhuǎn)移的狀態(tài);所述頁有效表示頁空間處于數(shù)據(jù)接收更新的狀態(tài);且頁空間以每4個(gè)字節(jié)作為一存儲(chǔ)單元來存儲(chǔ)一數(shù)據(jù),該4個(gè)字節(jié)的存儲(chǔ)單元頭2個(gè)字節(jié)用于保存要存儲(chǔ)的數(shù)據(jù)的虛擬地址,后2個(gè)字節(jié)用于保存要存儲(chǔ)的數(shù)據(jù);步驟20、當(dāng)應(yīng)用程序進(jìn)行寫入數(shù)據(jù)時(shí),將要寫入的數(shù)據(jù)定義為存儲(chǔ)的數(shù)據(jù)加上虛擬地址的結(jié)構(gòu)(如圖3所示);判斷頁空間的狀態(tài)標(biāo)志是否為頁清空,是則從當(dāng)前清空的第一個(gè)頁空間的頁首地址開始查詢頁空間中各虛擬地址位置是否為0XFFFF,是,則該虛擬地址位置可保存數(shù)據(jù),記錄要保存的數(shù)據(jù)的虛擬地址到該頁空間中該虛擬地址位置,并將該要保存的數(shù)據(jù)的存儲(chǔ)的數(shù)據(jù)保存于所述虛擬地址位置的后2個(gè)字節(jié)空間中;此時(shí)將所述第一個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁有效的狀態(tài),并繼續(xù)寫入下一個(gè)數(shù)據(jù);否,則繼續(xù)查詢所述頁空間中下一個(gè)的虛擬地址位置;如果當(dāng)前的第一個(gè)頁空間所有的所述虛擬地址位置無OXFFFF時(shí),則當(dāng)前的第一個(gè)頁空間存儲(chǔ)的數(shù)據(jù)已滿,將該第一個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁接收的狀態(tài);進(jìn)入步驟30 ;步驟30、將所述第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第二個(gè)頁空間里;所述的有效數(shù)據(jù)為應(yīng)用程序不斷寫入數(shù)據(jù),當(dāng)寫入的數(shù)據(jù)中存在同一虛擬地址的數(shù)據(jù)時(shí),最后一次寫入的數(shù)據(jù)為有效數(shù)據(jù)(即寫入的數(shù)據(jù)為存儲(chǔ)的數(shù)據(jù)加上虛擬地址的結(jié)構(gòu),則存在存儲(chǔ)的數(shù)據(jù)不一樣,但是虛擬地址一樣的情況;這樣寫入數(shù)據(jù)中出現(xiàn)同一虛擬地址的數(shù)據(jù)時(shí),最后一次寫入的數(shù)據(jù)為有效數(shù)據(jù)),當(dāng)寫入的數(shù)據(jù)中不存在同一虛擬地址的數(shù)據(jù)時(shí),寫入的數(shù)據(jù)都為有效數(shù)據(jù);當(dāng)?shù)谝粋€(gè)頁空間所有有效數(shù)據(jù)復(fù)制完畢,進(jìn)行頁空間擦除操作,且將所述第一個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁清空的狀態(tài);當(dāng)?shù)诙€(gè)頁空間在接收復(fù)制數(shù)據(jù)時(shí),先將第二個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁有效的狀態(tài);當(dāng)接收完畢將第二個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁接收的狀態(tài);第一個(gè)頁空間繼續(xù)寫入數(shù)據(jù)。在本發(fā)明設(shè)備意外中斷的數(shù)據(jù)保存方法中,當(dāng)應(yīng)用程序進(jìn)行讀數(shù)據(jù)時(shí),判斷頁空間的狀態(tài)標(biāo)志是否為有效,是則從當(dāng)前有效的頁空間的末尾的虛擬地址開始檢測(cè)是否是有效數(shù)據(jù);所述檢測(cè)是否是有效數(shù)據(jù)是應(yīng)用程序通過此時(shí)要讀取數(shù)據(jù)的虛擬地址與存儲(chǔ)在頁空間中虛擬地址進(jìn)行匹配判斷是否一樣,第一次匹配一樣的數(shù)據(jù)即為有效數(shù)(即匹配的時(shí)候根據(jù)數(shù)據(jù)的虛擬地址進(jìn)行匹配,匹配可能存在有2個(gè)或多個(gè)虛擬地址一樣的數(shù)據(jù),則第一匹配一樣的數(shù)據(jù)即為有效數(shù));是,則將讀取該有效數(shù)據(jù);否,則繼續(xù)檢測(cè)所述頁空間的下一個(gè)虛擬地址。如果想增加頁空間的使用壽命可以增加多個(gè)頁空間循環(huán)保存數(shù)據(jù),當(dāng)應(yīng)用程序進(jìn)行寫入數(shù)據(jù)時(shí),還能使用多個(gè)頁空間進(jìn)行寫入數(shù)據(jù)的,其當(dāng)有效的第一個(gè)頁空間寫滿數(shù)據(jù)時(shí),將第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第二個(gè)頁空間里;當(dāng)?shù)谝粋€(gè)頁空間再次寫滿數(shù)據(jù)時(shí),將第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第三個(gè)頁空間里;當(dāng)?shù)谝粋€(gè)頁空間再次寫滿數(shù)據(jù)時(shí),將第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第四個(gè)頁空間里;以此循環(huán)進(jìn)行。其頁空間保存數(shù)據(jù)的多少跟FLASH存儲(chǔ)器的大小有關(guān),如果頁空間大小是IK那么只能保存10M/4-1 = 256-1個(gè)16位數(shù)據(jù),如果保存8位數(shù),可以用2個(gè)8位數(shù)據(jù)組合后保存或者直接保存,如果保存32位數(shù)據(jù)那就拆成2個(gè)16位保存。值得一提的是存儲(chǔ)單元個(gè)數(shù)取決于存儲(chǔ)單元大小和頁空間大小。存儲(chǔ)單元個(gè)數(shù)(Num)=頁空間大小(Page size)/存儲(chǔ)單元大小(32bit);例如當(dāng)頁空間大小(Page size)為128KB時(shí),存儲(chǔ)單元個(gè)數(shù)(Num)為32K(32768)個(gè)。其中頁空間狀態(tài)標(biāo)志標(biāo)記轉(zhuǎn)換是使用flash的位操作特性flash存儲(chǔ)器中的數(shù)據(jù)由“1”改寫為“0”時(shí)可以進(jìn)行位操作,而由“0”改寫為“1”則需要flash存儲(chǔ)器中的整個(gè)塊進(jìn)行擦除操作才能實(shí)現(xiàn),根據(jù)flash存儲(chǔ)器這種特性可以對(duì)所在頁空間標(biāo)識(shí)多種狀態(tài)。 即數(shù)據(jù)在OxFFFF到0x0000之間,進(jìn)行一個(gè)“1”改寫為“0”的位操作,就可以表示一種狀態(tài),這種方法最后的狀態(tài)一定是由0x0000到OxFFFF,從而形成完整一個(gè)狀態(tài)循環(huán)。在本發(fā)明中只是利用了其中3中狀態(tài),即頁清空(用OXFFFF表示)、頁接收(用OXEEEE表示)以及頁有效(用0X0000表示)的狀態(tài)。當(dāng)所述應(yīng)用程序在寫入或者讀取數(shù)據(jù)時(shí),設(shè)備意外中斷,則重新啟動(dòng)設(shè)備,設(shè)備的 flash存儲(chǔ)器中的應(yīng)用程序?qū)⒉檎姨幱陧撚行顟B(tài)的頁空間,并繼續(xù)進(jìn)行寫入或者讀取數(shù)據(jù);且在有效數(shù)據(jù)復(fù)制過程中遇到設(shè)備中斷,重新恢復(fù)后,也是可以根據(jù)查找處于也有效狀態(tài)的頁空間,進(jìn)行繼續(xù)復(fù)制。以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
1.一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法,其特征在于包括如下步驟步驟10、將所述flash存儲(chǔ)器的存儲(chǔ)區(qū)定義為復(fù)數(shù)個(gè)頁空間,所述頁空間即根據(jù)flash存儲(chǔ)器的大小劃分出的flash存儲(chǔ)器的塊空間,將頁空間的前4個(gè)字節(jié)進(jìn)行保留,其中所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)作為該頁空間狀態(tài)標(biāo)志;所述狀態(tài)標(biāo)志包括頁清空、頁接收以及頁有效的狀態(tài);所述頁清空表示頁空間處于flash存儲(chǔ)器初始化、擦除狀態(tài);所述頁接收表示頁空間正處于頁空間存儲(chǔ)滿或者頁空間的數(shù)據(jù)要轉(zhuǎn)移的狀態(tài);所述頁有效表示頁空間處于數(shù)據(jù)接收更新的狀態(tài);且頁空間以每4個(gè)字節(jié)作為一存儲(chǔ)單元來存儲(chǔ)一數(shù)據(jù),該4個(gè)字節(jié)的存儲(chǔ)單元頭2個(gè)字節(jié)用于保存要存儲(chǔ)的數(shù)據(jù)的虛擬地址,后2個(gè)字節(jié)用于保存要存儲(chǔ)的數(shù)據(jù);步驟20、當(dāng)應(yīng)用程序進(jìn)行寫入數(shù)據(jù)時(shí),將要寫入的數(shù)據(jù)定義為存儲(chǔ)的數(shù)據(jù)加上虛擬地址的結(jié)構(gòu);判斷頁空間的狀態(tài)標(biāo)志是否為頁清空,是則從當(dāng)前清空的第一個(gè)頁空間的頁首地址開始查詢頁空間中各虛擬地址位置是否為0XFFFF,是,則該虛擬地址位置可保存數(shù)據(jù), 記錄要保存的數(shù)據(jù)的虛擬地址到該頁空間中該虛擬地址位置,并將該要保存的數(shù)據(jù)的存儲(chǔ)的數(shù)據(jù)保存于所述虛擬地址位置的后2個(gè)字節(jié)空間中;此時(shí)將所述第一個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁有效的狀態(tài),并繼續(xù)寫入下一個(gè)數(shù)據(jù);否,則繼續(xù)查詢所述頁空間中下一個(gè)的虛擬地址位置;如果當(dāng)前的第一個(gè)頁空間所有的所述虛擬地址位置無OXFFFF時(shí),則當(dāng)前的第一個(gè)頁空間存儲(chǔ)的數(shù)據(jù)已滿,將該第一個(gè)頁空間所述保留的前4 個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁接收的狀態(tài);進(jìn)入步驟30 ;步驟30、將所述第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第二個(gè)頁空間里;所述的有效數(shù)據(jù)為應(yīng)用程序不斷寫入數(shù)據(jù),當(dāng)寫入的數(shù)據(jù)中存在同一虛擬地址的數(shù)據(jù)時(shí),最后一次寫入的數(shù)據(jù)為有效數(shù)據(jù),當(dāng)寫入的數(shù)據(jù)中不存在同一虛擬地址的數(shù)據(jù)時(shí),寫入的數(shù)據(jù)都為有效數(shù)據(jù);當(dāng)?shù)谝粋€(gè)頁空間所有有效數(shù)據(jù)復(fù)制完畢,進(jìn)行頁空間擦除操作,且將所述第一個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁清空的狀態(tài);當(dāng)?shù)诙€(gè)頁空間在接收復(fù)制數(shù)據(jù)時(shí),先將第二個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁有效的狀態(tài);當(dāng)接收完畢將第二個(gè)頁空間所述保留的前4個(gè)字節(jié)的頭2個(gè)字節(jié)標(biāo)記為頁接收的狀態(tài);第一個(gè)頁空間繼續(xù)寫入數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法,其特征在于 當(dāng)應(yīng)用程序進(jìn)行讀數(shù)據(jù)時(shí),判斷頁空間的狀態(tài)標(biāo)志是否為有效,是則從當(dāng)前有效的頁空間的末尾的虛擬地址開始檢測(cè)是否是有效數(shù)據(jù);所述檢測(cè)是否是有效數(shù)據(jù)是應(yīng)用程序通過此時(shí)要讀取數(shù)據(jù)的虛擬地址與存儲(chǔ)在頁空間中虛擬地址進(jìn)行匹配判斷是否一樣,第一次匹配一樣的數(shù)據(jù)即為有效數(shù);是,則將讀取該有效數(shù)據(jù);否,則繼續(xù)檢測(cè)所述頁空間的下一個(gè)虛擬地址。
3.根據(jù)權(quán)利要求1所述的一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法,其特征在于 所述步驟20中當(dāng)應(yīng)用程序進(jìn)行寫入數(shù)據(jù)時(shí),還能使用多個(gè)頁空間進(jìn)行寫入數(shù)據(jù)的,其當(dāng)有效的第一個(gè)頁空間寫滿數(shù)據(jù)時(shí),將第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第二個(gè)頁空間里;當(dāng)?shù)谝粋€(gè)頁空間再次寫滿數(shù)據(jù)時(shí),將第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第三個(gè)頁空間里;當(dāng)?shù)谝粋€(gè)頁空間再次寫滿數(shù)據(jù)時(shí),將第一個(gè)頁空間里的有效數(shù)據(jù)復(fù)制到處于頁清空狀態(tài)的第四個(gè)頁空間里;以此循環(huán)進(jìn)行。
4.根據(jù)權(quán)利要求1所述的一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法,其特征在于當(dāng)所述應(yīng)用程序在寫入或者讀取數(shù)據(jù)時(shí),設(shè)備意外中斷,則重新啟動(dòng)設(shè)備,設(shè)備的flash存儲(chǔ)器中的應(yīng)用程序?qū)⒉檎姨幱陧撚行顟B(tài)的頁空間,并繼續(xù)進(jìn)行寫入或者讀取數(shù)據(jù)。
全文摘要
本發(fā)明提供一種flash存儲(chǔ)器塊細(xì)分的數(shù)據(jù)尋址存儲(chǔ)方法,該方法中將flash存儲(chǔ)器的存儲(chǔ)區(qū)定義為復(fù)數(shù)個(gè)頁空間,頁空間的前4個(gè)字節(jié)進(jìn)行保留,其中前4個(gè)字節(jié)的頭2個(gè)字節(jié)作為該頁空間狀態(tài)標(biāo)志;狀態(tài)標(biāo)志包括頁清空、頁接收以及頁有效的狀態(tài);且頁空間以每4個(gè)字節(jié)作為一存儲(chǔ)單元來存儲(chǔ)一數(shù)據(jù);并將要寫入的數(shù)據(jù)定義為存儲(chǔ)的數(shù)據(jù)加上虛擬地址的結(jié)構(gòu);應(yīng)用程序通過判斷頁空間的狀態(tài),存儲(chǔ)要寫入的數(shù)據(jù);當(dāng)一頁空間寫入數(shù)據(jù)滿后,則將有效數(shù)據(jù)復(fù)制到另一個(gè)處于頁清空狀態(tài)的頁空間;復(fù)制完畢后,頁空間進(jìn)行擦除操作并繼續(xù)寫數(shù)據(jù)。當(dāng)有大量重要的數(shù)據(jù)并且改變很頻繁的情況下,利用本發(fā)明的方法能及時(shí)保存及中斷恢復(fù)數(shù)據(jù);能保證數(shù)據(jù)存取靈活性。
文檔編號(hào)G06F12/06GK102521146SQ20111035091
公開日2012年6月27日 申請(qǐng)日期2011年11月8日 優(yōu)先權(quán)日2011年11月8日
發(fā)明者郭鑫俊 申請(qǐng)人:福建新大陸通信科技股份有限公司