下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
YAFFS文件系統(tǒng)簡介
一、YAFFS文件系統(tǒng)簡介
YAFFS(YetAnotherFlashFileSystem)文件系統(tǒng)是專門為
NandFlash設(shè)計的文件系統(tǒng),有些類似與JFFS/JFFS2文件系統(tǒng),不同
之處是JFFS/JFFS2文件系統(tǒng)最初是為NorFlash的應(yīng)用場合設(shè)計的,
而NorFlash和NandFlash本質(zhì)上有較大的區(qū)別(壞塊、備用區(qū)、容
量),所以盡管JFFS/JFFS2文件系統(tǒng)也能應(yīng)用于NandFlash,但由于
它的內(nèi)存占用和啟動時間針對NorFlash做了特殊取舍,所以對于
NanFlash來說通常不是最優(yōu)方案(性能較低和啟動速度稍慢)。而
YAFFS利用NandFlash提供的每個頁面16字節(jié)或64字節(jié)的Spare區(qū)
(備用區(qū))空間來存放ECC和文件系統(tǒng)的組織信息,能夠?qū)崿F(xiàn)錯誤檢
測和壞塊處理。這樣的設(shè)計充分考慮了NandFlash以頁面為存取單元
的特點,將文件組織成固定大小的數(shù)據(jù)段,能夠提高文件系統(tǒng)的加載
速度。(垃圾回收算法+貪心算法)
YAFFS目前有YAFFS、YAFFS2兩個版本(YAFFS3還在研發(fā)階段,
沒有面市),一般來說,YAFFS對小頁面(512B+16B/頁)有很好的
支持,YAFFS2對更大的頁面(2K+64B/頁)支持更好。
二、YAFFS文件系統(tǒng)在NandFlash上的組織方式
YAFFS對文件系統(tǒng)上的所有內(nèi)容(比如正常文件,目錄,鏈接,
設(shè)備文件等等)都統(tǒng)一當(dāng)作文件來處理,每個文件都有一個頁面專門
存放文件頭,文件頭保存了文件的模式、所有者ID、組ID、長度、文
件名、ParentObjectID等信息。因為需要在一頁內(nèi)放下這些內(nèi)容,
所以對文件名的長度,符號鏈接對象的路徑名等長度都有限制。
YAFFS充分利用了NandFlash的〃備用區(qū)〃空間,這個備用空間
是指每個頁的16自己的Spare區(qū),通常不作為存儲數(shù)據(jù)的空間。
YAFFS用了其中的6個字節(jié)作為頁面數(shù)據(jù)的ECC,1個字節(jié)用作壞塊
狀態(tài)標(biāo)志字,1個字節(jié)用作數(shù)據(jù)狀態(tài)標(biāo)志字,其余的8個字節(jié)用來存放
文件系統(tǒng)的組織信息。詳細(xì)閱讀Linux源碼中yaffs\yaffs_guts.h文件
中yaffs.Spare數(shù)據(jù)結(jié)構(gòu),參見下圖所示:
以512B+16B為一頁(16B表示每頁面的備用空間為16字節(jié))
的NandFlashK9F1208為例,文件系統(tǒng)數(shù)據(jù)的存儲結(jié)構(gòu)如下表所示。
字節(jié)起始字節(jié)終止長度(字內(nèi)容描述
節(jié))
0511512數(shù)據(jù)區(qū)域(文件數(shù)據(jù)或文件
頭)
5125154YAFFSTAGi
5165161數(shù)據(jù)狀態(tài)標(biāo)志字
5175171壞塊狀態(tài)標(biāo)志字
5185192YAFFSTAG2
5205223后256字節(jié)數(shù)據(jù)的ECC校驗
結(jié)果
5235242YAFFSTAG2
5255273前256字節(jié)數(shù)據(jù)的ECC校驗
結(jié)果
表格YAFFS文件系統(tǒng)數(shù)據(jù)的存儲布局
這里YAFFS文件系統(tǒng)共使用了8個字節(jié)(64Bit)用來存放文件系
統(tǒng)相關(guān)的信息,這8個字節(jié)的具體使用情況,請詳細(xì)閱讀Linux源碼
中yaffs\yaffs_guts.h文件中yaffs_Tags數(shù)據(jù)結(jié)構(gòu),請參見下圖和下
表所小。
位數(shù)內(nèi)容說明
20Chunkld該page在一個文件內(nèi)的索引號,所以文件
大小被限制512M
2serialNumber2位序列號
10byteCount該頁內(nèi)的有效字節(jié)數(shù)
18objected文件ID號,用來唯一標(biāo)識一個文件
12ECCyaffs_Tags本身的ECC校驗和
2unusedStuffUnUsed
表格YAFFS文件系統(tǒng)組織信息分配表
其中serialNumber在文件系統(tǒng)創(chuàng)建時初始化為0,以后每次寫具
有統(tǒng)一ObjectID和ChunkID的頁的時候都加1,因為YAFFS文件系
統(tǒng)在更新一個頁的時候總是在一個新的物理頁上寫入數(shù)據(jù),再將原先
的物理也刪除,所以根據(jù)SerialNumber,當(dāng)新的頁已經(jīng)寫入但老的頁
還沒有被刪除的時候用來時被正確的頁,以保證特殊環(huán)境下(例如突
然掉電),數(shù)據(jù)的正確性。
由于文件系統(tǒng)的基本組織信息保存在頁面的備用區(qū)中,因此,在
文件系統(tǒng)加載時只需要掃描所有頁面的備用區(qū)空間,即可建立在RAM
中建立起整個文件系統(tǒng)的結(jié)構(gòu),從而大大加快了文件系統(tǒng)的加載速度。
(比JFFS文件系統(tǒng)啟動速度快的原因:JFFS需要掃描整個芯片數(shù)據(jù)并
進(jìn)行分析)
三、YAFFS文件系統(tǒng)在內(nèi)存上的組織方式
通常一個具體的文件系統(tǒng)都會在VFS的SuperBlock結(jié)構(gòu)中存儲
通用的數(shù)據(jù)結(jié)構(gòu),同時也有自己的私有數(shù)據(jù)。YAFFS文件系統(tǒng)的專有
數(shù)據(jù)是yaffs.DeviceStruct的數(shù)據(jù)結(jié)構(gòu),主要用來存儲軟硬件配置信
息,相關(guān)函數(shù)指針和統(tǒng)計信息等。
YAFFS文件系統(tǒng)的SuperBlock塊是在文件系統(tǒng)mount加載的過
程中由read_super()函數(shù)填充的,由于物理上沒有存儲SuperBlock塊,
所以NandFlash上的YAFFS文件系統(tǒng)本身沒有存儲文件系統(tǒng)的魔術(shù)
NandFlash上數(shù)據(jù)系統(tǒng)的組織起來,在內(nèi)存中維護一個完整的文件系
統(tǒng)結(jié)構(gòu)。
四、YAFFS文件系統(tǒng)對MTD的依賴
YAFFS文件系統(tǒng)通常是運行在MTD之上的,因此需要根據(jù)實際應(yīng)
用修改MTD的驅(qū)動,以K9F4G08UOM為例子,找至I」
driver/mtd/nand/smdk2440.c,修改:mtd_partition分區(qū)結(jié)構(gòu)體、
相關(guān)控制引腳函數(shù)smdkXXX_hwcontro、初始化函數(shù)
smdkXXX_nand_init等函數(shù),并將NandFlash驅(qū)動加入MTD子系
統(tǒng)。
五、YAFFS文件系統(tǒng)的制作和移植
yaffs源代碼包的utils目錄下包含了
mkyaffsimage/mkyaffs2image的代碼,簡單的修改一下Makefile
里的內(nèi)核路徑就能編譯出mkyaffsimage/mkyaffs2imageTMo運行
mkyaffsimagedirimagename可以制作出yaffs文件系統(tǒng)的鏡像。
但是,需要注意的是,制作出來的yaffsimage文件與通常的文件系統(tǒng)
的image文件不同,因為在image文件里除了以512字節(jié)為單位的
一個page的data數(shù)據(jù)外,同時緊跟在后還包括了16字節(jié)為單位的
NandFlash備用區(qū)OOB的數(shù)據(jù)。所以實際上是以528個字節(jié)為單位
的。就是因為包含了這額外的16字節(jié)/page的數(shù)據(jù),所以通常的下載
其它類型image的工具就無法正常下載yaffsimage了,需要修改你
所使用的下載工具的代碼,使得它能將yaffsimage中的這些額外數(shù)據(jù)
也寫入NandFlashOOB中。
這里還有一點需要注意的是,通過mkyaffsimage制做出來的
image其00B中也包含它自己計算的ECC校驗數(shù)據(jù),其校驗算法有
可能和MTD驅(qū)動的校驗算法不同,如果在內(nèi)核中由MTD來處理ECC,
會造成MTD認(rèn)為所有的page都校驗錯誤。要解決這個問題通常有兩
種方法:
第一、重新配置內(nèi)核,進(jìn)入文件系統(tǒng)模塊的選擇界面,選中"Lets
YaffsdoitsownECU,同時將MTD中的ECC校驗關(guān)閉。但是這種
不校驗數(shù)據(jù)ECC的做法,在系統(tǒng)使用過程中產(chǎn)生壞塊位時,就會顯示
出系統(tǒng)的健壯和容錯性很差。
第二、通過修改bootloader
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀行長職位面試問題及答案
- 汽車銷售顧問招聘面試題目解答
- 土木工程師執(zhí)業(yè)資格考試復(fù)習(xí)寶典含答案
- 財務(wù)出納崗位面試題庫及答案
- 口譯員面試技巧與常見問題解答
- 2025年個性化營養(yǎng)與健康項目可行性研究報告
- 2025年數(shù)字支付系統(tǒng)構(gòu)建可行性研究報告
- 2025年社區(qū)文化服務(wù)項目可行性研究報告
- 2025年極簡生活產(chǎn)品開發(fā)項目可行性研究報告
- 2025年家庭智能機器人研發(fā)項目可行性研究報告
- 雨課堂學(xué)堂在線學(xué)堂云《情報檢索-信息時代的元素養(yǎng)》單元測試考核答案
- 2026廣東深圳市事業(yè)單位招聘高校畢業(yè)生658人(公共基礎(chǔ)知識)測試題帶答案解析
- 2026年計算機操作員(中級)自測試題及答案
- 2025北京城投國際物流集團有限公司天津科技分公司招聘4人筆試考試參考試題及答案解析
- 井下支柱工實操考試試題及答案
- 2025年4.15全民國家安全教育日知識競賽題附答案
- 2025廣投集團秋季校園招聘筆試歷年參考題庫附帶答案詳解
- (2025版)混合性認(rèn)知障礙診治專家共識解讀課件
- 2025至2030中國船用防凍劑行業(yè)項目調(diào)研及市場前景預(yù)測評估報告
- 智慧停車系統(tǒng)培訓(xùn)課件大綱
- 陰囊挫傷課件
評論
0/150
提交評論