YAFFS檔案系統簡介

2021-08-31 20:43:32 字數 964 閱讀 6242

yaffs檔案系統簡介

yaffs(yet another flash filing system)是第乙個專門為nand flash儲存器設計的嵌入式檔案系統,適用於大容量的儲存裝置;並且是在gpl(general public license)協議下發布的,可在其**免費獲得源**。

yaffs是基於日誌的檔案系統,提供磨損平衡和掉電恢復的健壯性。它還為大容量的flash晶元做了很好的調整,針對啟動時間和ram的使用做了優化。它適用於大容量的儲存裝置,已經在linux和wince商業產品中使用。

詳細內容

yaffs中,檔案是以固定大小的資料塊進行儲存的,塊的大小可以是512位元組、1 024位元組或者2 048位元組。這種實現依賴於它能夠將乙個資料塊頭和每個資料塊關聯起來。每個檔案(包括目錄)都有乙個資料塊頭與之相對應,資料塊頭中儲存了ecc(error correction code)和檔案系統的組織資訊,用於錯誤檢測和壞塊處理。充分考慮了nand flash的特點,yaffs把這個資料塊頭儲存在flash的16位元組備用空間中。當檔案系統被掛載時,只須掃瞄儲存器的備用空間就能將檔案系統資訊讀入記憶體,並且駐留在記憶體中,不僅加快了檔案系統的載入速度,也提高了檔案的訪問速度,但是增加了記憶體的消耗。

為了在節省記憶體的同時提高檔案資料塊的查詢速度,yaffs利用更高效的對映結構把檔案位置映 射到物理位置。檔案的資料段被組織成樹型結構,這個樹型結構具有32位元組的節點,每個內部節點都包括8個指向其他節點的指標,葉節點包括16個2位元組的指 向實體地址的指標。yaffs在檔案進行改寫時總是先寫入新的資料塊,然後將舊的資料塊從檔案中刪除。這樣即使在修改檔案時意外掉電,丟失的也只是這一次修改資料的最小寫入單位,從而實現了掉電保護,保證了資料完整性。

結合貪心演算法的高效性和隨機選擇的平均性,yaffs實現了兼顧損耗平均和減小系統開銷的目的。當滿足特定的小概率條件時,就會嘗試隨機選擇乙個可**的頁面;而在其他情況下,則使用貪心演算法來**最「髒」的塊[2]。

yaffs檔案系統移植筆記

一 開發環境 1 核心 linux 2.6.22.6 2 jz2440 3 ubuntu 9.10 二 移植yaffs檔案系統 1 解壓yaffs source.tar.gz。本文直接解壓到當前目錄。使用命令 tar xzf yaffs source.tar.gz 切換到解壓的yaffs2目錄 cd...

Yaffs 檔案系統分析

1 yaffs檔案系統結構 1.1 簡介 1.1.1 應用場合 yaffs yet another flash file system 檔案系統是專門針對nand快閃儲存器設計的嵌入式檔案系統,目前有yaffs和yaffs2兩個版本,兩個版本的主要區別之一在於yaffs2能夠更好的支援大容量的nan...

通過uboot燒寫yaffs檔案系統

之前在sep4020上做開發的時候一直用的都是nfs檔案系統 今天嘗試在板子上燒寫cramfs以及yaffs檔案系統,按照手冊燒寫cramfs檔案系統時一切順利,沒有遇到什麼問題。在燒yaffs的時候,起初使用的是在啟動cramfs之後,再把yaffs的分割槽掛在到cramfs中,並把相關的檔案拷貝...