jffs2文件系統簡介
JFFS2全稱是Journalling Flash File System Version2(閃存日誌型文件系統第2版,Redhat
公司開發的Flash的文件系統,其前身是JFFS, 最早只支援Norflash,自2.6版以後開始應
用於NAND Flash,其功能就是管理在MTD設備上實現的日誌型文件系統,極適合使用於嵌入
式系統。
JFFS2本身存在不足之處,第一,掛載時間很長,原因在於掛載的時候需要對flash從頭
掃描。第二,數據讀寫速度慢。第三,不適用於大頁的nandflash。
根文件系統鏡像系統製作
使用工具mkfs.jffs2製作rootfs-jffs2.bin鏡像文件:
mkfs.jffs2 -n -s 2048 -e 128KiB -d ./rootfs -o rootfs-jffs2.bin --pad=0xa00000
-n:指明不添加清除標記(nand flash 有自己的校檢塊,存放相關的信息),如果掛載後會
出現下面類似警告信息,則加上-n 就會消失:CLEANMARKER node found at 0x0042c000
has totlen 0xc != normal 0x0
-s:指定Nandflash的頁大小爲2KB
-e:指定Nandflash的擦除塊大小爲128KB
-d:指定根文件系統目錄樹的路徑 爲./rootfs
-o:指定製作生成的根文件系統鏡像文件名爲 rootfs-jffs.bin,該文件需要u-boot燒錄
到Nandflash的相應分區
--pad=0xa00000:將製作的根文系統鏡像(rootfs-jffs2.bin)文件大小用0xFF填充爲--pad指
定的值。
內核配置和編譯
這部分需要提及的點就是取消initramfs選項和勾選jffs支持選項,其他可以根據自己的需要勾選。
u-boot系統燒錄和環境變量配置
這部分是重點,但內核和文件系統下載到nandfalsh相應分區的時候,需要設置bootargs參數,告訴內核根文件系統
應該掛載到哪個分區,因爲在進行jffs根文件系統製作之前,我已經進行了nandflash分區操作。
set bootargs 'console=tty0 console=ttyS0,115200,root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc mem=64M
rw noinitrd loglevel=7'