專利名稱:Fat文件系統格式化方法及裝置的制作方法
技術領域:
本發明涉及數據存儲領域,具體地,是一種FAT文件系統格式化的方法及格式化
>J-U ρ α裝直。
背景技術:
現有的電子設備廣泛應用FAT (File Allocation Table,文件配置表)文件系統,其是目前應用于各種平臺上最簡單的文件系統。FAT文件系統由保留區、FAT數據區、根目錄數據區以及用戶數據區構成,每一個存儲區域被分配一定的空間以存儲相應的數據。應用FAT文件系統時,最為經常被訪問的是FAT數據區以及用戶數據區,因此FAT數據區以及用戶數據區的讀寫速度決定了 FAT文件系統的訪問速度。現有大多嵌入式設備使用nand flash作為存儲器以存儲數據,因此嵌入式設備的FAT文件系統的數據將存儲在nand flash存儲器中。由于nand flash存儲器是以頁為最小存儲單位,而FAT文件系統存儲數據時以簇為單位,一旦存儲的數據一簇邊界與nandflash—頁不對齊,即一簇數據超出一頁數據,將造成數據的跨頁存儲,對數據訪問時將會造成跨頁訪問,造成nand flash存儲器的訪問速度較慢。如圖1所示,FAT文件系統中的保留區11存儲空間小于一頁,往往也是小于一簇數據的存儲空間,而FATO數據區12將跨越三頁,也就跨越三簇的存儲空間,FATl數據區13也跨越三簇存儲空間,也就是保留區1UFAT0數據區12以及FATl數據區13并沒有與nandflash存儲器的邊界對齊。這樣,導致根目錄數據區14以及用戶數據區15也沒有與nandflash存儲器的邊界對齊, 導致對根目錄數據區14、用戶數據區15的訪問需要跨頁訪問,影響到根目錄數據區14、用戶數據區15的訪問速度,進而影響nand flash存儲器的訪問速度。使用FAT文件系統時通常需要對其進行格式化以清空根目錄數據區14、用戶數據區15的數據,并將重新分配保留區1UFAT0數據區12以及FATl數據區13的存儲空間。格式化時,保留區11的存儲空間可以被調整,但通常設置成默認值,即32個扇區,也就是16K字節大小。FATO數據區12及FATl數據區13的存儲容量大小是通過存儲器存儲空間的總容量計算獲得。格式化時,FATO數據區12及FATl數據區13將設置在保留區11后,根目錄數據區14將設置在FATl數據區13后。在格式化的最后,FATO數據區12、FAT1數據區13及根目錄數據區14將被初始化,寫入初始數據。由于現有的格式化方法并沒有將FATl數據區13的終止字節設置為一簇數據的存儲空間終止字節,導致根目錄數據區14的起始字節并不在一簇數據的存儲空間起始字節,導致根目錄數據區14、用戶數據區15往往出現跨頁訪問的現象,影響nand flash存儲器的訪問速度。
發明內容
本發明的主要目的是提供一種存儲器訪問速度較快的FAT文件系統格式化方法。
本發明的另一目的是提供一種提高FAT文件系統的數據讀寫性能的FAT文件系統格式化裝置。為了實現上述的主要目的,本發明提供的FAT文件系統格式化方法包括獲取存儲器一頁數據的存儲空間容量值,并設置一簇數據的存儲空間容量值,判斷所設置的一簇數據的存儲空間容量值是否為一頁數據的存儲空間容量值的整數倍,如不是,將一簇數據的存儲空間容量值調整為一頁數據的存儲空間容量值的整數倍,設置保留區的存儲空間,獲取存儲器的存儲空間總容量值,根據存儲空間總容量值計算FAT數據區的存儲空間容量值,將FAT數據區設置在保留區后,并且,判斷FAT數據區的存儲空間終止字節是否為一簇數據的存儲空間終止字節,如是,初始化FAT數據區,否則,在FAT數據區的終止字節與FAT數據區所在簇的存儲空間終止字節之間設置填充區,并初始化FAT數據區,最后對根目錄數據區進行初始化。由上述方案可見,在FAT數據區后設置填充區,以確保根目錄數據區的起始字節為一頁數據的存儲空間的起始字節,可以避免對根目錄數據區及用戶數據區訪問時的跨頁訪問的問題,提高存儲器的讀寫訪問速度。并且,將一簇數據的存儲空間容量值調整為一頁數據的存儲空間容量值整數倍,可以確保對根目錄數據區及用戶數據區寫入的數據都是一頁或多頁數據,從而避免跨頁或跨多頁訪問的問題。一個優選的方案是,設置保留區的存儲空間的步驟是:判斷默認的保留區的存儲空間容量值是否為一簇數據的存儲空間容量值的整數倍,如是,使用默認的保留區的存儲空間容量值作為保留區的存儲空間容量,否則,調整保留區的存儲空間容量值為一簇數據的存儲空間容量的整數倍。由此可見,在設置保留區時也能夠確保所設置的保留區為一簇數據存儲空間的整數倍,從而確保FAT數據區的起始字節也是一頁數據存儲空間的起始字節,有利于提高FAT文件系統的數據讀寫速度。進一步的方案是,設置填充區后,將填充區內的數據簇標記為壞簇。這樣,將填充區的數據簇標記為壞簇,避免對根目錄數據區寫入數據時將數據寫入到填充區中,避免對填充區進行訪問,也就避免訪問根目錄數據區時跨頁訪問的問題。為實現上述的另一目的,本發明提供的FAT文件系統格式化裝置包括存儲空間容量值獲取模塊,用于獲取存儲器的存儲空間總容量值以及存儲器一頁數據的存儲空間容量值,并設有簇數據存儲空間容量設置模塊,用于設置一簇數據的存儲空間容量值,還設有保留區設置模塊,用于設置保留區的存儲空間,還包括FAT數據區設置模塊,用于根據存儲空間總容量值計算FAT數據區的存儲空間容量值,將FAT數據區設置在保留區后,還設有填充區設置模塊,在判斷FAT數據區的存儲空間終止字節不是一簇數據的存儲空間終止字節時,在FAT數據區的終止字節與FAT數據區所在簇的存儲空間終止字節之間設置填充區,以及初始化模塊,用于對FAT數據區及根目錄數據區進行初始化,簇數據存儲空間容量設置模塊包括簇調整模塊,用于在判斷所設置的一簇數據的存儲空間容量值不是一頁數據的存儲空間容量值的整數倍時,將一簇數據的存儲空間容量值調整為一頁數據的存儲空間容量值的整數倍。由上述方案可見,通過填充模塊在FAT數據區后設置填充模塊,確保根目錄數據區、用戶數據區的起始字節為一頁數據存儲空間的起始字節,有效地避免根目錄數據區及 用戶數據區的跨頁訪問的問題,提高FAT文件系統的讀寫性能。
圖1是現有FAT文件系統格式化裝置生成的磁盤鏡像存儲結構示意圖。圖2是本發明FAT文件系統格式化裝置實施例的結構框圖。圖3是本發明FAT文件系統格式化方法實施例的流程圖。圖4是應該本發明FAT文件系統格式化方法生成的磁盤鏡像存儲結構示意圖。以下結合附圖及實施例對本發明作進一步說明。
具體實施例方式本發明的FAT文件系統格式化方法是用于對FAT文件系統的存儲器,如nandflash存儲器進行格式化的方法,FAT文件系統格式化裝置是應用上述方法對存儲器進行格式化的裝置。參見圖2,本發明的FAT文件系統格式化裝置具有存儲空間容量值獲取模塊21、簇數據存儲空間容量設置模塊22、保留區設置模塊24、FAT數據區設置模塊26以及填充區設置模塊27、初始化模塊28,其中簇數據存儲空間容量設置模塊22設有簇調整模塊23,保留區設置模塊24設有保留區調整模塊25,填充區設置模塊27內設置有標記模塊29。存儲空間容量值獲取模塊21用于獲取存儲器的存儲空間總容量值,并且獲取存儲器一頁數據的存儲空間容量值,簇數據存儲空間容量設置模塊22用于設置一簇數據的存儲空間容量,簇調整模塊23用于調整一簇數據的存儲空間容量。保留區設置模塊24用于設置保留區的存儲空間,通常保留區設置在存儲器的最前端的存儲空間上,保留區調整模塊25用于調整保留區的存儲空間大小。當然,保留區設置模塊24可以設置一個默認的保留區存儲空間的容量值。FAT數據區設置模塊26用于設置FAT數據區,FAT數據區的存儲空間容量值根據存儲器的存儲空間總容量值計算獲得,并且設置在保留區后。本實施例中,FAT數據區包括兩個FAT數據區,分別是FATO數據區以及FATl數據區。填充區設置模塊27用于設置填充區,填充區設置在FAT數據區后,用于對FAT數據區終止字節與一簇數據存儲空間的終止字節之間進行填充,標記模塊29用于將填充區27內的數據簇標記為壞簇,避免對填充區進行訪問。初始化模塊28用于對FAT數據區以及根目錄數據區進行初始化操作,以完成FAT文件系統的格式化。下面結合圖3說明FAT文件系統格式化裝置的工作流程。首先,存儲空間容量值獲取模塊21執行步驟SI,獲取存儲器,如nand flash存儲器一頁數據的存儲空間容量值,如32K字節。然后,簇數據存儲空間容量設置模塊22設置一簇數據的存儲空間容量值,即執行步驟S2。一簇數據的存儲空間容量值可以使用默認值,但默認值往往不是一頁數據存儲空間容量值的整數倍,這樣將導致對根目錄數據區以及用戶數據區的數據寫入時出現非一整頁數據寫入或讀取的情況,因此需要將一簇數據的存儲空間容量值設置為一頁數據的存儲空間容量值的整數倍。
因此,執行步驟S2后,需要執行步驟S3,判斷所設置的一簇數據的存儲空間容量值是否為一頁數據的存儲空間容量值的整數倍,如是則對保留區進行設置,否則執行步驟S4,簇調整模塊23調節一簇數據的存儲空間容量值,例如將16K字節修改為32K字節。對一簇數據的存儲空間容量值調整后,對保留區進行設置。參見圖4,由于FAT文件系統的保留區31設置在FAT文件系統的最前端,因此保留區31的起始字節為第一頁數據的存儲空間的起始字節。保留區設置模塊24需要設置保留區的存儲空間大小,由于保留區的存儲空間大小有默認值,因此保留區設置模塊24首先執行步驟S5,判斷默認的保留區存儲空間是否為一頁數據存儲空間的整數倍,也就是判斷是否為一簇數據的整數倍,如是執行步驟S7,使用默認的保留區存儲空間容量值設置保留區31的存儲空間。如果默認的保留區存儲空間不是一頁數據存儲空間的整數倍,則執行步驟S6,保留區調整模塊25調整保留區31的存儲空間容量值,將保留區31的存儲空間容量值設置為一頁數據的存儲空間容量值的整數倍,因此調整存儲空間容量后,保留區31的存儲空間容量將是一簇數據存儲空間容量的整數倍。最后,使用調整后的保留區存儲空間容量值對保留區31進行設置。設置保留區31后,執行步驟S8,存儲空間容量值獲取模塊22獲取存儲器的存儲空間總容量值,并根據獲取的存儲空間總容量值計算FAT數據區的存儲空間容量值。由于本實施例的FAT數據區包括FATO數據區32及FATl數據區34,因此計算FAT數據區的存儲空間容量值后,將該容量值平均分配分別計算出FATO數據區32的存儲空間容量值及FATl數據區34的存儲空間容量值。計算FATO數據區32的存儲空間容量值后,將FATO數據區32設置在保留區31后,然后執行步驟S9,判斷FATO數據區32是否與存儲器的數據存儲頁邊界對齊,也就是判斷FATO數據區32的起始字節是否為一簇數據的起始字節,且FATO數據區32的終止字節是否為一簇數據的存儲空間的終止字節。由于保留區31為一簇數據的存儲空間整數倍,因此FATO數據區的起始字節是一簇數據的存儲空間的起始字節。但由于FATO數據區的終止字節往往未必是一簇數據的存儲空間的終止字節,此時需要執行步驟S10,由填充區設置模塊27在FATO數據區32的終止字節與FATO數據區32的終止字節所在的數據簇的終止字節之間設置填充區33,填充區33內可以不寫入任何數據,也可以寫入任意的數據,且填充區33不會被后續的訪問、讀寫。步驟SlO中,還需要標記模塊29對填充區33內的數據簇進行標記,將填充區33內的數據簇標記為壞簇,以確保填充區33內的數據不會被訪問。設置FATO數據區32以及填充區33后,需要在填充區33的存儲空間后設置FATl數據區34。由于填充區33的終止字節為一簇存儲數據的存儲空間終止字節,因此FATl數據區34的起始字節為下一簇存儲數據的起始字節。設置FATl數據區34時,也需要判斷FATl數據區34是否與存儲器的數據存儲頁對齊,也就是判斷FATl數據區34的終止字節是否為一簇數據的存儲空間的終止字節,如是執行步驟S11,否則執行步驟S10,在FATl數據區34后設置填充區35,填充區35設置在FATl數據區的終止字節與該數據簇的終止字節之間,并且由標記模塊29將填充區35內的數據簇標記為壞簇。可見,FAT數據區設置模塊26在判斷FATO數據區32及FATl數據區34中任一個沒有與存儲器的數據簇對齊,即在相應的FAT數據區后設置填充模塊,以確保該FAT數據區后的有效存儲區域起始字節為一簇數據的起始字節。設置FATl數據區34及填充區35后,執行步驟S11,對FATO數據區32、FATI數據區34以及根目錄數據區36進行初始化,初始化后的根目錄數據區36的起始字節為一簇數據存儲空間的起始字節。由于根目錄數據區36可被后續寫入,是以一簇數據為單位,且一簇數據的存儲空間為一頁數據的整數倍,因此根目錄數據區36的存儲空間為一頁數據的存儲空間的整數倍。用戶數據區37設置在根目錄數據區36后,其起始字節也是一頁數據存儲空間的起始字節,這樣可以盡可能少地避免根目錄數據區36、用戶數據區37的跨頁訪問,提高根目錄數據區36以及用戶數據區37的訪問速度,FAT文件系統內的數據訪問速度也得以提聞。當然,上述實施例僅是本發明較佳的實施方式,實際應用時,還可以有更多的改變,例如,在FAT數據區的數據增多的情況下,相應地判斷每一個FAT數據區是否與數據存儲頁對齊,并在沒有對齊的情況下設置填充區;或者,不將填充區內的數據簇標記為壞簇,而是將填充區設計成禁止訪問;又或者,FAT數據區僅為一個區域,這樣填充區僅設置在FAT數據區后,這樣可以實現本發明的目的。最后需要強調的是,本發明不限于上述實施方式,如調整的一簇數據存儲空間大小的改變、設置的保留區存儲空間的改變等變化也應該包括在本發明權利要求的保護范圍內。
權利要求
1.FAT文件系統格式化方法,包括 獲取存儲器一頁數據的存儲空間容量值,并設置一簇數據的存儲空間容量值; 其特征在于: 判斷所設置的一簇數據的存儲空間容量值是否為一頁數據的存儲空間容量值的整數倍,如不是,將所述一簇數據的存儲空間容量值調整為一頁數據的存儲空間容量值的整數倍; 設置保留區的存儲空間,獲取所述存儲器的存儲空間總容量值,根據所述存儲空間總容量值計算FAT數據區的存儲空間容量值,將FAT數據區設置在所述保留區后; 判斷所述FAT數據區的存儲空間終止字節是否為一簇數據的存儲空間終止字節,如是,初始化所述FAT數據區,否則,在所述FAT數據區的終止字節與所述FAT數據區所在簇的存儲空間終止字節之間設置填充區,并初始化所述FAT數據區; 對根目錄數據區進行初始化。
2.根據權利要求1所述的FAT文件系統格式化方法,其特征在于: 設置所述保留區的存儲空間的步驟是:判斷默認的保留區的存儲空間容量值是否為一簇數據的存儲空間容量值的整數倍,如是,使用默認的保留區的存儲空間容量值作為所述保留區的存儲空間容量,否則,調整所述保留區的存儲空間容量值為一簇數據的存儲空間容量的整數倍。
3.根據權利要求1或2所述的FAT文件系統格式化方法,其特征在于: 設置所述填充 區后,將所述填充區內的數據簇標記為壞簇。
4.根據權利要求1或2所述的FAT文件系統格式化方法,其特征在于: 所述FAT數據區包括第一 FAT數據區以及第二 FAT數據區; 判斷所述FAT數據區的存儲空間終止字節是否為一簇數據的存儲空間終止字節的步驟是:分別判斷所述第一 FAT數據區的存儲空間終止字節及所述第二 FAT數據區的存儲空間終止字節是否為一簇數據的存儲空間終止字節; 如所述第一 FAT數據區的存儲空間終止字節及所述第二 FAT數據存儲區的存儲空間終止字節中任一個不是一簇數據的存儲空間的終止字節,則在該FAT數據區后設置所述填充區。
5.FAT文件系統格式化裝置,包括 存儲空間容量值獲取模塊,用于獲取存儲器的存儲空間總容量值以及所述存儲器一頁數據的存儲空間容量值; 簇數據存儲空間容量設置模塊,用于設置一簇數據的存儲空間容量值; 保留區設置模塊,用于設置保留區的存儲空間; FAT數據區設置模塊,用于根據所述存儲空間總容量值計算FAT數據區的存儲空間容量值,將FAT數據區設置在所述保留區后; 其特征在于: 填充區設置模塊,在判斷所述FAT數據區的存儲空間終止字節不是一簇數據的存儲空間終止字節時,在所述FAT數據區的終止字節與所述FAT數據區所在簇的存儲空間終止字節之間設置填充區; 初始化模塊,用于對所述FAT數據區及根目錄數據區進行初始化;所述簇數據存儲空間容量設置模塊包括簇調整模塊,用于在判斷所設置的一簇數據的存儲空間容量值不是一頁數據的存儲空間容量值的整數倍時,將所述一簇數據的存儲空間容量值調整為一頁數據的存儲空間容量值的整數倍。
6.根據權利要求5所述的FAT文件系統格式化裝置,其特征在于: 所述保留區設置模塊包括保留區調整模塊,用于判斷默認的保留區的存儲空間容量值是否為一簇數據的存儲空間容 量值的整數倍,如是,使用默認的保留區的存儲空間容量值作為所述保留區的存儲空間容量,否則,調整所述保留區的存儲空間容量值為一簇數據的存儲空間容量的整數倍。
7.根據權利要求5或6所述的FAT文件系統格式化裝置,其特征在于: 所述填充區設置模塊還包括標記模塊,用于將所述填充區內的數據簇標記為壞簇。
8.根據權利要求5或6所述的FAT文件系統格式化裝置,其特征在于: 所述FAT數據區包括第一 FAT數據區以及第二 FAT數據區,所述填充區設置在所述第一 FAT數據區和/或所述第二 FAT數據區后。
全文摘要
本發明提供一種FAT文件系統格式化方法及裝置,該方法包括獲取存儲器一頁數據的存儲空間容量值,并設置一簇數據的存儲空間容量值,設置保留區的存儲空間,獲取存儲器的存儲空間總容量值,根據存儲空間總容量值計算FAT數據區的存儲空間容量值,將FAT數據區設置在保留區后,并且,判斷FAT數據區的存儲空間終止字節是否為一簇數據的存儲空間終止字節,如是,初始化FAT數據區,否則,在FAT數據區的終止字節與FAT數據區所在簇的存儲空間終止字節之間設置填充區,并初始化FAT數據區,最后對根目錄數據區進行初始化。該裝置是應用上述方法對FAT文件系統進行格式化。本發明能提高格式化后的FAT文件系統的數據訪問速度。
文檔編號G06F17/30GK103116640SQ20131005523
公開日2013年5月22日 申請日期2013年2月21日 優先權日2013年2月21日
發明者孫彥邦, 彭剛 申請人:珠海全志科技股份有限公司