一種嵌入式設(shè)備安全格式化磁盤的系統(tǒng)及方法
【專利摘要】本發(fā)明提出了一種嵌入式設(shè)備安全格式化磁盤的系統(tǒng),系統(tǒng)包括判斷CPU是否有掉電仍然保存數(shù)據(jù)能力的寄存器的判斷單元、進(jìn)行內(nèi)置磁盤劃定的處理單元、進(jìn)行數(shù)據(jù)值讀取的讀取單元以及設(shè)置數(shù)據(jù)值的設(shè)置單元;判斷單元、處理單元、讀取單元以及設(shè)置單元依次連接。本發(fā)明嵌入式設(shè)備安全格式化磁盤的系統(tǒng)及方法,有效的避免嵌入式系統(tǒng)內(nèi)置磁盤格式化中途掉電。
【專利說明】一種嵌入式設(shè)備安全格式化磁盤的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式設(shè)備領(lǐng)域,尤其涉及一種嵌入式設(shè)備不怕格式化中途掉電的安全格式化磁盤的系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著嵌入式設(shè)備的存儲設(shè)備生產(chǎn)工藝設(shè)備改良,如:19納米MLC(多階儲存單元)NAND顆粒甚至已經(jīng)成為了閃存主流;卡片存儲容量越來越大,售價越來越便宜,當(dāng)然考慮到性價比,成本和售價也盡量低廉,在能滿足基本的擦除壽命的前提(犧牲了寫入次數(shù)的使用壽命,或者是寫入速度等指標(biāo)),換回來的是更具性價比的存儲介質(zhì)的產(chǎn)品(卡片)。但一個問題是寫入速度的降低。寫入速度的性能下降,總?cè)萘吭龃?,這樣格式化的過程占據(jù)的時間會加長。
[0003]嵌入式設(shè)備使用文件系統(tǒng),格式化的時候一般要求用戶不要中斷,否則會出現(xiàn)格式化未完成,而導(dǎo)致磁盤不可用?,F(xiàn)行通用文件文件系統(tǒng)格式有(FAT12/16/32、exFAT【FAT64】、NTFS、EXT2、EXT3、YAFFIS (YetAnotherFlashFileSystem)、YAFFIS2 等。
[0004]格式化這些文件系統(tǒng)格式的過程中,如果中途低電關(guān)機(掉電)等異常發(fā)生,則極為可能導(dǎo)致磁盤格式化未完成。但對于通用文件系統(tǒng),并非所有的情況加載的時候都能準(zhǔn)確判斷出來為格式化未完成,進(jìn)而雖然可以有機會加載使用,但再后續(xù)使用中會因為文件系統(tǒng)格式化未完成遺留的數(shù)據(jù),導(dǎo)致出現(xiàn)磁盤數(shù)據(jù)損毀的情況,進(jìn)而影響用戶的使用(如出現(xiàn)多文件存儲物理地址重疊,文件數(shù)據(jù)不完整等)。
[0005]對于具體文件系統(tǒng)FAT16/32文件系統(tǒng)而言,F(xiàn)AT entry第二項記錄FAT [I]被定義為” EOCmark”,用來作為 “dirty volume flags”,
[0006]如果FAT16/32 文件系統(tǒng)有數(shù)據(jù)尚未回寫(write-back)到磁盤(存儲器),則FATentry 第二項記錄 FAT [I]的值 FAT16 會是 0x7FFF,F(xiàn)AT32 會是 0x07FFFFFF ;如果 FAT16/32文件系統(tǒng)無任何回寫數(shù)據(jù)(如只讀,或者寫入的數(shù)據(jù)都已經(jīng)成功回寫到磁盤),則該FATentry 第二項記錄 FAT [I]的值 FAT16 會是 OxFFFF,F(xiàn)AT32 會是 OxOFFFFFFF。
[0007]微軟Windows 系統(tǒng)則利用 FAT16/32 的改 FAT[1]的 “dirty volume flags”用來標(biāo)注USB Mass storage是否安全移除磁盤(即是否所有的磁盤緩沖區(qū)均回寫到磁盤);而對于格式化如果未完整,在FAT16/FAT32中并沒有其它標(biāo)記位做標(biāo)記區(qū)分。
[0008]具體不同文件系統(tǒng)定義各有差異,雖然一些文件系統(tǒng)(NTFS)內(nèi)設(shè)計有操作事務(wù)實施的機制,但也存在一些文件系統(tǒng)在其類型的文件系統(tǒng)的規(guī)范(Spec)中就設(shè)計有此類別的標(biāo)示位設(shè)計和約定。如果試圖利用文件系統(tǒng)事務(wù)完整的設(shè)計避免格式化中途斷電后的自動回復(fù),則因為一些文件系統(tǒng)并無事務(wù)處理機制而無法實施,且對于支持事務(wù)處理的文件系統(tǒng),也是需要分別對事務(wù)完整性和回退部分做實現(xiàn)細(xì)節(jié),這些無疑都是工作量。
[0009]嵌入式系統(tǒng)考慮CPU運算能力,以及實際裝載的不是很充裕的內(nèi)存資源,并考慮磁盤掃描和修復(fù)算法的復(fù)雜度和耗時,一般并不具備磁盤文件系統(tǒng)錯誤修復(fù)能力。(即便PC上的修復(fù)工具,也非常多,而目前也沒有說能有100%的修復(fù)能力,只是可能一些情況可以修復(fù),但修復(fù)之后也可能損失一些文件)。
[0010]尤其一些嵌入式設(shè)備的應(yīng)用程序或者OS非常依賴內(nèi)嵌磁盤文件操作的系統(tǒng),如利用DB數(shù)據(jù)訪問和保存一些數(shù)據(jù)的應(yīng)用類的嵌入式設(shè)備產(chǎn)品。一旦內(nèi)置文件系統(tǒng)損毀,就無法使用。而對于使用電池的設(shè)備,格式化過程中如果有震動或者電池低迅速電壓下降,都有機會讓格式化內(nèi)置磁盤的時候未能完成而對后續(xù)使用產(chǎn)生文件損毀的隱患(多文件重疊、索引絮亂等)。
【發(fā)明內(nèi)容】
[0011]為了解決【背景技術(shù)】中所存在的技術(shù)問題,本發(fā)明提出了一種嵌入式設(shè)備安全格式化磁盤的系統(tǒng)及方法,有效的避免嵌入式系統(tǒng)內(nèi)置磁盤格式化中途掉電。
[0012]本發(fā)明的技術(shù)解決方案是:一種嵌入式設(shè)備安全格式化磁盤的系統(tǒng),其特征在于:所述系統(tǒng)包括判斷CPU是否有掉電仍然保存數(shù)據(jù)能力的寄存器的判斷單元、進(jìn)行內(nèi)置磁盤劃定的處理單元、進(jìn)行數(shù)據(jù)值讀取的讀取單元以及設(shè)置數(shù)據(jù)值的設(shè)置單元;所述判斷單元、處理單元、讀取單元以及設(shè)置單元依次連接。
[0013]一種嵌入式設(shè)備安全格式化磁盤的系統(tǒng),其特征在于:所述系統(tǒng)包括判斷CPU是否有掉電仍然保存數(shù)據(jù)能力的寄存器的判斷單元、進(jìn)行內(nèi)置磁盤劃定的處理單元、進(jìn)行數(shù)據(jù)值讀取的讀取單元以及設(shè)置數(shù)據(jù)值的設(shè)置單元;所述判斷單元、處理單元、讀取單元以及設(shè)置單元依次連接。
[0014]一種嵌入式設(shè)備安全格式化磁盤的方法,其特征在于:所述方法包括以下步驟:
[0015]I)判斷CPU是否有掉電仍然保存數(shù)據(jù)能力的寄存器,若否,進(jìn)行步驟2);
[0016]2)格式化和加載內(nèi)置磁盤,在內(nèi)置磁盤劃定一塊格式化不會被擦除的區(qū)域;
[0017]3)讀取/設(shè)置磁碟預(yù)留約定位置的數(shù)據(jù)值,作為格式化進(jìn)行中否的標(biāo)記。
[0018]上述步驟I)中若CPU有掉電仍然保存數(shù)據(jù)能力的寄存器,則進(jìn)行以下步驟:
[0019]4)選定寄存器的座位標(biāo)記位;
[0020]5)讀取/設(shè)置選定的寄存器相關(guān)位,作為格式化進(jìn)行中否的標(biāo)記。
[0021]上述加載內(nèi)置磁盤的具體步驟是:
[0022]2.1)判斷是否格式化內(nèi)置磁盤;若否,進(jìn)行步驟2.2);
[0023]2.2)讀取“格式化是否進(jìn)行中”的標(biāo)記;
[0024]2.3)判斷是否讀取的標(biāo)記值為I ;若是,進(jìn)行步驟2.4);
[0025]2.4)設(shè)置格式化進(jìn)行中標(biāo)記值為I ;
[0026]2.5)格式化磁碟并加載;
[0027]2.6)清除格式化進(jìn)行中標(biāo)記值。
[0028]上述步驟2.1)中若有格式化內(nèi)置磁盤,則直接進(jìn)行步驟2.4)。
[0029]上述步驟2.5)若格式化磁碟過程中中途斷電,則程序終止,“格式化是否進(jìn)行中”的標(biāo)記保持為I。
[0030]本發(fā)明嵌入式設(shè)備安全格式化磁盤的系統(tǒng)及方法針對嵌入式設(shè)備內(nèi)置磁盤容量越來越大,并考慮成本(性價比),格式化耗時稍微有些長的使用文件系統(tǒng)的系統(tǒng),當(dāng)格式化過程中(已經(jīng)開始格式化但又未能完成格式化)中間的時段內(nèi)如果嵌入式設(shè)備斷電而會導(dǎo)致磁盤文件系統(tǒng)未能格式化完成而后續(xù)使用中出現(xiàn)磁盤文件系統(tǒng)數(shù)據(jù)損毀(文件使用異常)。特別設(shè)計一種格式化的防止掉電損毀文件系統(tǒng)的系統(tǒng),不需要依賴和改變文件系統(tǒng)的內(nèi)部實現(xiàn)細(xì)節(jié)(規(guī)則),避免修改不同文件系統(tǒng)的實現(xiàn)細(xì)節(jié)而帶來的額外工作量,并能保持原來支持的任何類型的文件系統(tǒng)的功能,巧妙的設(shè)計了一種利用格式化不會抹到的標(biāo)記位,來記錄文件系統(tǒng)是否格式化完整。檔文件系統(tǒng)格式化中途斷電而能下次開機加載內(nèi)置文件系統(tǒng)的時候自動是被到上次失敗的格式化事件并重新自動完成格式化,進(jìn)而有效的避免嵌入式系統(tǒng)內(nèi)置磁盤格式化中途掉電,導(dǎo)致一些依靠內(nèi)置磁盤中需要保存和讀取文件系統(tǒng)的應(yīng)用程序(APP)正常運行,并避免內(nèi)置磁盤格式化中途斷電導(dǎo)致文件系統(tǒng)后續(xù)使用中出現(xiàn)資料損毀(內(nèi)容疊蓋)的問題。
【專利附圖】
【附圖說明】
[0031]圖1是本發(fā)明的結(jié)構(gòu)示意圖;
[0032]圖2是本發(fā)明的方法流程圖;
[0033]圖3是本發(fā)明【具體實施方式】流程圖;
【具體實施方式】
[0034]參見圖1,一種嵌入式設(shè)備安全格式化磁盤的系統(tǒng),其特征在于:所述系統(tǒng)包括判斷CPU是否有掉電仍然保存數(shù)據(jù)能力的寄存器的判斷單元、進(jìn)行內(nèi)置磁盤劃定的處理單元、進(jìn)行數(shù)據(jù)值讀取的讀取單元以及設(shè)置數(shù)據(jù)值的設(shè)置單元;所述判斷單元、處理單元、讀取單元以及設(shè)置單元依次連接。
[0035]參見圖2,圖3,一種嵌入式設(shè)備安全格式化磁盤的方法,其特征在于:所述方法包括以下步驟:
[0036]I)判斷CPU是否有掉電仍然保存`數(shù)據(jù)能力的寄存器,若否,進(jìn)行步驟2);通過查看CPU 的 Data Sheet (SPEC)就可以知道是否有 persistent 的 register ;
[0037]2)格式化和加載內(nèi)置磁盤,在內(nèi)置磁盤劃定一塊格式化不會被擦除的區(qū)域;
[0038]通過修改內(nèi)置磁盤設(shè)備起始或最大允許訪問Sector數(shù),即約定設(shè)備運行內(nèi)置磁盤的開始和最大允許訪問的sector數(shù)進(jìn)行劃定。如后面段落描述的“最后預(yù)留一個Reserved(預(yù)留)的分區(qū)”;
[0039]還有一種方式是通過修正MBS的值,在MBS表中記錄的第一個PBS其實sector數(shù)略作調(diào)整,即預(yù)留一些Sector作為reserved的區(qū)域。這些reserved的區(qū)域,只要構(gòu)建MBS的數(shù)據(jù)表項算法是固定的,就不會有數(shù)據(jù)寫到MBS和PBS之間預(yù)留reserved sector中?!綧BS】【PBS】 —【MBS】【Reserved sectors]【PBS】
[0040]內(nèi)置磁盤加載(正常加載、帶有格式化的加載兩種)步驟:
[0041]加載內(nèi)置磁盤分兩種情況,正常加載;格式化加載;2.1)的判斷判斷是不是“格式化”加載。如是格式化加載跳轉(zhuǎn)到步驟2.4,若不是格式化加載,而是正常加載,進(jìn)行布置
2.2)。特別是在內(nèi)置磁碟正常加載的時候,因為會判斷‘格式化是否進(jìn)行中’的標(biāo)記,所以如果上次發(fā)生了格式化過程中中斷,那么這次的加載就能檢測到“沒有格式化完成”的咨詢,而能自動出發(fā)再次格式化,以(步驟2.3)繼續(xù)完成格式化。
[0042]3)讀取/設(shè)置磁碟預(yù)留約定位置的數(shù)據(jù)值,作為格式化進(jìn)行中否的標(biāo)記。
[0043]若CPU有掉電仍然保存數(shù)據(jù)能力的寄存器,則進(jìn)行以下步驟:[0044]4)選定寄存器的座位標(biāo)記位;
[0045]5)讀取/設(shè)置選定的寄存器相關(guān)位,作為格式化進(jìn)行中否的標(biāo)記。
[0046]本發(fā)明的【具體實施方式】:
[0047]以FAT16、FAT32文件系統(tǒng)而言,格式化內(nèi)置磁盤會有好幾個動作分批完成:a)格式化 MBS/PBS ;
[0048]b)格式化 FAT entry 區(qū)域;
[0049]c)格式化 root directory 區(qū)域;
[0050]如果上述a,b,c三個步驟有部分沒有完成的時候,嵌入式系統(tǒng)掉電(如電池移除等),導(dǎo)致文件系統(tǒng)內(nèi)部會有數(shù)據(jù)錯誤,進(jìn)而需要磁盤修復(fù)工具修復(fù)。而嵌入式設(shè)備考慮程序復(fù)雜程度以及運行內(nèi)存運行的內(nèi)存大小需求,且磁盤修復(fù)工具運行會耗費相當(dāng)長的時間。所以基本嵌入式設(shè)備很多都具備損毀的磁盤修復(fù)功能。
[0051]參見圖2,針對嵌入式設(shè)備使用的CPU是否有掉電依然能保存數(shù)據(jù)的Persist寄存器。利用此類寄存器即便CPU掉電依然能保存數(shù)據(jù)的,用來存儲嵌入式設(shè)備是否有內(nèi)置磁盤正在被格式化中的標(biāo)記位。
[0052]選定的Persist寄存器標(biāo)記位Ibit允許設(shè)置的2種狀態(tài),如I表示正在進(jìn)行格式化(格式化執(zhí)行中);0表示非格式化中(格式化未執(zhí)行或已經(jīng)執(zhí)行完畢)。
[0053]當(dāng)開始格式化的時候,將改標(biāo)記設(shè)置為1,格式化完成之后將改標(biāo)記歸置為O。
[0054]如果嵌入式設(shè)備的CPU無此類Persist寄存器,則在內(nèi)置磁盤內(nèi)劃分一塊格式化不會抹掉的區(qū)域(約定位置),來保存改標(biāo)記為。
[0055]如圖2 “在內(nèi)置磁盤劃定一塊格式化不會被擦除的區(qū)域”步驟描述:
[0056]格式化MBS (master boot sector主引導(dǎo)扇區(qū))的時候故意添加一些reservedsector,這些預(yù)留的區(qū)域后面才填寫PBS(Partition Boot Sector)信息。
[0057]又或者在磁盤最后預(yù)留一個Reserved(預(yù)留)的分區(qū),在這個預(yù)留分區(qū)中約定位置用來存儲磁盤是否正在被格式化的過程中。
[0058]格式化和加載內(nèi)置磁盤的流程如圖3所示。
[0059]加載內(nèi)置磁盤文件系統(tǒng)的時候,判別改標(biāo)記;如果為1,則自動重新格式化內(nèi)置磁盤成功后歸置改標(biāo)記為O ;如果為0,則不進(jìn)行格式化,僅僅正常加載改內(nèi)置磁盤。
【權(quán)利要求】
1.一種嵌入式設(shè)備安全格式化磁盤的系統(tǒng),其特征在于:所述系統(tǒng)包括判斷CPU是否有掉電仍然保存數(shù)據(jù)能力的寄存器的判斷單元、進(jìn)行內(nèi)置磁盤劃定的處理單元、進(jìn)行數(shù)據(jù)值讀取的讀取單元以及設(shè)置數(shù)據(jù)值的設(shè)置單元;所述判斷單元、處理單元、讀取單元以及設(shè)置單元依次連接。
2.一種嵌入式設(shè)備安全格式化磁盤的方法,其特征在于:所述方法包括以下步驟: .1)判斷CPU是否有掉電仍然保存數(shù)據(jù)能力的寄存器,若否,進(jìn)行步驟2); .2)格式化和加載內(nèi)置磁盤,在內(nèi)置磁盤劃定一塊格式化不會被擦除的區(qū)域; .3)讀取/設(shè)置磁碟預(yù)留約定位置的數(shù)據(jù)值,作為格式化進(jìn)行中否的標(biāo)記。
3.根據(jù)權(quán)利要求2所述的嵌入式設(shè)備安全格式化磁盤的方法,其特征在于:所述步驟I)中若CPU有掉電仍然保存數(shù)據(jù)能力的寄存器,則進(jìn)行以下步驟: .4)選定寄存器的座位標(biāo)記位; .5)讀取/設(shè)置選定的寄存器相關(guān)位,作為格式化進(jìn)行中否的標(biāo)記。
4.根據(jù)權(quán)利要求3所述的嵌入式設(shè)備安全格式化磁盤的方法,其特征在于:所述加載內(nèi)置磁盤的具體步驟是: .2.1)判斷是否格式化內(nèi)置磁盤;若否,進(jìn)行步驟2.2); .2.2)讀取“格式化是否進(jìn)行中”的標(biāo)記; .2.3)判斷是否讀取的標(biāo)記值為I ;若是,進(jìn)行步驟2.4); . 2.4)設(shè)置格式化進(jìn)行中標(biāo)記值為I ; .2.5)格式化磁碟并加載; .2.6)清除格式化進(jìn)行中標(biāo)記值。
5.根據(jù)權(quán)利要求4所述的嵌入式設(shè)備安全格式化磁盤的方法,其特征在于:所述步驟2.1)中若有格式化內(nèi)置磁盤,則直接進(jìn)行步驟2.4)。
6.根據(jù)權(quán)利要求5所述的嵌入式設(shè)備安全格式化磁盤的方法,其特征在于:所述步驟2.5)若格式化磁碟過程中中途斷電,則程序終止,“格式化是否進(jìn)行中”的標(biāo)記保持為I。
【文檔編號】G06F21/80GK103455769SQ201310359714
【公開日】2013年12月18日 申請日期:2013年8月16日 優(yōu)先權(quán)日:2013年8月16日
【發(fā)明者】陳淮琰, 鐘輝 申請人:無敵科技(西安)有限公司