新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 在U-Boot中實現對Yaffs鏡像的支持

        在U-Boot中實現對Yaffs鏡像的支持

        作者: 時間:2009-08-26 來源:網絡 收藏

        0 引 言
        是目前廣泛使用的嵌入式操作系統通用引導程序,具有功能豐富強大,多種操作系統和 CPU體系,易于功能擴展和移植,源碼開放等多種優點。能夠同時啟動加載模式和下載模式。在下載模式下,可以通過自帶的 nand read/write等命令,配合.Jffs 2等參數,cramfs,Jffs 2等文件系統鏡像的讀寫,方便開發過程的調試。文件系統是專門針對NAND FLASH設計的可讀寫型文件系統,在NAND FLASH上性能穩定優異。U-Boot自身沒有文件系統鏡像讀寫的直接。由于文件系統的特殊結構,需要對nand命令做一定的修改,從而其在NANDFLASH上對Yaffs鏡像的讀寫。

        本文引用地址:http://www.104case.com/article/152372.htm

        1 相關工作簡介
        1.1 Yaffs文件系統結構簡述
        目前,嵌入式系統中常用的FLASH文件系統有Cramfs,Jffs 2,Yaffs,exfat等。Cramfs是一種壓縮型只讀型文件系統,其在系統啟動時解壓至內存中運行。Jffs 2,Yaffs,Exfat等是可讀寫型文件系統,Jffs 2一般應用于NOR型FLASH;Exfat不是開源的文件系統實現,一般應用于Windows CE操作系統中。Yaffs是一種專門針對NAND FLASH設計的可讀寫型文件系統,它能針對嵌入式存儲器的功能要求提供損耗平衡、掉電保護等。Yaffs文件系統的源代碼開放,在多種嵌入式操作系統中移植十分方便。
        通常一個NAND FLASH存儲設備由若干塊組成;1個塊由若干頁組成。一般128 MB以下容量的NAND FLASH芯片,一頁大小為528 B,依次分為2個256 B的主數據區和16 B的額外空間;128 MB以上容量的NAND FLASH芯片,一頁大小通常為2 KB。由于NAND FLASH出現位反轉的概率較大,一般在讀寫時需要使用ECC進行錯誤檢驗和恢復。
        Yaffs文件系統的設計充分考慮到NAND FLASH以頁為存取單位等的特點,將文件組織成固定大小的段(Chunk)。以528 B的頁為例,Yaffs文件系統使用前512 B存儲數據、16 B的額外空間,用以存放數據的ECC和文件系統的組織信息等(稱為OOB數據)。通過OOB數據,不但能實現錯誤檢測和壞塊處理;同時可以避免加載時對整個存儲介質的掃描,加快了文件系統的加載速度。一個頁面的具體結構如表1所示。

        由此可知,與其他文件系統相比,在生成Yaffs鏡像時就包含了OOB數據,所以在燒寫Yaffs鏡像時,不需要計算ECC,僅依次寫入512 B的數據和16 B的OOB數據即可。同時,Yaffs鏡像要使用分區上的第一個塊來存儲一個名為Yaffs_ObjectHeader的結構體。該結構體記錄了該分區中的文件、路徑以及相關的鏈接,所以在燒寫時還需要跳過第一個可用的塊。Yaffs文件系統目前常用的版本為Yaffs 2,性能在許多方面都有了很大的提高。
        1.2 U-Boot對常見文件系統的支持
        在實際開發過程中,一般使用引導程序,比如U-Boot,完成文件向FLASH中的燒寫和啟動引導等工作。U-Boot能夠支持Cramfs,Jffs 2文件系統的燒寫。這些文件系統是針對NOR型FLASH設計的,所有文件數據就是簡單的線性表組織形式。對于目前大量使用的NAND型FLASH,由于帶有用于數據校驗等功能的OOB區,所以Yaffs文件系統的數據組織形式不再是線性表的形式。
        U-Boot沒有提供對Yaffs文件系統的讀寫支持。但由于該文件系統的讀寫過程與其他文件系統的讀寫類似,因此可以通過修改U-Boot的FLASH讀寫命令,增加處理00B區域數據的功能,即可以實現對Yaffs文件系統的讀寫支持。


        上一頁 1 2 3 下一頁

        關鍵詞: 支持 Yaffs 實現 U-Boot

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 上饶市| 台南市| 松溪县| 交口县| 宜宾县| 东阳市| 吉木乃县| 三明市| 太保市| 鲁山县| 麟游县| 左权县| 孝义市| 鹰潭市| 蒲江县| 仙桃市| 津市市| 南充市| 苍梧县| 清新县| 河池市| 漳州市| 长春市| 中超| 永仁县| 凯里市| 潼南县| 德阳市| 莲花县| 寿阳县| 佛山市| 沈阳市| 泾阳县| 连州市| 清水河县| 玉山县| 正宁县| 普兰店市| 宕昌县| 玉田县| 喀喇沁旗|