專利名稱:格式化閃存的方法和裝置的制作方法
技術領域:
本發(fā)明涉及計算機領域,特別涉及一種格式化閃存(flash)的方法和裝置。
背景技術:
Jffs2文件系統(tǒng)是Linux系統(tǒng)的一部分,是針對閃存的文件系統(tǒng)。在系統(tǒng)第一次 上電或者調(diào)用格式化命令對閃存進行格式化時,此時閃存處于初始狀態(tài),上面沒有任何數(shù) 據(jù)。由于閃存的每個擦除塊有擦除次數(shù)限制的,超過一定擦除次數(shù)的擦除塊會損壞,所以, jffs2文件系統(tǒng)必須考慮對每個擦除塊擦寫的次數(shù)要盡可能保持平衡,為此,jffs2文件系 統(tǒng)的節(jié)點是沒有索引功能的。初始狀態(tài)下的擦除塊雖然已經(jīng)不存在任何數(shù)據(jù),但此種擦除 塊并不符合jffs2文件系統(tǒng)的標準,由此會造成jffs2文件系統(tǒng)裝載時間漫長,此外,在上 電時間內(nèi)jffs2文件系統(tǒng)會鎖住所有對flash的操作,從而導致系統(tǒng)不能正常啟動。
發(fā)明內(nèi)容
本發(fā)明要解決的問題是提供了一種格式化閃存的方法和裝置,以解決現(xiàn)有技術中 jffs2文件系統(tǒng)裝載時間漫長和啟動異常的問題。為了解決上述問題,本發(fā)明提供了一種格式化閃存的方法和裝置,具體的技術方 案如下一種格式化閃存的方法,包括讀取閃存信息,所述閃存信息包括閃存類型和擦除塊大??;根據(jù)所述閃存信息獲取jffs2節(jié)點頭的相關信息,所述相關信息包括所述jffs2 節(jié)點頭的起始位置和大??;對擦除塊進行擦除處理;根據(jù)所述閃存類型和所述相關信息,創(chuàng)建與所述擦除處理的擦除塊對應的所述 jffs2節(jié)點頭,其中,所述jffs2節(jié)點頭用于指示所述擦除處理的擦除塊符合jffs2文件系 統(tǒng)標準。一種格式化閃存的裝置,包括讀取模塊,用于讀取閃存信息,所述閃存信息包括閃存類型和擦除塊大??;獲取模塊,用于根據(jù)所述閃存信息獲取jffs2節(jié)點頭的相關信息,所述相關信息 包括所述jffs2節(jié)點頭的起始位置和大?。徊脸K,用于對所述擦除塊進行擦除處理;創(chuàng)建模塊,用于根據(jù)所述閃存類型和所述相關信息,創(chuàng)建與所述擦除處理的擦除 塊對應的所述jffs2節(jié)點頭,其中,所述jffs2節(jié)點頭用于指示所述擦除處理的擦除塊符合 jffs2文件系統(tǒng)標準。在本發(fā)明實施例中,通過讀取閃存信息,該閃存信息包括閃存類型和擦除塊大??; 根據(jù)該閃存信息獲取jffs2節(jié)點頭的相關信息,該相關信息包括所述jffs2節(jié)點頭的起始 位置和大小;對擦除塊進行擦除處理;根據(jù)該閃存類型和該相關信息,創(chuàng)建與該擦除處理的擦除塊對應的該jffs2節(jié)點頭,其中,該jffs2節(jié)點頭用于指示擦除處理的擦除塊符合 jffs2文件系統(tǒng)標準,可以在加載jffs2文件系統(tǒng)前使閃存的擦除塊符合jffs2文件系統(tǒng)的 標準,大大減少初次加載jffs2文件系統(tǒng)的時間,保證了系統(tǒng)的穩(wěn)定性,此外,能夠減少對 閃存的擦除動作,大大延長了閃存的壽命。
圖1是本發(fā)明實施例提供的一種jffs2節(jié)點頭的結構示意圖;圖2是本發(fā)明實施例提供的一種格式化閃存的方法的流程圖;圖3是本發(fā)明實施例提供的一種格式化閃存的裝置的結構圖。
具體實施例方式本發(fā)明的核心思想是通過讀取閃存信息,該閃存信息包括閃存類型和擦除塊大 ??;根據(jù)該閃存信息獲取jffs2節(jié)點頭的相關信息,該相關信息包括所述jffs2節(jié)點頭的起 始位置和大??;對擦除塊進行擦除處理;根據(jù)該閃存類型和該相關信息,創(chuàng)建與該擦除處 理的擦除塊對應的該jffs2節(jié)點頭,其中,該jffs2節(jié)點頭用于指示擦除處理的擦除塊符合 jffs2文件系統(tǒng)標準,可以在加載jffs2文件系統(tǒng)前使閃存的擦除塊符合jffs2文件系統(tǒng)的 標準,大大減少初次加載jffs2文件系統(tǒng)的時間,保證了系統(tǒng)的穩(wěn)定性,同時,能夠減少對 閃存的擦除動作,大大延長了閃存的壽命。以下結合附圖,將對本發(fā)明的各實例進行較為詳細的說明。為了實現(xiàn)本發(fā)明的技術方案,本實施例定義了一種用于指示擦除塊符合jffs2文 件系統(tǒng)標準的jffs2節(jié)點頭,該節(jié)點頭所屬的節(jié)點為jffs2節(jié)點。如圖1所示,根據(jù)閃存類 型的不同,該jffs2節(jié)點頭的結構也有所不同,例如,當閃存類型為nand flash時,該jffs2 節(jié)點頭包括幻數(shù)屏蔽位(JFFS2_MAGIC_BITMASK),其取值可以是0x1985,該幻數(shù)屏蔽位用 于標識該節(jié)點為jffs2文件系統(tǒng)的節(jié)點;節(jié)點頭的類型,其值為清除標記(cleanmarker); jffs2節(jié)點的大小,可以是jffs2節(jié)點頭的大小和用戶數(shù)據(jù)的大小的和值。當閃存類型為 nor flash時,該jffs2節(jié)點頭除了包括幻數(shù)屏蔽位、節(jié)點頭的類型和jffs2節(jié)點的大小外, 還包括校驗值,用于檢驗幻數(shù)屏蔽位、節(jié)點頭的類型和jffs2節(jié)點的大小是否準確。在定義jffs2節(jié)點頭的結構后,本發(fā)明的一個實施例利用定義好的jffs2節(jié)點頭 提供了一種格式化閃存的方法,如圖2所示,包括201,讀取閃存信息,該閃存信息包括閃存類型和擦除塊大?。痪唧w地,讀取的閃存信息包括閃存類型(flash_type),閃存大小(flash_size)、 刪除塊大小(erasejize)和flash標志位(flags)等信息。其中,flash類型包括但不限 于nand flash、nor flash和data flash。根據(jù)擦除塊大小和閃存大小,可以得到總的擦 除塊數(shù)目,即用flash大小除以擦除塊大小。其中,擦除塊數(shù)目可以根據(jù)實際情況進行調(diào) 整,例如,在flash標志位是虛擬塊不被允許(MTD_N0_VIRTBL0CKS)的情況下,擦除塊數(shù)目 和jffs2節(jié)點頭的大小的乘積必須小于128K,否則擦除塊大小擴大一倍,直至滿足要求。如 果flash大小不能被擦除塊大小整除,則需要調(diào)整flash大小,使之能夠整除。202,根據(jù)閃存信息獲取jffs2節(jié)點頭的相關信息,該相關信息包括jffs2節(jié)點頭 的起始位置和大??;
jffs2節(jié)點頭的起始位置和大小需要根據(jù)不同的flash類型確定。具體地,當讀 取的閃存類型為nand閃存,獲取nand閃存的備用空間(00b,0ut ofband)中存儲的錯誤檢 查和糾正(ECC,Error Checking and Correcting)類型,根據(jù)ECC類型和讀取的擦除塊的 大小獲取jffs2節(jié)點頭的起始位置和大小。其中,對于nand閃存而言,擦除塊與obb空間 是一一對應,obb空間主要存儲兩種信息當前obb空間對應的擦除塊是否是壞塊的信息和 ECC類型。oob空間的剩余空間可以由數(shù)組oobfree [][]表示,數(shù)組oobfree
表示剩 余空間的起始位置,數(shù)組oobfree
[1]表示剩余空間的大小。當ECC類型為nand閃存默 認自動排布(nand ECC_Autoplace)時,jffs2節(jié)點頭的起始位置為擦除塊大小和剩余空間 的起始位置的和值,即為擦除塊大小和數(shù)組oobfree
的和值,jffs2節(jié)點頭的大小為 剩余空間的大小,即節(jié)點頭的大小為數(shù)組OObfree
[1]的值;當ECC類型為基于單芯片閃 存的自動排布(Automatic ECC on DiskOnChip)時,數(shù)組oobfree W]
的值固定為6字 節(jié),數(shù)組oobfree W] [1]的值固定為8字節(jié),此時,jffs2節(jié)點頭的起始位置為擦除塊大小 和備用空間中剩余空間的起始位置6字節(jié)的和值,該jffs2節(jié)點頭的大小為備用空間中剩 余空間的大小8字節(jié)。203,對擦除塊進行擦除處理;進一步地,可以在對擦除塊進行擦除處理前,判斷預擦除的擦除塊是否符合jffs2 文件系統(tǒng),如果符合,則可以不進行擦除處理;如果不符合,則需要進行擦除處理。204,根據(jù)該閃存類型和所述相關信息,創(chuàng)建與該擦除處理的擦除塊對應的jffs2 節(jié)點頭,其中,該jffs2節(jié)點頭用于指示該擦除處理的擦除塊符合jffs2文件系統(tǒng)標準。具體地,如圖1所示,根據(jù)閃存類型的不同,該jffs2節(jié)點頭的結構也有所不同, 例如,當閃存類型為nand flash時,該jffs2節(jié)點頭包括幻數(shù)屏蔽位(JFFS2_MAGIC_ BITMASK),其取值為0x1985,該幻數(shù)屏蔽位用于標識該節(jié)點為jffs2文件系統(tǒng)的節(jié)點;節(jié) 點頭的類型,其值為清除標記;jffs2節(jié)點的大小,其為jffs2節(jié)點頭的大小和用戶數(shù)據(jù)的 大小的和值,即為擦除塊大小和數(shù)組oobfree
的和值,jffs2節(jié)點頭的大小為數(shù)組 oobfree
[1]的值。當閃存類型為nor flash時,該jffs2節(jié)點頭除了包括幻數(shù)屏蔽位, 其取值為0x1985 ;節(jié)點頭的類型,其值為清除標記;jffs2節(jié)點的大小,其值為12字節(jié);以 及還包括校驗值,用于檢驗幻數(shù)屏蔽位、節(jié)點頭的類型和jffs2節(jié)點的大小是否準確。創(chuàng)建 jffs2節(jié)點頭在于表示對應的擦除塊符合該jffs2文件系統(tǒng)的標準,該擦除塊是可用的擦 除塊,jffS2文件系統(tǒng)可以直接使用,此時,如果加載jfTs2文件系統(tǒng),無需對擦除塊再做其 他處理,從而確保jffs2系統(tǒng)快速和正確啟動?;谂c方法相同的發(fā)明構思,本發(fā)明的一個實施例提供了一種格式化閃存的裝 置,如圖3所示,包括讀取模塊,用于讀取閃存信息,該閃存信息包括閃存類型和擦除塊大小;獲取模塊,用于根據(jù)該閃存信息獲取jffs2節(jié)點頭的相關信息,該相關信息包括 所述jffs2節(jié)點頭的起始位置和大??;擦除模塊,用于對擦除塊進行擦除處理;創(chuàng)建模塊,用于根據(jù)該閃存類型和該相關信息,創(chuàng)建與擦除處理的擦除塊對應的 jffs2節(jié)點頭,其中,該jffs2節(jié)點頭用于指示該擦除處理的擦除塊符合jffs2文件系統(tǒng)標 準。
進一步地,該獲取模塊具體用于當該閃存類型為nand閃存時,獲取該nand閃存 的備用空間中存儲的錯誤檢查和糾正ECC類型,根據(jù)該ECC類型和該擦除塊的大小獲取該 jffs2節(jié)點頭的相關信息。進一步地,該獲取模塊用于當該ECC類型為nand ECC_Autoplace時,該jffs2節(jié) 點頭的起始位置為擦除塊大小和備用空間中剩余空間的起始位置的和值,該jffs2節(jié)點頭 的大小為備用空間中剩余空間的大?。贿M一步地,該獲取模塊用于,當該ECC類型為Automatic ECC onDiskOnChip時,該 jffs2節(jié)點頭的起始位置為擦除塊大小和備用空間中剩余空間的起始位置6字節(jié)的和值, 該jffs2節(jié)點頭的大小為該備用空間中剩余空間的大小8字節(jié)。進一步地,該獲取模塊具體用于當該閃存類型為nor閃存時,獲取jffs2節(jié)點頭的 起始位置為擦除塊大小的開始位置,該jffs2節(jié)點頭的大小為12字節(jié)。進一步地,當該閃存類型為nand閃存時,該jffs2節(jié)點頭包括幻數(shù)屏蔽位、jffs2 節(jié)點的類型為清除標記、該jffs2節(jié)點頭所屬的jffs2節(jié)點的長度;當該閃存類型為nor閃存時,該jffs2節(jié)點頭包括幻數(shù)屏蔽位、jffs2節(jié)點的類 型為清除標記、該jffs2節(jié)點頭所屬的jffs2節(jié)點的長度和校驗值。進一步地,該裝置還包括判斷模塊,用于判斷該擦除塊是否符合jffs2文件系統(tǒng)標準,如果不符合,則通知 該擦除模塊。在本發(fā)明實施例中,通過讀取閃存信息,該閃存信息包括閃存類型和擦除塊大小; 根據(jù)該閃存信息獲取jffs2節(jié)點頭的相關信息,該相關信息包括所述jffs2節(jié)點頭的起始 位置和大??;對擦除塊進行擦除處理;根據(jù)該閃存類型和該相關信息,創(chuàng)建與該擦除處理 的擦除塊對應的該jffs2節(jié)點頭,其中,該jffs2節(jié)點頭用于指示擦除處理的擦除塊符合 jffs2文件系統(tǒng)標準,可以在加載jffs2文件系統(tǒng)前使閃存的擦除塊符合jffs2文件系統(tǒng)的 標準,大大減少初次加載jffs2文件系統(tǒng)的時間,保證了系統(tǒng)的穩(wěn)定性,此外,能夠減少對 閃存的擦除動作,大大延長了閃存的壽命。
權利要求
一種格式化閃存的方法,其特征在于,包括讀取閃存信息,所述閃存信息包括閃存類型和擦除塊大小;根據(jù)所述閃存信息獲取jffs2節(jié)點頭的相關信息,所述相關信息包括所述jffs2節(jié)點頭的起始位置和大??;對擦除塊進行擦除處理;根據(jù)所述閃存類型和所述相關信息,創(chuàng)建與所述擦除處理的擦除塊對應的所述jffs2節(jié)點頭,其中,所述jffs2節(jié)點頭用于指示所述擦除處理的擦除塊符合jffs2文件系統(tǒng)標準。
2.如權利要求1所述的格式化閃存的方法,其特征在于,當所述閃存類型為nand閃存 時,根據(jù)所述閃存信息獲取所述jffs2節(jié)點頭的相關信息包括獲取所述nand閃存的備用空間中存儲的錯誤檢查和糾正ECC類型,根據(jù)所述ECC類型 和所述擦除塊的大小獲取所述jffs2節(jié)點頭的相關信息。
3.如權利要求2所述的格式化閃存的方法,其特征在于,當所述ECC類型為nand閃存 默認自動排布時,所述jffs2節(jié)點頭的起始位置為所述擦除塊大小和所述備用空間中剩余 空間的起始位置的和值,所述jffs2節(jié)點頭的大小為所述備用空間中剩余空間的大小。
4.如權利要求2所述的格式化閃存的方法,其特征在于,當所述ECC類型為基于單芯片 閃存的自動排布時,所述jffs2節(jié)點頭的起始位置為所述擦除塊大小和備用空間中剩余空 間的起始位置6字節(jié)的和值,所述jffs2節(jié)點頭的大小為所述備用空間中剩余空間的大小 8字節(jié)。
5.如權利要求1所述的格式化閃存的方法,其特征在于,當所述閃存類型為nor閃存 時,所述jffs2節(jié)點頭的起始位置為所述擦除處理的擦除塊大小的開始位置,所述jffs2節(jié) 點頭的大小為12字節(jié)。
6.如權利要求1-5任意一項所述的格式化閃存的方法,其特征在于,當所述閃存類型為nand閃存時,所述jffs2節(jié)點頭包括幻數(shù)屏蔽位、jffs2節(jié)點的類 型為清除標記、所述jffs2節(jié)點頭所屬的jffs2節(jié)點的長度;當所述閃存類型為nor閃存時,所述jffs2節(jié)點頭包括幻數(shù)屏蔽位、jffs2節(jié)點的類 型為清除標記、所述jffs2節(jié)點頭所屬的jffs2節(jié)點的長度和校驗值。
7.如權利要求1-5任意一項所述的格式化閃存的方法,其特征在于,在所述對擦除塊 進行擦除處理之前,還包括判斷所述擦除塊不符合所述jffs2文件系統(tǒng)標準的步驟。
8.一種格式化閃存的裝置,其特征在于,包括讀取模塊,用于讀取閃存信息,所述閃存信息包括閃存類型和擦除塊大小;獲取模塊,用于根據(jù)所述閃存信息獲取jffs2節(jié)點頭的相關信息,所述相關信息包括 所述jffs2節(jié)點頭的起始位置和大?。徊脸K,用于對所述擦除塊進行擦除處理;創(chuàng)建模塊,用于根據(jù)所述閃存類型和所述相關信息,創(chuàng)建與所述擦除處理的擦除塊 對應的所述jffs2節(jié)點頭,其中,所述jffs2節(jié)點頭用于指示所述擦除處理的擦除塊符合 jffs2文件系統(tǒng)標準。
9.如權利要求8所述的格式化閃存的裝置,其特征在于,所述獲取模塊具體用于當所述閃存類型為nand閃存時,獲取所述nand閃存的備用空間中存儲的錯誤檢查和糾正ECC 類型,根據(jù)所述ECC類型和所述擦除塊的大小獲取所述jffs2節(jié)點頭的相關信息。
10.如權利要求8所述的格式化閃存的裝置,其特征在于,所述獲取模塊具體用于當所 述閃存類型為nor閃存時,獲取所述jffs2節(jié)點頭的起始位置為所述擦除塊大小的開始位 置,所述jffs2節(jié)點頭的大小為12字節(jié)。
11.如權利要求8-10任意一項所述的格式化閃存的裝置,其特征在于,當所述閃存類型為nand閃存時,所述創(chuàng)建模塊創(chuàng)建的所述jffs2節(jié)點頭包括幻數(shù)屏 蔽位、jffs2節(jié)點的類型為清除標記、所述jffs2節(jié)點頭所屬的jffs2節(jié)點的長度;當所述閃存類型為nor閃存時,所述創(chuàng)建模塊創(chuàng)建的所述jff s2節(jié)點頭包括幻數(shù)屏蔽 位、jffs2節(jié)點的類型為清除標記、所述jffs2節(jié)點頭所屬的jffs2節(jié)點的長度和校驗值。
12.如權利要求8-10任意一項所述的格式化閃存的裝置,其特征在于,還包括判斷模塊,用于判斷所述擦除塊是否符合所述jffs2文件系統(tǒng)標準,如果不符合,則通 知所述擦除模塊。
全文摘要
本發(fā)明公開了一種格式化閃存的方法和裝置,屬于計算機領域。該方法包括讀取閃存信息,所述閃存信息包括閃存類型和擦除塊大?。桓鶕?jù)所述閃存信息獲取jffs2節(jié)點頭的相關信息,所述相關信息包括所述jffs2節(jié)點頭的起始位置和大??;對擦除塊進行擦除處理;根據(jù)所述閃存類型和所述相關信息,創(chuàng)建與所述擦除處理的擦除塊對應的所述jffs2節(jié)點頭,其中,所述jffs2節(jié)點頭用于指示所述擦除處理的擦除塊符合jffs2文件系統(tǒng)標準。本發(fā)明的技術方案可以在加載jffs2文件系統(tǒng)前使閃存的擦除塊符合jffs2文件系統(tǒng)的標準,大大減少初次加載jffs2文件系統(tǒng)的時間,保證了系統(tǒng)的穩(wěn)定性。
文檔編號G06F17/30GK101996168SQ20091000878
公開日2011年3月30日 申請日期2009年8月25日 優(yōu)先權日2009年8月25日
發(fā)明者馮駿, 陸小飛 申請人:中興通訊股份有限公司