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