在U-Boot中實現對Yaffs鏡像的支持
通過以上步驟,U-Boot已經可以支持Yaffs文件系統鏡像的讀寫。一般地,在進行NAND FLASH寫操作時,可以先通過串口或網絡等接口將數據下載到內存中,進而按照命令格式將其燒寫到NAND FLASH中。例如:本文引用地址:http://www.j9360.com/article/201809/388999.htm
在U-Boot中使用以上三條命令,將名為test.yaffs的Yaffs文件系統鏡像下載到內存中,然后擦除一塊FLASH空間,最后用Nand Write.yaffs命令將其寫入NAND FLASH。燒寫完畢后會提示:
Writing data at 0xd67200-100%complete.
3663264 bytes written:OK
另外,由于沒有使用ECC,燒寫過程中會有大量如下提示:
Writing data without ECC to NAND_FLASH is not recom-mended
事實上,ECC數據在生成Yaffs鏡像時已經包含在鏡像里,因此這里的提示并沒有關系。在drivers/nand/nand_basec.c文件中,將nand_write_page函數中case NAND_ECC_NONE:語句分支中的printk函數注釋掉即可消除此提示。
3 Yaffs文件系統的性能
在實際使用中,一般CPU的運行速度遠大于FLASH的讀寫速度,所以yaffs文件系統的讀寫速度主要由具體FLASH芯片的讀寫時間延遲來決定。
對于常使用的Yaffs 2,寫操作的速度為1.5~4.5 MB/S,讀操作的速度為7.6~16.7 MB/S,刪除操作為7.8~62.5 MB/s,垃圾回收為2.1~7.7 MB/s。由于一般嵌入式系統數據交換量不大,所以該文件系統完全能夠滿足一般實時性操作的要求。
此外,作為日志型文件系統,Yaffs文件系統能夠有效地保護數據完整性,避免系統掉電等情況對數據產生的破壞。同時,與其他FLASH文件系統相比, Yaffs文件系統的實現給NAND型FLASH帶來了很多優化,在速度、內存占用以及能耗等方面都有更好的表現。
4 結 語
這里在分析Yaffs文件系統基本結構的基礎上,通過為U-Boot已有命令添加新的參數,實現了U- Boot讀寫Yaffs文件系統鏡像的支持。最后通過一個簡單試驗進行了驗證。結果表明,燒寫入FLASH中的文件系統鏡像可以被嵌入式Linux等操作系統的內核掛載使用。方便了嵌入式系統的Yaffs根文件系統鏡像的創建和調試。
評論