亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種嵌入式快閃存儲(chǔ)器、存儲(chǔ)系統(tǒng)及其數(shù)據(jù)掉電保護(hù)方法

文檔序號(hào):6463113閱讀:224來(lái)源:國(guó)知局
專利名稱:一種嵌入式快閃存儲(chǔ)器、存儲(chǔ)系統(tǒng)及其數(shù)據(jù)掉電保護(hù)方法
技術(shù)領(lǐng)域
本發(fā)明涉及快閃存儲(chǔ)器(Flash,閃存)、存儲(chǔ)系統(tǒng)及其數(shù)據(jù)管理方法,尤其涉及一種通用文件系統(tǒng)下文件的掉電保護(hù)方法,用以解決關(guān)鍵信息的存儲(chǔ)安全性問(wèn)題。
背景技術(shù)
NAND閃存是以多個(gè)數(shù)據(jù)塊(block)的形式來(lái)組織數(shù)據(jù)的,每個(gè)數(shù)據(jù)塊中包含有固定數(shù)目的頁(yè)(page)。數(shù)據(jù)塊是閃存中最小的可擦除單元,而頁(yè)是閃存中最小的讀寫(xiě)單元。閃存中的數(shù)據(jù)塊又被稱為擦除塊(eraseblock)。閃存芯片和傳統(tǒng)的磁盤(pán)設(shè)備有兩個(gè)重要的區(qū)別首先,閃存中的扇區(qū)只能寫(xiě)入一次,對(duì)扇區(qū)中數(shù)據(jù)的更新并不是在數(shù)據(jù)修改后直接覆蓋原來(lái)的扇區(qū),而是寫(xiě)回到一個(gè)未使用過(guò)的新扇區(qū)中,而磁盤(pán)文件系統(tǒng)的更新方式是"就地更新,,(in-place update)。在閃存中,包含過(guò)時(shí)數(shù)據(jù)的扇區(qū)是無(wú)效扇區(qū),寫(xiě)入新數(shù)據(jù)的扇區(qū)是有效扇區(qū),初始化完成還沒(méi)有寫(xiě)入數(shù)據(jù)的扇區(qū)是空閑扇區(qū)。無(wú)效扇區(qū)只有等到該扇區(qū)所在的擦除塊被重新擦除之后才能再次作為空閑扇區(qū)寫(xiě)入數(shù)據(jù)。其次,閃存的使用壽命是以擦除次數(shù)來(lái)衡量的,其中一個(gè)數(shù)據(jù)塊的生命周期大約是擦除100000次。為了保證閃存中的數(shù)據(jù)塊大體上同時(shí)達(dá)到使用壽命,在閃存上建立的文件系統(tǒng)會(huì)盡量采取一些策略以確保擦除操作均勻分布在整個(gè)閃存中。正是這兩個(gè)區(qū)別導(dǎo)致了基于閃存文件系統(tǒng)和其它傳統(tǒng)磁盤(pán)文件系統(tǒng)的不同,因此不能直接在閃存中實(shí)現(xiàn)通用文件系統(tǒng)。
目前在閃存上建立文件系統(tǒng)有兩種方法:一種是直接在閃存芯片上建立原生的文件系統(tǒng),讓文件系統(tǒng)通過(guò)硬件驅(qū)動(dòng)直接管理閃存。另一種是將閃存設(shè)備模擬成與磁盤(pán)類似的塊設(shè)備,從而在模擬的塊設(shè)備上使用傳統(tǒng)的文件系統(tǒng)。
第 一種方法是在閃存上建立原生的文件系統(tǒng),讓文件系統(tǒng)通過(guò)硬件驅(qū)動(dòng)程序來(lái)直接管理閃存上的數(shù)據(jù)。比較常見(jiàn)的有日志文件系統(tǒng)(TheJoumallingFlash File system, JFFS/JFFS2),另一種閃存文件系統(tǒng)(Yet Another FlashFiling System, YAFFS), LFS文件管理器軟件(LFS File Manager Software,LFM),等。它們都是對(duì)閃存設(shè)備進(jìn)行直接管理的文件系統(tǒng),其管理的方法和曰志結(jié)構(gòu)文件系統(tǒng)US(Log-Structured File system)非常相似,都采用日志記錄的方法來(lái)管理閃存設(shè)備,這樣避免了閃存設(shè)備不能"就地更新"的問(wèn)題。向閃存中寫(xiě)入新數(shù)據(jù)時(shí),文件系統(tǒng)并不把原來(lái)的數(shù)據(jù)結(jié)點(diǎn)從閃存中擦除掉,而是在閃存的空閑區(qū)中生成新的數(shù)據(jù)結(jié)點(diǎn)。原有的數(shù)據(jù)結(jié)點(diǎn)變成過(guò)時(shí)的和無(wú)效的。由于保留了文件的歷史數(shù)據(jù),這樣就為恢復(fù)文件的舊數(shù)據(jù)提供了可能。日志記錄提高了閃存文件系統(tǒng)的穩(wěn)健性,是這類文件系統(tǒng)一大優(yōu)點(diǎn)。
采用第 一種方法的缺陷主要是專用的文件系統(tǒng)存在兼容性問(wèn)題。
第二種方法的系統(tǒng)架構(gòu)見(jiàn)圖1,其中NAND快閃傳輸層(NANDFlashTranslation Layer, NFTL)是基于虛擬塊映射的Flash動(dòng)態(tài)管理層,它屏蔽了物理Flash的缺陷,向上層應(yīng)用模塊提供統(tǒng)一的、連續(xù)的、可用的存儲(chǔ)介質(zhì)。通過(guò)這種途徑使傳統(tǒng)的文件系統(tǒng)感覺(jué)不到操作閃存設(shè)備和普通磁盤(pán)設(shè)備的不同,同時(shí)也實(shí)現(xiàn)了磨損均衡,保證了數(shù)據(jù)的可靠存儲(chǔ)。MTD (MemoryTechnology Device )內(nèi)存技術(shù)設(shè)備,是借用了 Linux系統(tǒng)中的 一個(gè)名詞,在這里它屏蔽了各個(gè)Flash芯片的差異,給上層提供了統(tǒng)一的操作接口,如讀、寫(xiě)、擦除等。
采用第二種方法的缺陷主要是NFTL并沒(méi)有實(shí)現(xiàn)基于文件的掉電保護(hù),在環(huán)境惡劣的嵌入式應(yīng)用系統(tǒng)中,如果在更新關(guān)鍵信息時(shí)發(fā)生系統(tǒng)掉電則是災(zāi)難性的。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種嵌入式快閃存儲(chǔ)器、嵌入式系統(tǒng)及其數(shù)據(jù)掉電保護(hù)方法,以克服在嵌入式閃存設(shè)備中應(yīng)用通用文件系統(tǒng)帶來(lái)的數(shù)據(jù)安全問(wèn)題。
為解決上述技術(shù)問(wèn)題,本發(fā)明首先提供一種嵌入式快閃存儲(chǔ)器,所述快閃存儲(chǔ)器的存儲(chǔ)空間包括目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū),其中,當(dāng)文件系統(tǒng)緩存向所述快閃存儲(chǔ)器回寫(xiě)數(shù)據(jù)時(shí),先執(zhí)行將所述數(shù)據(jù)寫(xiě)入所述備份數(shù)據(jù)區(qū)的過(guò)程,所述寫(xiě)入完成后,執(zhí)行再寫(xiě)入所述目的數(shù)據(jù)區(qū)的過(guò)程。
本發(fā)明還提供一種嵌入式系統(tǒng),包括嵌入式操作系統(tǒng)、文件系統(tǒng),以及存儲(chǔ)器,所述存儲(chǔ)器包括快閃存儲(chǔ)器,其特征在于,所述快閃存儲(chǔ)器的存儲(chǔ)空間包括目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū),所述嵌入式系統(tǒng)進(jìn)一步包括掉電保護(hù)模塊,用于當(dāng)文件系統(tǒng)緩存向所述快閃存儲(chǔ)器回寫(xiě)數(shù)據(jù)時(shí),執(zhí)行將所述數(shù)據(jù)先寫(xiě)入所述備份數(shù)據(jù)區(qū)的過(guò)程,執(zhí)行完所述寫(xiě)入之后,執(zhí)行再寫(xiě)入所述目的數(shù)據(jù)區(qū)的過(guò)程。
本發(fā)明進(jìn)而提供一種嵌入式系統(tǒng)的數(shù)據(jù)掉電保護(hù)方法,包括步驟
(A-l)在存儲(chǔ)器中記錄第一過(guò)程字節(jié),用于標(biāo)示掉電保護(hù)開(kāi)始;
(A-2)收集并整理文件系統(tǒng)緩存中需要回寫(xiě)的數(shù)據(jù),并將數(shù)據(jù)寫(xiě)入所述備份數(shù)據(jù)區(qū);
(A-3)在存儲(chǔ)器中記錄第二過(guò)程字節(jié),用于標(biāo)示數(shù)據(jù)已經(jīng)完整寫(xiě)入所述備份數(shù)據(jù)區(qū);
(A-4 )將所述已經(jīng)寫(xiě)入備份數(shù)據(jù)區(qū)的數(shù)據(jù)寫(xiě)入所述目的數(shù)據(jù)區(qū);
(A-5)在存儲(chǔ)器中記錄第三過(guò)程字節(jié),用于標(biāo)示數(shù)據(jù)已經(jīng)完整寫(xiě)入所述目的數(shù)據(jù)區(qū)。
當(dāng)系統(tǒng)上電后,加載文件系統(tǒng)之前,包括步驟
(B-l)檢查存儲(chǔ)器中記錄的過(guò)程字節(jié);
(B-2)如果為第二過(guò)程字節(jié),則將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)讀出作為數(shù)據(jù)源,寫(xiě)入所述目的數(shù)據(jù)區(qū),并在存儲(chǔ)器中記錄第三過(guò)程字節(jié)。
本發(fā)明實(shí)現(xiàn)了通用文件系統(tǒng)在惡劣的嵌入式環(huán)境下的應(yīng)用,保證了數(shù)據(jù)安全可靠。本發(fā)明方法實(shí)現(xiàn)簡(jiǎn)單,充分利用了NTFL已有的擦寫(xiě)均衡與壞塊管理。此外,由于寫(xiě)入前對(duì)緩存(Cache)的內(nèi)容進(jìn)行了簡(jiǎn)單的按塊排序,因此使用本發(fā)明方法并沒(méi)有降低寫(xiě)入的速度。


