專利名稱:基于NorFlash的數(shù)據(jù)滾存方法
技術(shù)領域:
此算法是應用于非文件系統(tǒng)的NorFlash存儲及文件系統(tǒng)尚未支持的大容量數(shù) 據(jù)存儲。
背景技術(shù):
在采用非文件系統(tǒng)的norflash存儲系統(tǒng)中,flash數(shù)據(jù)寫入一般需要四個過
程
1) 先讀取出要寫入塊的數(shù)據(jù),放入內(nèi)存中;
2) 擦除此塊
3) 修改內(nèi)存中塊的內(nèi)容
4) 再將內(nèi)存中數(shù)據(jù)寫入此塊。 以上的flash的存儲方法存在幾個缺點
1) 每次寫入數(shù)據(jù)都需要對flash進行一次擦除,因此大大加大了 flash的 擦除次數(shù),降低了 flash使用壽命。
2) 每次均都進行讀、寫、擦除操作,降低了寫入時間。
3) flash在擦除后,新的數(shù)據(jù)尚未寫入時,如果此時掉電,數(shù)據(jù)將不可恢 復,因此不能保證數(shù)據(jù)的完整。
基于以上原因,針對滾存數(shù)據(jù)的存儲特點,設計了滾存數(shù)據(jù)的存儲算法,以下 稱做滾存算法,它保證了寫數(shù)據(jù)時始終寫到干凈的flash塊上,寫時不需要擦除, 擦除操作是在整塊寫完之后進行的,由此它解決了傳統(tǒng)flash存儲的缺點。
發(fā)明內(nèi)容
本發(fā)明的方法是對當前Flash滾存數(shù)據(jù)方法的改進。在滾存的過程中,緩存 空間的2個塊始終可以寫入,這兩個塊主要起到了緩存的作用,因為數(shù)據(jù)直接寫 入這兩個塊中做擦除操作。該方法在程序邏輯上將滾存空間形成一個封閉環(huán),有 效存儲空間的初始地址出廠時默認設置為0x00000000,滾存數(shù)據(jù)長度置為0,在使 用過程中每次關(guān)閉機器時將此數(shù)據(jù)保存在文件中,啟動時取出賦到變量中,緩存 空間在滾存數(shù)據(jù)長度所在的塊和下一個塊,共2個塊的空間,緩存空間始終是可 寫的,也是程序始終寫入的空間,數(shù)據(jù)滾存步驟如下-
1) 對Flash分區(qū)根據(jù)系統(tǒng)的各種應用功能將Flash劃分成多個數(shù)據(jù)區(qū)域;
2) 滾存在非文件系統(tǒng)控制的Flash分區(qū)內(nèi),從某開始地址順序存儲數(shù)據(jù), 直到指定的結(jié)束地址,然后再跳轉(zhuǎn)到開始地址存儲,再次存儲時將覆蓋掉先前存 儲的數(shù)據(jù);
3) 滾存空間是指存儲數(shù)據(jù)的開始地址到結(jié)束地址的空間;
4) 緩存空間在滾存空間中指定2個或以上的Flash塊做緩存區(qū);
5) 有效存儲空間在滾存空間中有效數(shù)據(jù)占用的空間,即是去除緩存空間后 剩余的空間;
6) Flash擦除塊是指系統(tǒng)擦除Flash的基本單位,NorFlash擦除塊大小《
64K;
7) 滾存數(shù)據(jù)長度設定是指從有效存儲空間的起始地址當前寫入地址的長度;
Flash擦除塊大小64K
有效存儲空間大小為0x280000, 40個擦除塊; 緩存空間大小為0x20000, 2個擦除塊; 滾存空間的實地址是0x00000000—-0x002A0000。 本發(fā)明的有益效果是解決了寫入速度的問題,另外也不會出現(xiàn)斷電丟失數(shù)據(jù)的 現(xiàn)象,并且每個塊的擦寫次數(shù)只有一次,降到最低,使Flash的壽命得到極至延 長。主要應用于金融稅控收款機、稅控收款機、稅控器、稅控打印機、金融P0S 機、各類商業(yè)POS機等對大容量滾存數(shù)據(jù)的存儲。
附圖l是flash空間示意圖; 附圖2是滾存初始狀態(tài)附圖3是滾存一輪后的狀態(tài)圖。
具體實施例方式
1) 在程序邏輯上將滾存空間形成一個封閉環(huán);有效存儲空間的初始地址出 廠時默認設置為0x00000000,滾存數(shù)據(jù)長度置為0,在使用過程中每次關(guān)閉機器時 將此數(shù)據(jù)保存在文件中,啟動時取出賦到變量中(如圖2)。
2) 緩存空間在滾存數(shù)據(jù)長度所在的塊和下一個塊,共2個塊的空間。緩存 空間始終是可寫的,也是程序始終寫入的空間。
3) 機器出廠時,首先初始化緩存塊為干凈塊。
4) 從緩存塊起始地址寫數(shù)據(jù),如果數(shù)據(jù)寫完第一塊,則擦除第三塊,緩存 塊的起始地址變?yōu)榈诙K,那么第二塊和第三塊做為緩存塊。
5) 記錄下來當前滾存的數(shù)據(jù)長度。
6) 當滾存數(shù)據(jù)長度寫到有效存儲空間大小后,重置滾存數(shù)據(jù)長度為0,有 效存儲數(shù)據(jù)的起始地址置為當前地址,第一輪是即為0x280000。
7) 依次向下循環(huán)寫下去。
在滾存的過程中,緩存空間的2個塊始終可以寫入,這兩個塊主要起到了緩 存的作用,因為數(shù)據(jù)直接寫入這兩個塊中,做擦除操作。 實施實例
本發(fā)明的方法已經(jīng)在RE310上測試通過。
權(quán)利要求
1、基于NorFlash的數(shù)據(jù)滾存方法,其特征在于在程序邏輯上將滾存空間形成一個封閉環(huán),有效存儲空間的初始地址出廠時默認設置為0x00000000,滾存數(shù)據(jù)長度置為0,在使用過程中每次關(guān)閉機器時將此數(shù)據(jù)保存在文件中,啟動時取出賦到變量中,緩存空間在滾存數(shù)據(jù)長度所在的塊和下一個塊,共2個塊的空間,緩存空間始終是可寫的,也是程序始終寫入的空間,數(shù)據(jù)滾存步驟如下1)對Flash分區(qū)根據(jù)系統(tǒng)的各種應用功能將Flash劃分成多個數(shù)據(jù)區(qū)域;2)滾存在非文件系統(tǒng)控制的Flash分區(qū)內(nèi),從某開始地址順序存儲數(shù)據(jù),直到指定的結(jié)束地址,然后再跳轉(zhuǎn)到開始地址存儲,再次存儲時將覆蓋掉先前存儲的數(shù)據(jù);3)滾存空間是指存儲數(shù)據(jù)的開始地址到結(jié)束地址的空間;4)緩存空間在滾存空間中指定2個或以上的Flash塊做緩存區(qū);5)有效存儲空間在滾存空間中有效數(shù)據(jù)占用的空間,即是去除緩存空間后剩余的空間;6)Flash擦除塊是指系統(tǒng)擦除Flash的基本單位,NorFlash擦除塊大小≤64K;7)滾存數(shù)據(jù)長度設定是指從有效存儲空間的起始地址當前寫入地址的長度;Flash擦除塊大小64K有效存儲空間大小為0x280000,40個擦除塊;緩存空間大小為0x20000,2個擦除塊;滾存空間的實地址是0x00000000---0x002A0000。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于機器出廠時,首先初始化緩存塊 為干凈塊,從緩存塊起始地址寫數(shù)據(jù),數(shù)據(jù)寫完第一塊,則擦除第三塊,緩存塊 的起始地址變?yōu)榈诙K,第二塊和第三塊做為緩存塊。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于在滾存的過程中,記錄當前滾存 的數(shù)據(jù)長度,當滾存數(shù)據(jù)長度寫到有效存儲空間大小后,重置滾存數(shù)據(jù)長度為0, 有效存儲數(shù)據(jù)的起始地址置為當前地址,第一輪是0x280000。
全文摘要
本發(fā)明提供一種基于NorFlash的數(shù)據(jù)滾存方法是在程序邏輯上將滾存空間形成一個封閉環(huán),有效存儲空間的初始地址出廠時默認設置為0x00000000,滾存數(shù)據(jù)長度置為0,在使用過程中每次關(guān)閉機器時將此數(shù)據(jù)保存在文件中,啟動時取出賦到變量中,緩存空間在滾存數(shù)據(jù)長度所在的塊和下一個塊,共2個塊的空間,緩存空間始終是可寫的,也是程序始終寫入的空間,本發(fā)明的有益效果是解決了寫入速度的問題,另外也不會出現(xiàn)斷電丟失數(shù)據(jù)的現(xiàn)象,并且每個塊的擦寫次數(shù)只有一次,降到最低,使Flash的壽命得到極致延長。
文檔編號G06F12/02GK101354678SQ200810139440
公開日2009年1月28日 申請日期2008年9月10日 優(yōu)先權(quán)日2008年9月10日
發(fā)明者于秋粉, 劉來波, 周勝群 申請人:浪潮齊魯軟件產(chǎn)業(yè)有限公司