專利名稱:Flash文件系統(tǒng)的數(shù)據(jù)處理方法及數(shù)據(jù)處理裝置的制作方法
技術領域:
本發(fā)明涉及Flash文件系統(tǒng)的數(shù)據(jù)處理領域,特別是涉及一種Flash 文件系統(tǒng)的數(shù)據(jù)處理方法及一種Flash文件系統(tǒng)的數(shù)據(jù)處理裝置。
背景技術:
Flash文件系統(tǒng)(Flash File System, FFS )是采用Flash作為外存儲 器實現(xiàn)的文件系統(tǒng)。Flash是非易失存儲器,目前正逐步取代其它半導體 存儲器件而廣泛應用于移動電話、PDA以及數(shù)碼相機等移動電子產(chǎn)品中。 其作為存儲數(shù)據(jù)和應用程序的存儲體,可以將大量數(shù)據(jù)方便、快捷地移 動和交換。
Flash內(nèi)部分為多個存儲單元塊(block),每個存儲單元塊又由多個 頁(page)組成。存儲單元塊是可擦除的最小單位,頁是數(shù)據(jù)處理數(shù)據(jù)的 最小單位。Flash存儲器讀取數(shù)據(jù)與一般的存儲器類似,可以實現(xiàn)隨機讀 取。而Flash存儲器的寫操作則和一般的存儲器有所不同,F(xiàn)lash的寫操 作必須先按存儲單元塊擦除(例如,數(shù)據(jù)處理Oxff到要擦除的存儲單元 塊中),再按頁的順序數(shù)據(jù)處理。例如,假設一個存儲單元塊上保存著512 字節(jié)的數(shù)據(jù),現(xiàn)在需要修改該存儲單元塊的第1個字節(jié),過程如下
1 )擦除該存儲單元塊;
例如,將所述存儲單元塊上所有的字節(jié)都更改為Oxff。
2)在該存儲單元塊的第l字節(jié)中寫入新數(shù)據(jù),并在向該存儲單元塊 的其它511個字節(jié)中寫入舊數(shù)據(jù)。
這個過程需要一定的時間來完成,如果在這個過程中突然掉電,則 會出現(xiàn)數(shù)據(jù)丟失的問題,所以,解決掉電后數(shù)據(jù)恢復,即掉電保護的問 題是Flash的關4建技術之一。
再者,由于Flash有一定的使用壽命, 一般存儲單元塊的可擦除次數(shù) 為10-100萬次,所以隨著使用次數(shù)的增加,會有一些塊逐漸變得不穩(wěn) 定或失敗。因此,要盡量避免頻繁地對同一塊操作,以免造成Flash的提前損壞,即解決磨損均衡的問題是Flash的關鍵技術之二。
現(xiàn)有技術中,出于以上掉電保護和磨損均衡的需要,對Flash的某一 塊進行修改時,通常不會直接對該塊進行擦寫操作,而是另外找一塊沒 有使用的空閑塊,將新數(shù)據(jù)數(shù)據(jù)處理該空閑塊中;然后將舊塊標記為無 效,對上級的鏈接項進行修改,使其指向新塊。然而,在這種情況下, 對于本來只想修改一塊的內(nèi)容,卻不得不逐級向上修改很多塊的內(nèi)容, 不僅增加了時間成本,還過多占用系統(tǒng)資源,造成較大的系統(tǒng)開銷。
如授:外又7>告號為CN1266614C的中國專利文件就/>開了 一種在Flash 文件系統(tǒng)中加快邏輯塊映射速度的方法,用于提高查找數(shù)據(jù)塊的速度。 具體技術方案為在數(shù)據(jù)塊的狀態(tài)表項區(qū)中保存邏輯塊與數(shù)據(jù)塊的映射 信息,數(shù)據(jù)塊的數(shù)據(jù)區(qū)中保存與其映射的邏輯塊的內(nèi)容。包括
建立一個由表項組成的反向映射表, 一個表項對應一個邏輯塊; 在系統(tǒng)初始化過程中,將數(shù)據(jù)塊狀態(tài)表項區(qū)中記錄的映射信息,按 邏輯塊號與表項間的對應關系讀取到各表項中;
讀取某邏輯塊時,以其邏輯塊號作為表項索引查找反向映射表,定 位到表項,根據(jù)表項中記錄的映射信息,在Flash存儲器件中查找到數(shù)據(jù) 塊;
寫入某邏輯塊時,將更新數(shù)據(jù)寫入一新數(shù)據(jù)塊的空白數(shù)據(jù)區(qū)中和將 該邏輯塊與新數(shù)據(jù)塊間的映射信息寫入狀態(tài)表項區(qū)中,同時更新反向映 射表相應表項的映射信息。
可以看出,該方案通過將邏輯塊號和物理塊號的映射關系分散存儲 到每個塊中,開機后需要對全片范圍進行掃描,然后才能在內(nèi)存中構建 完整的邏輯塊號和物理塊號的映射表,需要付出較大的系統(tǒng)開銷,并且 會導致開機啟動時間過長,內(nèi)存占用較多的問題。
總之,目前需要本領域技術人員迫切解決的一個技術問題就是如 何能夠創(chuàng)新的提出 一種Flash文件系統(tǒng)的數(shù)據(jù)處理機制,用以在掉電保護 的基礎上,以較低的系統(tǒng)開銷實現(xiàn)Flash的磨損均衡的功能。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術問題是提供一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法,以在掉電保護的基礎上,以較低的系統(tǒng)開銷實現(xiàn)Flash的磨損均衡的 功能。
本發(fā)明的另 一個目的是將上述構思應用于具體的應用環(huán)境中,提供一 種Flash文件系統(tǒng)的數(shù)據(jù)處理裝置,從而保證該方法的實現(xiàn)和應用。
為解決上述技術問題,本發(fā)明實施例提供了一種Flash文件系統(tǒng)的數(shù) 據(jù)處理方法,所述Flash文件系統(tǒng)包括地址映射塊,所述地址映射塊記錄 有Flash文件中所有邏輯塊與物理塊的映射關系,所述方法包括
依據(jù)Flash文件的更新請求,在Flash文件系統(tǒng)的物理塊中查找第一 空閑塊,在所述第一空閑塊中寫入更新的Flash文件;
在所述F1 a s h文件系統(tǒng)的物理塊中繼續(xù)查找第二空閑塊,在所述第二 空閑塊中寫入更新的地址映射塊。
優(yōu)選的,所述地址映射塊還記錄有版本信息、寫入完成標識和有效標 識信息,所述寫入更新地址映射塊的步驟包括
生成所述更新地址映射塊的版本信息;
寫入所述更新Flash文件中相應的邏輯塊與第 一空閑塊的映射關系;
寫入原始地址映射塊中未更新的邏輯塊與物理塊的映射關系;
對所述更新地址映射塊標記寫入完成標識;
在所述更新地址映射塊中記錄有效標識,以及,在所述原始地址映射 塊中記錄無效標識。
優(yōu)選的,所述的方法,還包括:
依據(jù)當前具有有效標識的地址映射塊的數(shù)量,判斷是否發(fā)生了意外掉電。
優(yōu)選的,通過以下步驟判斷是否發(fā)生意外掉電
若當前僅有 一 個具有有效標識的地址映射塊,則判斷未發(fā)生意外掉
電;
若當前有兩個具有有效標識的地址映射塊,則判斷發(fā)生了意外掉電。
優(yōu)選的,所述的方法,還包括
如果發(fā)生意外掉電,則在復位后搜索所述更新地址映射塊的寫入完 成標識,若有,則依據(jù)所述更新的地址映射塊恢復新數(shù)據(jù);若沒有,則 依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)。優(yōu)選的,在依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)時,所述的方法還
包括
擦除所述更新地址映射塊。 '
優(yōu)選的,通過以下步驟查找空閑塊
依據(jù)所述地址映射塊中記錄的邏輯塊與物理塊的映射關系查找空閑塊。
本發(fā)明實施例還公開了一種Flash文件系統(tǒng)的數(shù)據(jù)處理裝置,所述 Flash文件系統(tǒng)包括地址映射塊,所述地址映射塊記錄有Flash文件中所 有邏輯塊與物理塊的映射關系,所述裝置包括
第一空塊查找模塊,用于依據(jù)Flash文件的更新請求,在Flash文件 系統(tǒng)的物理塊中查找第 一 空閑塊;
第一寫入模塊,用于在所述第一空閑塊中寫入更新的Flash文件;
第二空塊查找模塊,用于在所述Flash文件系統(tǒng)的物理塊中繼續(xù)查找 第二空閑塊;
第二寫入模塊,用于在所述第二空閑塊中寫入更新的地址映射塊。 優(yōu)選的,所述地址映射塊還記錄有版本信息、寫入完成標識和有效標
識信息,所述第二寫入模塊包括
版本更新子模塊,用于生成所述更新地址映射塊的版本信息; 映射更新子才莫塊,用于寫入所述更新Flash文件中相應的邏輯塊與第
一空閑塊的映射關系;
映射保留子模塊,用于寫入原始地址映射塊中未更新的邏輯塊與物理
塊的映射關系;
完成標識子才莫塊,用于對所述更新地址映射塊標記寫入完成標識; 有效標識子^^莫塊,用于在所述更新地址映射塊中記錄有效標識,以及, 在所述原始地址映射塊中記錄無效標識。 優(yōu)選的,所述的裝置,還包括
掉電判斷模塊,用于依據(jù)當前具有有效標識的地址映射塊的數(shù)量,判 斷是否發(fā)生意外掉電。
優(yōu)選的,所述的裝置,還包括
復位搜索模塊,用于在掉電復位后搜索所述更新地址映射塊的寫入
8完成標識,若有,則觸發(fā)新數(shù)據(jù)恢復模塊;若沒有,則觸發(fā)舊數(shù)據(jù)恢復 模塊;
新數(shù)據(jù)恢復模塊,用于依據(jù)所述炎新的地址映射塊恢復新數(shù)據(jù); 舊數(shù)據(jù)恢復模塊,用于依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)。 優(yōu)選的,所述的裝置,還包括
擦除模塊,用于在依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)時,擦除所述 更新地址映射塊。
與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點
首先,本發(fā)明基于記錄有Flash文件中所有邏輯塊與物理塊的映射關 系的地址映射塊,在所述Flash文件系統(tǒng)的整個物理塊中循環(huán)處理^:據(jù), 具體為,在更新文件的某塊數(shù)據(jù)時,不對其物理塊進行修改,而通過查 找另外的空閑塊,在該空閑塊中寫入更新文件,然后再依據(jù)該塊數(shù)據(jù)的 新的地址映射關系來生成新的地址映射塊。處理后,舊數(shù)據(jù)所在的物理 塊從使用中的物理塊變成了空閑塊,而新數(shù)據(jù)所在的物理塊從空閑塊變 成了使用中的物理塊,可以看出,這種數(shù)據(jù)處理方法不會使某個物理塊 存在特別的、多于其它物理塊的擦寫次數(shù),因而很好地實現(xiàn)了整個Flash 的磨損均衡功能。
再者,本發(fā)明通過在地址映射塊中進一步記錄版本信息、寫入完成標 識和有效標識信息,結合以上數(shù)據(jù)處理方法,來監(jiān)控掉電的情況以及進 行掉電復位后的數(shù)據(jù)恢復操作,即可進一 步保證在掉電保護的基礎上, 以非常小的系統(tǒng)開銷來實現(xiàn)Flash的磨損均衡功能。
圖l是本發(fā)明的一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法實施例1的流程圖; 圖2是本發(fā)明的一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法實施例2的流程圖; 圖3是本發(fā)明的一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法實施例3的流程圖; 圖4是一個具體實例中數(shù)據(jù)處理初始狀態(tài)的示意圖; 圖5是一個具體實例中數(shù)據(jù)處理過程中執(zhí)行完第1步的示意圖; 圖6是一個具體實例中數(shù)據(jù)處理過程中執(zhí)行完第2步的示意圖;圖7是一個具體實例中數(shù)據(jù)處理過程中執(zhí)行完第3步的示意圖; 圖8是一個具體實例中數(shù)據(jù)處理過程中執(zhí)行完第4步的示意圖; 閨9是本發(fā)明的一種Flash文件系統(tǒng)的數(shù)據(jù)處理裝置實施例的結構框
圖IO是應用圖9所示的優(yōu)選實施例進行Flash文件系統(tǒng)的數(shù)據(jù)處理 的方法流程圖。
具體實施例方式
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合 附圖和具體實施方式
對本發(fā)明作進一步詳細的說明。
一般來說,整個Flash文件系統(tǒng)可以分為兩個層次,第一層用于直接 和物理硬件接觸,管理Flash物理存儲器;第二層用于在基層之上,實現(xiàn) 文件管理,如實現(xiàn)FAT。本發(fā)明實施例主要涉及Flash文件系統(tǒng)第一層的 相關內(nèi)容。
本發(fā)明實施例的核心構思之一在于,創(chuàng)建記錄有Flash文件中所有邏 輯塊與物理塊的映射關系的地址映射塊,在所述Flash文件系統(tǒng)的整個物 理塊中循環(huán)處理數(shù)據(jù),具體為,在更新文件的某塊數(shù)據(jù)時,不對其物理 塊進行修改,而通過查找另外的空閑塊,在該空閑塊中寫入更新文件, 然后再依據(jù)該塊數(shù)據(jù)的新的地址映射關系來生成新的地址映射塊。并進 一步地,在地址映射塊中記錄版本信息、寫入完成標識和有效標識信息, 用以監(jiān)控掉電情況并進行復位后的數(shù)據(jù)恢復操作,從而使本發(fā)明能在掉 電保護的基礎上,以較低的系統(tǒng)開銷實現(xiàn)Flash的磨損均衡的功能。
參考圖1,示出了本發(fā)明的一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法實施 例1的流程圖,所述Flash文件系統(tǒng)包括地址映射塊,所述地址映射塊記 錄有Flash文件中所有邏輯塊與物理塊的映射關系,本實施例可以包括以 下步驟
步驟101、依據(jù)Flash文件的更新請求,在Flash文件系統(tǒng)的物理塊 中查找第一空閑塊;
步驟102、在所述第一空閑塊中寫入更新的Flash文件;
步驟103、在所述Flash文件系統(tǒng)的物理塊中繼續(xù)查找第二空閑塊;步驟104、在所述第二空閑塊中寫入更新的地址映射塊。
可以看出,本發(fā)明的邏輯塊可用于保存Flash文件的特定數(shù)據(jù),為實 現(xiàn)磨損均衡的功能,邏輯塊與Flash文件系統(tǒng)的物理塊存在動態(tài)的映射關 系,優(yōu)選的,所述邏輯塊與物理塊的映射關系可以通過邏輯塊號與物理 塊號的映射表來表示。在實際中,根據(jù)Flash的大小,所述地址映射塊可 以為多個。
在本實施例中,所述空閑塊可以依據(jù)所述地址映射塊中記錄的邏輯 塊與物理塊的映射關系查找空閑塊。
例如,維護一個查找起始的物理塊號n,開機后,將n初始化為0, 查找第一空閑塊的過程為
1) 讀出物理塊號為n的邏輯塊的第一個字節(jié),假設為m;
2) 如果m等于0xff,則確定該塊為第一空閑塊; 其中,Oxff是現(xiàn)有技術中空閑塊的狀態(tài)標識。
3 )如果m不等于Oxff,則在地址映射塊中查找邏輯塊號m對應的物 理塊號,假設為1;
4)如果l不等于n,則確定該塊為第一空閑塊;否則,執(zhí)行下一步; 5 )將n力口 1;
6) 如果n等于FLASH中物理塊的數(shù)量,則n=0;
7) 返回步驟1)。
在找到第一空閑塊之后,保留n的值,下一次查找第二空閑塊時則 可以依據(jù)該n的值進4亍。
當然,以上查找空閑塊的過程僅僅作為一種示例,在實際中,本領 域技術人員采用任一種查找空閑塊的方法都是可行的,例如,在預置空 閑塊隊列中按順序選取相應的空閑塊等,本發(fā)明對此無需作出限制。
參考圖2,示出了本發(fā)明的一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法實施 例2的流程圖,所述Flash文件系統(tǒng)包括地址映射塊,所述地址映射塊記 錄有Flash文件中所有邏輯塊與物理塊的映射關系、版本信息、寫入完成 標識和有效標識信息,本實施例可以包括以下步驟
步驟201、依據(jù)Flash文件的更新請求,在Flash文件系統(tǒng)的物理塊中查找第一空閑塊;
步驟202、在所述第一空閑塊中寫入更新的Flash文件; 步驟203 、在所述Flash文件系統(tǒng)的物理塊中繼續(xù)查找第二空閑塊; 步驟204、在所述第二空閑塊中寫入更新的地址映射塊。 具體地,本步驟可以包括以下子步驟 子步驟2041、生成所述更新地址映射塊的版本信息; 子步驟2042、寫入所述更新Flash文件中相應的邏輯塊與第 一空閑塊 的映射關系;
子步驟2043、寫入原始地址映射塊中未更新的邏輯塊與物理塊的映 射關系;
子步驟2044、對所述更新地址映射塊標記寫入完成標識;
子步驟2045、在所述更新地址映射塊中記錄有效標識,以及,在所
述原始地址映射塊中記錄無效標識。
例如,假設地址映射塊的大小為512B,則某個地址映射塊記錄的內(nèi)
容可以參考下表
字節(jié)內(nèi)容
1邏輯塊號
2當前地址映射塊標識
3版本信息
4映射表項1
510映射表項507
511寫入完成一示識
512有效標識信息
其中,當前地址映射塊標識是為了將地址映射塊與其它塊,如系統(tǒng) 信息塊等區(qū)分開來而設置的,在具有多個地址映射塊的情況下,所述當 前地址映射塊標識還可以包括區(qū)分不同地址映射塊的序號信息。所述映 射表項為邏輯塊號與物理塊號的映射表,即記錄所述邏輯塊與物理塊的
映射關系表;所述寫入完成標識可以由本領域技術人員根據(jù)實際需要或 經(jīng)-瞼任意設置,例如,設置0x00為寫入完成標識;所述有效標識信息也可任意設置,例如,設置0xFF為有效標識,其它〗直為無效標識等,本發(fā)
明對此不作限制。
以下以 一 個簡單示例進 一 步說明本實施例。
假設要修改邏輯塊ln中的數(shù)據(jù),對應物理塊為pn,數(shù)據(jù)處理過程為
a) 查找到物理塊號為pm的空閑塊;
b) 將修改后的新數(shù)據(jù)寫入pm;
c) 查找到物理塊號為pl的空閑塊,在pl中寫入更新的地址映射塊 Nmap。
更新的地址映射塊Nmap包括以下內(nèi)容
cl)讀取原始物理塊pn的版本信息,依據(jù)該舊版本信息生成新版本 信息,寫入Nmap;
c2 )將需要修改的映射項,即,將原來ln—pn的映射項,修改為ln—pm 的映射項,寫入Nmap;
c3)將原始地址映射塊中其它的映射項寫入Nmap;
假設In—pn的映射項對應上表的映射表項1,如果當前僅對該映射 表項1進行了修改,則還要將其它未作修改的映射表項2—映射表項507 寫入新的地址映射塊中。
C4 )將原始地址映射塊的邏輯塊號和當前地址映射塊標識寫入 Nmap;
C5 )將Nmap的寫入完成標識置為0x00;
C6)將原始地址映射塊的有效標識信息置為0x00,即無效標識。
參考圖3,示出了本發(fā)明的一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法實施 例3的流程圖,所述Flash文件系統(tǒng)包括地址映射塊,所述地址映射塊記 錄有Flash文件中所有邏輯塊與物理塊的映射關系、版本信息、寫入完成 標識和有效標識信息,本實施例可以包括以下步驟
步驟301、依據(jù)Flash文件的更新請求,在Flash文件系統(tǒng)的物理塊 中查找第一空閑塊;
步驟302、在所述第一空閑塊中寫入更新的Flash文件;
步驟303、在所述Flash文件系統(tǒng)的物理塊中繼續(xù)查找第二空閑塊;步驟304、在所述第二空閑塊中寫入更新的地址映射塊。 優(yōu)選的,本步驟可以包括以下子步驟 子步驟3041、生成所述更新地址映射塊的版本信息; 子步驟3042、寫入所述更新Flash文件中相應的邏輯塊與第 一空閑塊 的映射關系;
子步驟3043、寫入原始地址映射塊中未更新的邏輯塊與物理塊的映 射關系;
子步驟3044、對所述更新地址映射塊標記寫入完成標識;
子步驟3045、在所述更新地址映射塊中記錄有效標識,以及,在所
述原始地址映射塊中記錄無效標識。
步驟305、依據(jù)當前具有有效標識的地址映射塊的數(shù)量,判斷是否發(fā)
生意外掉電;
優(yōu)選的,可以通過以下子步驟判斷是否發(fā)生意外掉電 子步驟3051、若當前僅有一個具有有效標識的地址映射塊,則判斷 未發(fā)生意外掉電;
子步驟3052、若當前有兩個具有有效標識的地址映射塊,則判斷發(fā) 生了意外掉電,觸發(fā)步驟306;
步驟306、在復位后搜索所述更新地址映射塊的寫入完成標識,若有, 則執(zhí)行步驟307;若沒有,則執(zhí)行步驟308;
步驟307、依據(jù)所述更新的地址映射塊恢復新數(shù)據(jù);
步驟308、依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù),并擦除所述更新地 址映射塊。
以下以 一個簡單示例進一步說明本實施例復位后的操作。
應用本實施例,復位后將首先搜索整個FLASH文件系統(tǒng)中所有的塊,
在所有的塊中根據(jù)邏輯塊號、地址映射塊標識、有效標識信息來判斷每
個塊是否為有效的地址映射塊。在這種情況下,
a、 如果搜索到1個有效的地址映射塊則認為沒有發(fā)生意外掉電;
b、 如果搜索到2個有效的地址映射塊則認為發(fā)生了意外掉電,則可 以進行如下4喿作
bl )如果新地址映射塊的寫入完成標識為0x00 (表示寫入完成),則
14接受新地址映射塊,將舊地址映射塊寫為無效;
b2)如果新地址映射塊的寫完成標識為其它(表示寫入未完成),則
接受舊地址映射塊,擦除新地址映射塊。
在這種情況下,對于搜索到其它數(shù)量的有效地址映射塊可以認為尚 未構建文件系統(tǒng)。
需要說明的是,上述通過1個有效地址映射塊判定沒發(fā)生掉電,而
通過2個有效地址判定發(fā)生掉電僅僅是一種示例,在實際中,根據(jù)地址 映射塊的數(shù)量,可能對應其它不同個數(shù)的情形,本發(fā)明對此不需要做出 限定。
以下結合上述方法實施例2和3的簡單示例,簡單說明掉電保護的 實現(xiàn)原理
如果在實施例2的簡單示例中的c4步驟完成之前意外掉電,復位搜 索將搜索到1個地址映射塊,此時將接受舊數(shù)據(jù),即對舊數(shù)據(jù)進行恢復; 如果在c4步驟完成之前意外掉電,復位搜索將搜索到2個地址映射塊, 由于新地址映射塊尚未完成寫入,此時仍將接受舊數(shù)據(jù),即對舊數(shù)據(jù)進 行恢復;如果在c6步驟完成之前意外掉電,復位搜索將搜索到2個地址 映射塊,此時新版本的地址映射塊已經(jīng)寫入完成,將接受新數(shù)據(jù),即對 新數(shù)據(jù)進行恢復。
以下通過一個具體例子對本發(fā)明進一步說明。
參考圖4所示的Flash文件系統(tǒng)初始狀態(tài)示意圖,,支設一個Flash文 件系統(tǒng)包括5個物理塊,其初始狀態(tài)為,第l塊為地址映射塊Map;第2 塊保存著文件1的數(shù)據(jù),標記為Filel;第3塊保存著文件2的數(shù)據(jù)標記 為File2;第4塊和第5塊為空閑塊。
在未更新之前,初始的地址映射塊Map記錄File 1的映射關系可以為, L1一P2,即邏輯塊1與物理塊2對應;記錄File2的映射關系可以為, L2—P32,即邏輯塊2與物理塊3對應。
1、如果要更新修改Filel,則第一步找到新的空閑塊(即第4塊), 將Filel的新數(shù)據(jù)NewFilel寫入第4塊;此時第2塊上,F(xiàn)ilel的舊數(shù)據(jù) 仍然在第2塊。本步驟處理的示意圖如圖5所示??梢岳斫獾氖?,經(jīng)過步驟1的處理,F(xiàn)ilel對應的邏輯塊與物理塊的 映射關系發(fā)生了改變,即從原來的L1—P2,變成了現(xiàn)在的L1—P4。在這 種情況下,則需要生成 一 個新的地址映射塊來記錄更新的映射關系。
2、 再找一個空閑塊(即第5塊),寫入更新的地址映射塊NewMap; 此時第l塊上,舊的地址映射塊Map依然存在。本步驟處理的示意圖如 圖6所示。
3、 公知的是,F(xiàn)lash存儲器中"寫入"是將對應單元由"1"變"0","擦 除"是由"0"變?yōu)?1"。此時,新的文件NewFile 1和新的映射關系NewMap 都已經(jīng)存在文件系統(tǒng)中,那么舊的文件File 1和舊的映射關系Map映射關 系就擦除了。本步驟處理后的示意圖如圖7所示。
4、 如果需要進一步更新File2,則可以依據(jù)上述過程查找到第一空閑 塊(第1塊)寫入NewFile2,查找到第二空閑塊(第2塊)寫入NewMap, 即處理后的示意圖可以如圖8所示,本發(fā)明對此不作贅述。
在上例的處理過程中, 一旦發(fā)生掉電,復位之后將在整個物理空間 中,搜索地址映射塊。對于恢復數(shù)據(jù)處理的具體情形可以為
(1 )如果在第2步開始前,發(fā)生了意外掉電,由于此時Flash文件 系統(tǒng)中,新地址映射塊尚未形成,只有圖6中舊的^t據(jù)Filel (第2塊) 和地址映射塊Map (第1塊),所以系統(tǒng)將恢復舊數(shù)據(jù)。
(2) 如果在第2步結束前,發(fā)生了意外掉電,由于此時Flash中, 新地址映射塊已經(jīng)開始創(chuàng)建了,但是尚未完成。地址映射塊的修改過程 中,哪些字節(jié)先寫,哪些字節(jié)后寫,是有一定的順序的,該順序保證了 在第2步徹底結束前,新地址映射塊都不會具備一個地址映射塊的特征。 所以,復位之后,還是只會搜索到舊地址映射塊,還是會恢復舊數(shù)據(jù)。
(3) 如果在第3步完成前發(fā)生了掉電,此時系統(tǒng)中可能存在新舊兩 個Filel,和新舊兩個地址映射塊。那么復位后,會4叟索到兩個地址映射 塊,此時通過比較地址映射塊的版本(記錄在地址映射塊中)可以知道, 哪個新,哪個舊。然后恢復新數(shù)據(jù)即可。
對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列 的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動 作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均 屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
上述實施例均采用遞進的方式描述,各個實施例之間相同相似的部 分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。
參考圖9,示出了本發(fā)明的一種Flash文件系統(tǒng)的數(shù)據(jù)處理裝置實施 例的結構框圖,所述Flash文件系統(tǒng)包括地址映射塊,所述地址映射塊記 錄有Flash文件中所有邏輯塊與物理塊的映射關系,所述裝置可以包括以 下模塊
第一空塊查找沖莫塊901,用于依據(jù)Flash文件的更新請求,在Flash
文件系統(tǒng)的物理塊中查找第一空閑塊;
第 一寫入模塊902,用于在所述第 一空閑塊中寫入更新的Flash文件; 第二空塊查找模塊903 ,用于在所述Flash文件系統(tǒng)的物理塊中繼續(xù)
查找第二空閑塊;
第二寫入模塊904,用于在所述第二空閑塊中寫入更新的地址映射塊。
優(yōu)選的,所述地址映射塊還記錄有版本信息、寫入完成標識和有效 標識信息,所述第二寫入模塊可以包括以下子模塊
版本更新子模塊,用于生成所述更新地址映射塊的版本信息;
映射更新子模塊,用于寫入所述更新Flash文件中相應的邏輯塊與第 一空閑塊的映射關系;
映射保留子模塊,用于寫入原始地址映射塊中未更新的邏輯塊與物 理塊的映射關系;
完成標識子才莫塊,用于對所述更新地址映射塊標記寫入完成標識;
有效標識子模塊,用于在所述更新地址映射塊中記錄有效標識,以 及,在所述原始地址映射塊中記錄無效標識。
優(yōu)選的,本實施例還可以包括
掉電判斷模塊,用于依據(jù)當前具有有效標識的地址映射塊的數(shù)量, 判斷是否發(fā)生意外掉電。
優(yōu)選的,本實施例還可以包括復位搜索模塊,用于在掉電復位后搜索所述更新地址映射塊的寫入 完成標識,若有,則觸發(fā)新數(shù)據(jù)恢復模塊;若沒有,則觸發(fā)舊數(shù)據(jù)恢復
模塊; -
新數(shù)據(jù)恢復模塊,用于依據(jù)所述更新的地址映射塊恢復新數(shù)據(jù); 舊數(shù)據(jù)恢復模塊,用于依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)。 優(yōu)選的,本實施例還可以包4舌
擦除模塊,用于在依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)時,擦除所 述更新地址映射塊。
參考圖IO,示出了應用圖9所示的優(yōu)選實施例進行Flash文件系統(tǒng)的 數(shù)據(jù)處理的流程圖,可以包括以下步驟
步驟IOOI、第一空塊查找才莫塊依據(jù)Flash文件的更新請求,在Flash 文件系統(tǒng)的物理塊中查找第 一 空閑塊;
步驟1002、第一寫入模塊在所述第一空閑塊中寫入更新的Flash文
件;
步驟1003、第二空塊查找模塊在所述Flash文件系統(tǒng)的物理塊中繼續(xù) 查找第二空閑塊;
步驟1004、第二寫入模塊在所述第二空閑塊中寫入更新的地址映射
塊;
優(yōu)選的,本步驟可以包括以下子步驟
子步驟Sl、版本更新子模塊生成所述更新地址映射塊的版本信息;
子步驟S2、映射更新子模塊寫入所述更新Flash文件中相應的邏輯 塊與第 一空閑塊的映射關系;
子步驟S3、映射保留子模塊寫入原始地址映射塊中未更新的邏輯塊 與物理塊的映射關系;
子步驟S4、完成標識子才莫塊對所述更新地址映射塊標記寫入完成標
識;
子步驟S5、有效標識子模塊在所述更新地址映射塊中記錄有效標識, 以及,在所述原始地址映射塊中記錄無效標識。
步驟1005、掉電判斷模塊依據(jù)當前具有有效標識的地址映射塊的數(shù)量,判斷是否發(fā)生意外掉電;
優(yōu)選的,可以通過以下子步驟判斷是否發(fā)生意外掉電 子步驟Q1、若當前僅有一個具有有效標識的地址映射塊,則判斷未 發(fā)生意外掉電;
子步驟Q2、若當前有兩個具有有效標識的地址映射塊,則判斷發(fā)生 了意外掉電,觸發(fā)復位搜索模塊;
步驟1006、復位搜索模塊在復位后搜索所述更新地址映射塊的寫入 完成標識,若有,則執(zhí)行步驟1007;若沒有,則執(zhí)行步驟1008;
步驟1007、新數(shù)據(jù)恢復模塊依據(jù)所述更新的地址映射塊恢復新數(shù)據(jù);
步驟1008、舊數(shù)據(jù)恢復模塊依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù), 并通過擦除模塊擦除所述更新地址映射塊。
隨著嵌入式系統(tǒng)越來越廣泛的應用,嵌入式系統(tǒng)中有大量的數(shù)據(jù)需 要存儲和管理。Flash存儲器具有容量大、體積小、功耗小、成本低、掉 電后數(shù)據(jù)不丟失、讀訪問速度高、抗震性好等一系列的優(yōu)點,已經(jīng)成為 嵌入式系統(tǒng)中廣泛應用的存儲器件。但是隨著系統(tǒng)復雜性的增加和存儲 器容量的加大,如何高效地存儲和管理數(shù)據(jù)成為一個重要的課題。引入 嵌入式Flash文件系統(tǒng),正是解決這個問題的好辦法。由于嵌入式系統(tǒng)中 有不少地方需要事務處理,即連續(xù)多個寫操作,要么同時失敗,要么同 時成功??紤]到嵌入式系統(tǒng)的資源非常緊張,事務處理可以由Flash文件 系統(tǒng)來支持。這樣做效率更高,應用更簡單。應用本發(fā)明數(shù)據(jù)處理裝置 的事務處理過程為在啟動了一個事務之后,第一次寫操作中的地址映 射塊修改過程只執(zhí)行前述子步驟Sl和S2;后續(xù)寫操作中的地址映射塊修 改過程,只執(zhí)行子步驟S2 (在實際中,大多數(shù)情況下是這樣,但如果新 修改的數(shù)據(jù)塊是事務中前面寫操作已經(jīng)修改過的,則需要重新執(zhí)行前述 子步驟S1和S2);結束事務的時候,再執(zhí)行子步驟S1——S5;事務進行 中,由文件系統(tǒng)維護舊地址映射塊和新地址映射塊的相關信息。事物進 行中,讀操作返回最新的數(shù)據(jù)。由此,通過地址映射塊則實現(xiàn)了多次寫 操作的同步。
對于裝置實施例而言,由于其基本相應于方法實施例,所以描述的 比較簡單,相關之處參見方法實施例的部分說明即可。
19需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅 用來將一個實體或者操作與另 一個實體或操作區(qū)分開來,而不一定要求 或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且, 術語"包括"、"包含,,或者其任何其他變體意在涵蓋非排他性的包含,從而 使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素, 而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、 物品或者設備所固有的要素。在沒有更多限制的情況下,由語句"包括一 個......"限定的要素,并不排除在包括所述要素的過程、方法、物品或者
設備中還存在另外的相同要素。
本發(fā)明可用于眾多通用或專用的計算系統(tǒng)環(huán)境或配置中。例如個
人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、多處 理器系統(tǒng)、包括以上任何系統(tǒng)或設備的分布式計算環(huán)境等等。
本發(fā)明可以在由計算機執(zhí)行的計算機可執(zhí)行指令的 一般上下文中描 述,例如程序模塊。 一般地,程序模塊包括執(zhí)行特定任務或實現(xiàn)特定抽 象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等等。也可以在分布 式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡
而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊 可以位于包括存儲設備在內(nèi)的本地和遠程計算機存儲介質中。
以上對本發(fā)明所提供的一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法、 一種 Flash文件系統(tǒng)的數(shù)據(jù)處理裝置進行了詳細介紹,本文中應用了具體個例 對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫 助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員, 依據(jù)本發(fā)明的思想,在具體實施方式
及應用范圍上均會有改變之處,綜 上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。
權利要求
1、一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法,其特征在于,所述Flash文件系統(tǒng)包括地址映射塊,所述地址映射塊記錄有Flash文件中所有邏輯塊與物理塊的映射關系,所述方法包括依據(jù)Flash文件的更新請求,在Flash文件系統(tǒng)的物理塊中查找第一空閑塊,在所述第一空閑塊中寫入更新的Flash文件;在所述Flash文件系統(tǒng)的物理塊中繼續(xù)查找第二空閑塊,在所述第二空閑塊中寫入更新的地址映射塊。
2、 如權利要求l所述的方法,其特征在于,所述地址映射塊還記錄有 版本信息、寫入完成標識和有效標識信息,所述寫入更新地址映射塊的步 驟包括生成所述更新地址映射塊的版本信息;寫入所述更新Flash文件中相應的邏輯塊與第 一 空閑塊的映射關系; 寫入原始地址映射塊中未更新的邏輯塊與物理塊的映射關系; 對所述更新地址映射塊標記寫入完成標識;在所述更新地址映射塊中記錄有效標識,以及,在所述原始地址映射 塊中記錄無效標識。
3、 如權利要求2所述的方法,其特征在于,還包括依據(jù)當前具有有效標識的地址映射塊的數(shù)量,判斷是否發(fā)生了意外掉電。
4、 如權利要求3所述的方法,其特征在于,通過以下步驟判斷是否發(fā) 生意外掉電若當前僅有 一 個具有有效標識的地址映射塊,則判斷未發(fā)生意外掉電; 若當前有兩個具有有效標識的地址映射塊,則判斷發(fā)生了意外掉電。
5、 如權利要求4所述的方法,其特征在于,還包括如果發(fā)生意外掉電,則在復位后搜索所述更新地址映射塊的寫入完成 標識,若有,則依據(jù)所述更新的地址映射塊恢復新數(shù)據(jù);若沒有,則依據(jù) 所述原始地址映射塊恢復舊數(shù)據(jù)。
6、 如權利要求5所述的方法,其特征在于,在依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)時,還包括擦除所述更新地址映射塊。
7、 如前述任一項權利要求所述的方法,其特征在于,通過以下步驟查 找空閑塊依據(jù)所述地址映射塊中記錄的邏輯塊與物理塊的映射關系查找空閑塊。
8、 一種Flash文件系統(tǒng)的數(shù)據(jù)處理裝置,其特征在于,所述Flash文 件系統(tǒng)包括地址映射塊,所述地址映射塊記錄有Flash文件中所有邏輯塊與 物理塊的映射關系,所述裝置包括第一空塊查找模塊,用于依據(jù)Flash文件的更新請求,在Flash文件系統(tǒng)的物理塊中查找第一空閑塊;第一寫入模塊,用于在所述第一空閑塊中寫入更新的Flash文件;第二空塊查找模塊,用于在所述Flash文件系統(tǒng)的物理塊中繼續(xù)查找第二空閑塊;第二寫入模塊,用于在所述第二空閑塊中寫入更新的地址映射塊。
9、 如權利要求8所述的裝置,其特征在于,所述地址映射塊還記錄有 版本信息、寫入完成標識和有效標識信息,所述第二寫入模塊包括版本更新子模塊,用于生成所述更新地址映射塊的版本信息; 映射更新子模塊,用于寫入所述更新Flash文件中相應的邏輯塊與第一空閑塊的映射關系;映射保留子模塊,用于寫入原始地址映射塊中未更新的邏輯塊與物理塊的映射關系;完成標識子模塊,用于對所述更新地址映射塊標記寫入完成標識; 有效標識子模塊,用于在所述更新地址映射塊中記錄有效標識,以及, 在所述原始地址映射塊中記錄無效標識。
10、 如權利要求9所述的裝置,其特征在于,還包括 掉電判斷模塊,用于依據(jù)當前具有有效標識的地址映射塊的數(shù)量,判斷是否發(fā)生意外掉電。
11、 如權利要求IO所述的裝置,其特征在于,還包括復位搜索模塊,用于在掉電復位后搜索所述更新地址映射塊的寫入完成標識,若有,則觸發(fā)新數(shù)據(jù)恢復模塊;若沒有,則觸發(fā)舊數(shù)據(jù)恢復模塊;新數(shù)據(jù)恢復模塊,用于依據(jù)所述更新的地址映射塊恢復新數(shù)據(jù);舊數(shù)據(jù)恢復模塊,用于依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)。
12、如權利要求11所述的裝置,其特征在于,還包括擦除模塊,用于在依據(jù)所述原始地址映射塊恢復舊數(shù)據(jù)時,擦除所述 更新地址映射塊。
全文摘要
本發(fā)明提供了一種Flash文件系統(tǒng)的數(shù)據(jù)處理方法,所述Flash文件系統(tǒng)包括地址映射塊,所述地址映射塊記錄有Flash文件中所有邏輯塊與物理塊的映射關系,所述方法包括依據(jù)Flash文件的更新請求,在Flash文件系統(tǒng)的物理塊中查找第一空閑塊,在所述第一空閑塊中寫入更新的Flash文件;在所述Flash文件系統(tǒng)的物理塊中繼續(xù)查找第二空閑塊,在所述第二空閑塊中寫入更新的地址映射塊。本發(fā)明可以在掉電保護的基礎上,以較低的系統(tǒng)開銷實現(xiàn)Flash的磨損均衡的功能。
文檔編號G06F12/16GK101526927SQ20081010153
公開日2009年9月9日 申請日期2008年3月7日 優(yōu)先權日2008年3月7日
發(fā)明者傅宇晨, 賁 劉 申請人:北京華虹集成電路設計有限責任公司