圖1是通用文件系統(tǒng)應(yīng)用于NAND Flash的架構(gòu)示意圖;圖2是加入本發(fā)明所述掉電保護(hù)模塊后的系統(tǒng)架構(gòu)示意圖;圖3是本發(fā)明的掉電保護(hù)機(jī)制的原理示意圖;圖4是本發(fā)明實(shí)現(xiàn)的數(shù)據(jù)掉電保護(hù)方法的數(shù)據(jù)寫(xiě)入流程圖;圖5是本發(fā)明實(shí)現(xiàn)的數(shù)據(jù)掉電保護(hù)方法的上電恢復(fù)的流程圖; 、 、 、—
圖7是本發(fā)明的一個(gè)應(yīng)用實(shí)例大容量智能卡的系統(tǒng)架構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明的主要思路在于通過(guò)在文件系統(tǒng)緩存(Cache)與Flash目的數(shù)據(jù)區(qū)之間建立一個(gè)動(dòng)態(tài)備份數(shù)據(jù)區(qū)的方式,實(shí)現(xiàn)了基于文件系統(tǒng)的掉電保護(hù),使得通用文件系統(tǒng)可以更可靠地用于環(huán)境惡劣的嵌入式Flash存儲(chǔ)器中。
由此,根據(jù)本發(fā)明實(shí)施例,快閃存儲(chǔ)器的存儲(chǔ)空間包括目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū),其中,當(dāng)文件系統(tǒng)緩存向所述快閃存儲(chǔ)器回寫(xiě)數(shù)據(jù)時(shí),先執(zhí)行將所述數(shù)據(jù)寫(xiě)入所述備份數(shù)據(jù)區(qū)的過(guò)程,所述寫(xiě)入執(zhí)行完成后,執(zhí)行再寫(xiě)入所述目的數(shù)據(jù)區(qū)的過(guò)程。
在存儲(chǔ)系統(tǒng)中,進(jìn)一步包括用于存放過(guò)程字節(jié)的區(qū)域,所述過(guò)程字節(jié)標(biāo)示了所述數(shù)據(jù)寫(xiě)入過(guò)程的寫(xiě)入階段。該過(guò)程字節(jié)可以存放在與所述目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)相同的快閃存儲(chǔ)器中,如NAND Flash中,可選地,該過(guò)程字節(jié)也可以存放在存儲(chǔ)系統(tǒng)的其它存儲(chǔ)器中,如NORFlash、 EEPROM等,即不同于所述目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)所在的存儲(chǔ)器。
其中,該備份數(shù)據(jù)區(qū)包括數(shù)據(jù)區(qū)和開(kāi)銷區(qū),所述開(kāi)銷區(qū)包括數(shù)據(jù)寫(xiě)入所述目的數(shù)據(jù)區(qū)的邏輯塊號(hào)與頁(yè)偏移。
在寫(xiě)入過(guò)程中為每一階段記錄一個(gè)過(guò)程字節(jié),標(biāo)示寫(xiě)入過(guò)程進(jìn)入相應(yīng)寫(xiě)入階段,實(shí)現(xiàn)系統(tǒng)從意外掉電中恢復(fù)。這些過(guò)程字節(jié)可以預(yù)先定義,如在下面所介紹的定義為過(guò)程字節(jié)1、 2和3,分別表示標(biāo)示掉電保護(hù)開(kāi)始的階段;寫(xiě)入過(guò)程已完成了備份數(shù)據(jù)區(qū)的寫(xiě)入工作,可能已進(jìn)入寫(xiě)入目的數(shù)據(jù)區(qū)的工作,并寫(xiě)了部分?jǐn)?shù)據(jù),也可能剛完成寫(xiě)入備份數(shù)據(jù)區(qū)的工作,還未開(kāi)始寫(xiě)入目的數(shù)據(jù)區(qū)的工作的階段;和寫(xiě)入過(guò)程已完成了寫(xiě)入目的數(shù)據(jù)區(qū)的操作的階段,這三個(gè)階段也即上述的寫(xiě)入階段。
如圖2所示,為根據(jù)本發(fā)明的實(shí)施例所述的加入掉電保護(hù)模塊的嵌入式系統(tǒng)架構(gòu)示意圖,該嵌入式系統(tǒng)包括嵌入式操作系統(tǒng)文件系統(tǒng)、NFTL、 MTD以及包括快閃存儲(chǔ)器等的存儲(chǔ)器等部分,與圖1所述的系統(tǒng)結(jié)構(gòu)相比較,差別在于所述快閃存儲(chǔ)器的存儲(chǔ)空間包括目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū),所述嵌入式系統(tǒng)進(jìn)一步包括掉電保護(hù)模塊,用于當(dāng)文件系統(tǒng)緩存向該快閃存儲(chǔ)器回寫(xiě)數(shù)據(jù)時(shí),執(zhí)行將所述數(shù)據(jù)先寫(xiě)入所述備份數(shù)據(jù)區(qū)的過(guò)程,執(zhí)行完這個(gè)寫(xiě)入過(guò)程之后,再執(zhí)行將數(shù)據(jù)再寫(xiě)入所述目的數(shù)據(jù)區(qū)的過(guò)程。
所述掉電保護(hù)模塊進(jìn)一步用于根據(jù)當(dāng)前寫(xiě)入階段,在快閃存儲(chǔ)器中記
錄標(biāo)示當(dāng)前寫(xiě)入階段的過(guò)程字節(jié)。從而根據(jù)該過(guò)程字節(jié)實(shí)現(xiàn)系統(tǒng)在上電時(shí)從意外掉電中恢復(fù)。
系統(tǒng)上電后,在NFTL加載完成后,不是直接加載通用文件系統(tǒng),而是先運(yùn)行掉電恢復(fù)模塊,再加載通用文件系統(tǒng)。掉電保護(hù)模塊根據(jù)過(guò)程字節(jié)判斷當(dāng)前的寫(xiě)入階段,如果所述數(shù)據(jù)已經(jīng)寫(xiě)入備份數(shù)據(jù)區(qū)但尚未寫(xiě)入目的數(shù)據(jù)區(qū),則將寫(xiě)入備份數(shù)據(jù)區(qū)的數(shù)據(jù)取出作為數(shù)據(jù)源寫(xiě)入目的數(shù)據(jù)區(qū)。
備份數(shù)據(jù)區(qū)不是靜態(tài)的在Flash上劃分的預(yù)留區(qū)塊,而是通過(guò)一個(gè)系統(tǒng)內(nèi)存空間外的邏輯區(qū)塊來(lái)實(shí)現(xiàn)的;并且備份數(shù)據(jù)區(qū)為動(dòng)態(tài)分配的所述存儲(chǔ)器的物理塊,這樣可以保證不破壞由NFTL實(shí)現(xiàn)的擦寫(xiě)均衡,同時(shí)又可以利用由NFTL實(shí)現(xiàn)的壞塊管理,簡(jiǎn)化了使用。在該嵌入式系統(tǒng)中快閃存儲(chǔ)器的存儲(chǔ)空間包括目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū),如上面所述的,該備份數(shù)據(jù)區(qū)包括數(shù)
移。并且所述過(guò)程字節(jié)的記錄也同上述所描述的,可以記錄在在與所述目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)相同的存儲(chǔ)器上或與所述目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)不同的存儲(chǔ)器上。
本發(fā)明所述掉電保護(hù)模塊只是作用于文件系統(tǒng)的寫(xiě)入過(guò)程,與現(xiàn)有的直
10接調(diào)用NFTL把數(shù)據(jù)寫(xiě)入目的數(shù)據(jù)區(qū)的方式不同,加入本模塊后先需要把數(shù)據(jù)寫(xiě)入已動(dòng)態(tài)分配的備份數(shù)據(jù)區(qū),之后再調(diào)用NFTL把數(shù)據(jù)寫(xiě)入目的數(shù)據(jù)區(qū)。加入本模塊后對(duì)原文件系統(tǒng)的讀取沒(méi)有任何影響。
圖3是本發(fā)明的掉電保護(hù)機(jī)制的原理示意圖。由圖中可以看出,本發(fā)明的數(shù)據(jù)寫(xiě)入過(guò)程包括三部分
步驟301:把Cache中向快閃存儲(chǔ)器回寫(xiě)的數(shù)據(jù)寫(xiě)入備份數(shù)據(jù)區(qū);
步驟303:這一步是可能會(huì)發(fā)生的操作,如果掉電發(fā)生在上述步驟302,那么再上電后就需要執(zhí)行這一步,把已存儲(chǔ)在備份數(shù)據(jù)區(qū)內(nèi)的數(shù)據(jù)讀出來(lái)寫(xiě)入目的數(shù)據(jù)區(qū)。
而在進(jìn)行每一步操作之前,掉電保護(hù)模塊先寫(xiě)入進(jìn)行這一過(guò)程的過(guò)程字節(jié),過(guò)程字節(jié)的記錄記錄在與所述目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)相同的存儲(chǔ)器上或與所述目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)不同的存儲(chǔ)器上。以0x55, 0x5a, Oxa5為例進(jìn)4于以下分片斤。
如圖4所示,為本發(fā)明實(shí)現(xiàn)的掉電數(shù)據(jù)保護(hù)方法的數(shù)據(jù)寫(xiě)入流程圖。從圖中可見(jiàn)該方法包括以下步驟
步驟401:在存儲(chǔ)器中(如在快閃存儲(chǔ)器NAND Flash中或者其它存儲(chǔ)器中如NORFlash、 EEPROM )寫(xiě)入過(guò)程字節(jié)1如0x55,標(biāo)示掉電保護(hù)開(kāi)始。
步驟402:收集并整理文件系統(tǒng)Cache中需要回寫(xiě)的數(shù)據(jù)。主要實(shí)現(xiàn)上層寫(xiě)入扇區(qū)按Flash的塊排列,更好地利用NFTL的特性,力o快Flash的寫(xiě)入速度。
步驟403:把步驟402整理好的數(shù)據(jù)寫(xiě)入備份數(shù)據(jù)區(qū)。
步驟404:在存儲(chǔ)器中寫(xiě)入過(guò)程字節(jié)2如0x5a,標(biāo)示數(shù)據(jù)已完整寫(xiě)入備份數(shù)據(jù)區(qū)。
步驟405:把步驟402整理好的數(shù)據(jù)寫(xiě)入目的數(shù)據(jù)區(qū)。
步驟406:在存儲(chǔ)器中寫(xiě)入過(guò)程字節(jié)3如0xa5,標(biāo)示數(shù)據(jù)已完整寫(xiě)入目的數(shù)據(jù)區(qū)。步驟407:寫(xiě)入過(guò)程結(jié)束。
其中,步驟403中數(shù)據(jù)寫(xiě)入備份數(shù)據(jù)區(qū)包括步驟把回寫(xiě)的數(shù)據(jù)寫(xiě)入備 份數(shù)據(jù)區(qū)的物理塊的當(dāng)前可寫(xiě)入頁(yè)的數(shù)據(jù)區(qū),把要寫(xiě)入數(shù)據(jù)的目的數(shù)據(jù)區(qū)的 邏輯塊號(hào)與頁(yè)偏移寫(xiě)入備份數(shù)據(jù)區(qū)的物理塊的當(dāng)前可寫(xiě)入頁(yè)的開(kāi)銷區(qū),并把 頁(yè)偏移加l,以備下一次寫(xiě)入。
Nand Flash把存儲(chǔ)空間分為數(shù)據(jù)區(qū)和開(kāi)銷區(qū)兩部分,以2GBNand為例, 它 一個(gè)頁(yè)由2048字節(jié)數(shù)據(jù)區(qū)和64字節(jié)的開(kāi)銷區(qū)組成。開(kāi)銷區(qū)通常被用于ECC (糾錯(cuò)碼)、耗損均衡(wear level ing)和其它軟件開(kāi)銷功能,在使用NFTL 時(shí)它通常還包含了上電重建映射表的關(guān)鍵信息。
當(dāng)系統(tǒng)上電后,加載文件系統(tǒng)之前,掉電數(shù)據(jù)保護(hù)方法還包括步驟
(B-l)檢查存儲(chǔ)器中記錄的過(guò)程字節(jié);
(B-2)如果為第二過(guò)程字節(jié),則將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)讀出作為 數(shù)據(jù)源,寫(xiě)入所述目的數(shù)據(jù)區(qū),并在存儲(chǔ)器中記錄第三過(guò)程字節(jié)。通過(guò)下面 圖5所述的數(shù)據(jù)掉電保護(hù)方法的上電恢復(fù)流程圖進(jìn)行描述圖5是本發(fā)明實(shí) 現(xiàn)的數(shù)據(jù)掉電保護(hù)方法的上電恢復(fù)流程圖。從圖中可見(jiàn)包括以下步驟
步驟501:檢查掉電保護(hù)模塊在存儲(chǔ)器中記錄的過(guò)程字節(jié)(將在下面介 紹圖7大容量智能卡系統(tǒng)中詳細(xì)描述)。依據(jù)過(guò)程字節(jié)的三種不同情況,分 別做不同的處理。
如果過(guò)程字節(jié)為過(guò)程字節(jié)l如0x55,說(shuō)明寫(xiě)入過(guò)程已進(jìn)入掉電保護(hù),可 能已寫(xiě)入部分?jǐn)?shù)據(jù)在備份數(shù)據(jù)區(qū),也可能剛進(jìn)入掉電保護(hù),這時(shí),目的數(shù)據(jù) 區(qū)還沒(méi)有寫(xiě)入新數(shù)據(jù),并且備份數(shù)據(jù)區(qū)中也尚未保存完整的新數(shù)據(jù),則轉(zhuǎn)入 步驟504執(zhí)行。
如果過(guò)程字節(jié)為過(guò)程字節(jié)2如Ox5a,則說(shuō)明寫(xiě)入過(guò)程已完成了備份數(shù)據(jù) 區(qū)的寫(xiě)入工作,可能已進(jìn)入寫(xiě)入目的數(shù)據(jù)區(qū)的工作,并寫(xiě)了部分?jǐn)?shù)據(jù),也可 能剛完成寫(xiě)入備份數(shù)據(jù)區(qū)的工作,還未開(kāi)始寫(xiě)入目的數(shù)據(jù)區(qū)的工作。這時(shí)備 份數(shù)據(jù)區(qū)已完成新數(shù)據(jù)的寫(xiě)入,即存儲(chǔ)系統(tǒng)中已存儲(chǔ)了完整的新數(shù)據(jù),則轉(zhuǎn) 入步驟502執(zhí)行。
如果過(guò)程字節(jié)為過(guò)程字節(jié)3如Oxa5,則說(shuō)明寫(xiě)入過(guò)程已完成了寫(xiě)入目的數(shù)據(jù)區(qū)的操作,則轉(zhuǎn)入步驟504執(zhí)行。
步驟502:讀出備份數(shù)據(jù)區(qū)的數(shù)據(jù)內(nèi)容,寫(xiě)入目的數(shù)據(jù)區(qū)。 步驟503:寫(xiě)入過(guò)程字節(jié)3如0xa5,標(biāo)示數(shù)據(jù)已寫(xiě)入目的數(shù)據(jù)區(qū)。 步驟504:掉電恢復(fù)處理完成,退出。
其中,備份數(shù)據(jù)區(qū)是通過(guò)一個(gè)系統(tǒng)內(nèi)存空間外的邏輯塊來(lái)實(shí)現(xiàn)的,備份 數(shù)據(jù)區(qū)為動(dòng)態(tài)分配的存儲(chǔ)器的物理塊,下面介紹給備份數(shù)據(jù)區(qū)動(dòng)態(tài)分S己存儲(chǔ) 器物理塊的過(guò)程。如圖6所示,是本發(fā)明備份數(shù)據(jù)區(qū)的物理塊的動(dòng)態(tài)分配的 流程圖。包括以下步驟
步驟601:搜索Flash的邏輯塊到物理塊映射關(guān)系的映射表,查看備份 邏輯塊是否已有相應(yīng)的物理塊與之對(duì)應(yīng)。若有對(duì)應(yīng)則轉(zhuǎn)入步驟602執(zhí)行;若 無(wú)對(duì)應(yīng)則轉(zhuǎn)入步驟604執(zhí)行。
映射表是NFTL所特有的,它是在內(nèi)存中建立的一張存儲(chǔ)當(dāng)前Flash上 邏輯塊到物理塊映射關(guān)系的表,通過(guò)它可以查找到某一邏輯塊所對(duì)應(yīng)的物理 塊,即得到此邏輯塊在Flash上的物理位置。其表達(dá)式可以表示為
物理塊號(hào)=映射表[邏輯塊號(hào)]
步驟602:判斷所述物理塊當(dāng)前可寫(xiě)入頁(yè)偏移(SectorCurrent)是否為0。 若是O,則說(shuō)明這是上次Cache回寫(xiě)完成,或是剛上電第一次寫(xiě),轉(zhuǎn)入步驟 603執(zhí)行;若不是O,則說(shuō)明這是本次Cache回寫(xiě)中的一個(gè)扇區(qū),則結(jié)束。
步驟603:擦除所述物理塊。
步驟604:在空閑塊表中分配一個(gè)物理塊與備份邏輯塊相對(duì)應(yīng),結(jié)束。
參見(jiàn)圖7所示,是本發(fā)明的一個(gè)應(yīng)用實(shí)例,大容量智能卡的系統(tǒng)架構(gòu) 示意圖。從圖中可以看出此系統(tǒng)包括了存儲(chǔ)數(shù)據(jù)的NAND Flash、存儲(chǔ)程序 的NORFlash、 ARM微處理器、快閃控制器(NFC)以及其他一些模塊。
此系統(tǒng)包括了嵌入式操作系統(tǒng),通用文件系統(tǒng),NFTL、 MTD等軟件模 塊,因系統(tǒng)中存在NOR Flash, NOR Flash可以按字節(jié)讀寫(xiě),且操作簡(jiǎn)單, 可以用作本發(fā)明方法中的過(guò)程字節(jié)的存儲(chǔ)。
以下是在此大容量智能卡系統(tǒng)中過(guò)程字節(jié)的具體操作方法1. 各過(guò)程字節(jié)的定義
過(guò)程字節(jié)1: 0x55 過(guò)程字節(jié)2: OxAA 過(guò)程字節(jié)3: 0x5A 檢錯(cuò)字節(jié)OxA5
2. 過(guò)程字節(jié)的寫(xiě)入方法,也即在所述存儲(chǔ)器中記錄過(guò)程字節(jié) 每一個(gè)過(guò)程字節(jié)的寫(xiě)入包括五部分
A. 把上一次寫(xiě)入的過(guò)程字節(jié)清0;
B. 判斷存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)地址是否是存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)區(qū)的末 尾,若是則擦除此存儲(chǔ)區(qū),從起始地址開(kāi)始寫(xiě);若否則繼續(xù)寫(xiě)。
C. 寫(xiě)入當(dāng)前寫(xiě)入階段的過(guò)程字節(jié)本身; 在記錄過(guò)程字節(jié)之后還要執(zhí)行D.寫(xiě)入檢錯(cuò)字節(jié)。
E.若步驟C、 D寫(xiě)入出錯(cuò),則存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)地址加2,重新從步 驟B執(zhí)行。若步驟C、 D正確則完成。
執(zhí)行步驟A主要是為了防止上一次寫(xiě)入的有效過(guò)程字節(jié)對(duì)本次操作產(chǎn) 生影響。
3. 過(guò)程字節(jié)的檢測(cè)方法,檢查存儲(chǔ)器中記錄的過(guò)程字節(jié)的步驟包括 步驟(1),從存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)區(qū)的末尾開(kāi)始向前逐個(gè)讀取過(guò)程字
節(jié)
步驟(2),判斷是否找到檢錯(cuò)字節(jié)0xA5,如果找到檢錯(cuò)字節(jié),則轉(zhuǎn)入 步驟(3),如果直到存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)區(qū)的起始位置沒(méi)有找到檢錯(cuò)字節(jié), 則轉(zhuǎn)入步驟(4);
步驟(3),判斷所述檢錯(cuò)字節(jié)的前一個(gè)字節(jié)是否為過(guò)程字節(jié),如果是, 則返回所述過(guò)程字節(jié),結(jié)束,如果不是,則繼續(xù)往前查找下一個(gè)檢錯(cuò)字節(jié) OxA5,轉(zhuǎn)到步驟(2);
步驟(4),返回過(guò)程字節(jié)3,結(jié)束。本發(fā)明可以保i正不石皮壞由NFTL實(shí)現(xiàn)的4寮寫(xiě)均tf,同時(shí)又可以利用由 NFTL實(shí)現(xiàn)的壞塊管理,簡(jiǎn)化使用。實(shí)現(xiàn)了基于文件系統(tǒng)的掉電保護(hù),使得 通用文件系統(tǒng)可以更可靠的用于環(huán)境惡劣的嵌入式存儲(chǔ)器中。
最后所應(yīng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案而 非限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明實(shí)施例進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普 通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行修改或者等同替 換,而不脫離本發(fā)明實(shí)施例技術(shù)方案和權(quán)利要求的精神和范圍。
權(quán)利要求
1.一種快閃存儲(chǔ)器,其特征在于,所述快閃存儲(chǔ)器的存儲(chǔ)空間包括目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū),其中,當(dāng)文件系統(tǒng)緩存向所述快閃存儲(chǔ)器回寫(xiě)數(shù)據(jù)時(shí),先執(zhí)行將所述數(shù)據(jù)寫(xiě)入所述備份數(shù)據(jù)區(qū)的過(guò)程,所述寫(xiě)入完成后,執(zhí)行再寫(xiě)入所述目的數(shù)據(jù)區(qū)的過(guò)程。
2. 如權(quán)利要求1所述的存儲(chǔ)器,其特征在于,所述備份數(shù)據(jù)區(qū)通過(guò)一個(gè) 系統(tǒng)內(nèi)存空間外的邏輯區(qū)塊來(lái)實(shí)現(xiàn)。
3. 如權(quán)利要求1所述的存儲(chǔ)器,其特征在于,所述備份數(shù)據(jù)區(qū)為動(dòng)態(tài)分 配的所述存儲(chǔ)器物理塊。
4. 如權(quán)利要求1所述的存儲(chǔ)器,其特征在于,所述備份數(shù)據(jù)區(qū)包括數(shù)據(jù) 區(qū)和開(kāi)銷區(qū),所述開(kāi)銷區(qū)包括數(shù)據(jù)寫(xiě)入所述目的數(shù)據(jù)區(qū)的邏輯塊號(hào)與頁(yè)偏移。
5. 如權(quán)利要求1所述的存儲(chǔ)器,其特征在于,所述快閃存儲(chǔ)器的存儲(chǔ)空 間進(jìn)一步包括用于存放過(guò)程字節(jié)的區(qū)域,所述過(guò)程字節(jié)標(biāo)示了所述數(shù)據(jù)寫(xiě)入 過(guò)程的寫(xiě)入階段。
6. —種嵌入式系統(tǒng),包括嵌入式操作系統(tǒng)、文件系統(tǒng),以及存儲(chǔ)器,所 述存儲(chǔ)器包括快閃存儲(chǔ)器,其特征在于,所述快閃存儲(chǔ)器的存儲(chǔ)空間包括目 的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū),所述嵌入式系統(tǒng)進(jìn)一步包括掉電保護(hù)模塊,用于當(dāng) 文件系統(tǒng)緩存向所述快閃存儲(chǔ)器回寫(xiě)數(shù)據(jù)時(shí),執(zhí)行將所述數(shù)據(jù)先寫(xiě)入所述備 份數(shù)據(jù)區(qū)的過(guò)程,執(zhí)行完所述寫(xiě)入之后,執(zhí)行再寫(xiě)入所述目的數(shù)據(jù)區(qū)的過(guò)程。
7. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述掉電保護(hù)模塊進(jìn)一步用 于根據(jù)當(dāng)前寫(xiě)入階段,在所述存儲(chǔ)器中記錄標(biāo)示寫(xiě)入過(guò)程的寫(xiě)入階段的過(guò) 程字節(jié)。
8. 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述掉電保護(hù)模塊進(jìn)一步用 于在系統(tǒng)上電后,加載文件系統(tǒng)之前,根據(jù)過(guò)程字節(jié)判斷當(dāng)前的寫(xiě)入階段, 如果所述數(shù)據(jù)已經(jīng)寫(xiě)入備份數(shù)據(jù)區(qū)但尚未寫(xiě)入目的數(shù)據(jù)區(qū),則將寫(xiě)入備份數(shù) 據(jù)區(qū)的數(shù)據(jù)取出作為數(shù)據(jù)源寫(xiě)入目的數(shù)據(jù)區(qū)。
9. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述備份數(shù)據(jù)區(qū)通過(guò)一個(gè)系 統(tǒng)內(nèi)存空間外的邏輯區(qū)塊來(lái)實(shí)現(xiàn)。
10. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述備份數(shù)據(jù)區(qū)為動(dòng)態(tài)分 配的所述快閃存儲(chǔ)器物理塊。
11. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述備份數(shù)據(jù)區(qū)包括數(shù)據(jù) 區(qū)和開(kāi)銷區(qū),所述開(kāi)銷區(qū)包括數(shù)據(jù)寫(xiě)入所述目的數(shù)據(jù)區(qū)的邏輯塊號(hào)與頁(yè)偏移。
12. 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述過(guò)程字節(jié)記錄在與所 述目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)相同的存儲(chǔ)器上或與所述目的數(shù)據(jù)區(qū)和備份數(shù)據(jù) 區(qū)不同的存儲(chǔ)器上。
13. —種根據(jù)權(quán)利要求7所述的嵌入式系統(tǒng)的數(shù)據(jù)掉電保護(hù)方法,其特 征在于,當(dāng)文件系統(tǒng)緩存向所述快閃存儲(chǔ)器回寫(xiě)數(shù)據(jù)時(shí),包括步驟(A-l)在存儲(chǔ)器中記錄第一過(guò)程字節(jié),用于標(biāo)示掉電保護(hù)開(kāi)始;(A-2 )收集并整理文件系統(tǒng)緩存中需要回寫(xiě)的數(shù)據(jù),并將數(shù)據(jù)寫(xiě)入所述 備份數(shù)據(jù)區(qū);(A-3 )在存儲(chǔ)器中記錄第二過(guò)程字節(jié),用于標(biāo)示數(shù)據(jù)已經(jīng)完整寫(xiě)入所述 備份數(shù)據(jù)區(qū);(A-5)在存儲(chǔ)器中記錄第三過(guò)程字節(jié),用于標(biāo)示數(shù)據(jù)已經(jīng)完整寫(xiě)入所述 目的lt據(jù)區(qū);以及當(dāng)系統(tǒng)上電后,加載文件系統(tǒng)之前,包括步驟(B-l)檢查存儲(chǔ)器中記錄的過(guò)程字節(jié);(B-2 )如果為第二過(guò)程字節(jié),則將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)讀出作為數(shù) 據(jù)源,寫(xiě)入所述目的數(shù)據(jù)區(qū),并在存儲(chǔ)器中記錄第三過(guò)程字節(jié)。
14. 如權(quán)利要求13所述的方法,其特征在于,步驟(A-2)中數(shù)據(jù)寫(xiě)入所述備份數(shù)據(jù)區(qū)包括步驟把回寫(xiě)的數(shù)據(jù)寫(xiě)入所 述備份數(shù)據(jù)區(qū)的物理塊的當(dāng)前可寫(xiě)入頁(yè)的數(shù)據(jù)區(qū),把要寫(xiě)入數(shù)據(jù)的目的數(shù)據(jù) 區(qū)的邏輯塊號(hào)與頁(yè)偏移寫(xiě)入所述備份數(shù)據(jù)區(qū)的物理塊的當(dāng)前可寫(xiě)入頁(yè)的開(kāi)銷 區(qū);步驟(B-2)中進(jìn)一步包括根據(jù)所述備份數(shù)據(jù)區(qū)的物理塊的當(dāng)前可寫(xiě)入頁(yè)開(kāi)銷區(qū)存儲(chǔ)所述邏輯塊號(hào)與頁(yè)偏移。
15. 如權(quán)利要求13所述的方法,其特征在于,所述在存儲(chǔ)器中記錄過(guò)程 字節(jié)之后還將記錄檢錯(cuò)字節(jié),所述在存儲(chǔ)器中記錄過(guò)程字節(jié)和檢錯(cuò)字節(jié)的步 驟,包括(1 )將上一次寫(xiě)入的過(guò)程字節(jié)清0;(2 )判斷存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)地址是否是存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)區(qū)的末 尾,若是則擦除所述存儲(chǔ)區(qū),從起始地址開(kāi)始寫(xiě);若否,則繼續(xù)寫(xiě);(3) 寫(xiě)入當(dāng)前寫(xiě)入階段的過(guò)程字節(jié);(4) 寫(xiě)入檢錯(cuò)字節(jié)。
16. 如權(quán)利要求15所述的方法,其特征在于,進(jìn)一步包括步驟(5) 若步驟(3) 、 (4)寫(xiě)入出錯(cuò),則存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)地址加2, 重新從步驟(2 )纟丸行。
17. 如權(quán)利要求15或16所述的方法,其特征在于還包括對(duì)所述存儲(chǔ)器 中記錄的所述過(guò)程字節(jié)進(jìn)行檢查的步驟包括(1 )從存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)區(qū)的末尾開(kāi)始向前逐個(gè)讀取過(guò)程字節(jié);(2) 判斷是否找到檢錯(cuò)字節(jié),如果找到檢錯(cuò)字節(jié),則轉(zhuǎn)入步驟(3), 如果直到存儲(chǔ)過(guò)程字節(jié)的存儲(chǔ)區(qū)的起始位置沒(méi)有找到枱r錯(cuò)字節(jié),則轉(zhuǎn)入步驟(4);(3) 判斷所述檢錯(cuò)字節(jié)的前一個(gè)字節(jié)是否為過(guò)程字節(jié),如果是,則返回 所述過(guò)程字節(jié),結(jié)束,如果不是,則繼續(xù)往前查找下一個(gè)檢錯(cuò)字節(jié),轉(zhuǎn)到步 驟(2 );(4) 返回第三過(guò)程字節(jié),結(jié)束。
18. 如權(quán)利要求13或14所述的方法,其特征在于采用動(dòng)態(tài)分配方法對(duì)所 述備份數(shù)據(jù)區(qū)分配存儲(chǔ)器物理塊,包括步驟(1 )搜索快閃存儲(chǔ)器的邏輯塊到物理塊映射關(guān)系的映射表,查看備份邏 輯塊是否已經(jīng)有相對(duì)應(yīng)的物理塊,若有,則轉(zhuǎn)入步驟(2)執(zhí)行;若無(wú),則轉(zhuǎn) 入步驟(4 )執(zhí)行;(2) 判斷所述對(duì)應(yīng)物理塊當(dāng)前可寫(xiě)入頁(yè)偏移是否為0,若是0,則轉(zhuǎn)入 步驟(3)執(zhí)行;若不是0,則結(jié)束;(3) 擦除所述對(duì)應(yīng)物理塊;(4) 在空閑塊表中分配一個(gè)物理塊與所述備份邏輯塊相對(duì)應(yīng),結(jié)束。
全文摘要
本發(fā)明提供一種快閃存儲(chǔ)器、系統(tǒng)及其數(shù)據(jù)掉電保護(hù)方法,所述嵌入式系統(tǒng)包括嵌入式操作系統(tǒng)、文件系統(tǒng),以及存儲(chǔ)器等部分,所述存儲(chǔ)器包括快閃存儲(chǔ)器,其存儲(chǔ)空間包括目的數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū),所述嵌入式存儲(chǔ)系統(tǒng)進(jìn)一步包括掉電保護(hù)模塊,用于執(zhí)行將所述數(shù)據(jù)先寫(xiě)入所述備份數(shù)據(jù)區(qū)的過(guò)程,執(zhí)行完所述寫(xiě)入之后,執(zhí)行再寫(xiě)入所述目的數(shù)據(jù)區(qū)的過(guò)程。本發(fā)明還涉及一種掉電數(shù)據(jù)保護(hù)方法。本發(fā)明簡(jiǎn)單可靠地實(shí)現(xiàn)了通用文件系統(tǒng)在惡劣的嵌入式環(huán)境下的應(yīng)用,保證了數(shù)據(jù)安全可靠。
文檔編號(hào)G06F11/14GK101539891SQ20081010206
公開(kāi)日2009年9月23日 申請(qǐng)日期2008年3月17日 優(yōu)先權(quán)日2008年3月17日
發(fā)明者張武杰, 李菲菲, 磨鍵琨 申請(qǐng)人:鳳凰微電子(中國(guó))有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1