基于ARM的嵌入式文件系統YAFFS的移植
6 配置和編譯內核
1.選中對MTD(memory technology device內存技術設備)的支持.
Memory Technology Device (MTD)
support --->
[~] MTD concatenating support
• MTD partitioning support
[~] RedBoot partition table parsing
[~] Command line partition table parsing
User Modules And Translation Layers
• Direct char device access to MTD devices
• Caching block device access to MTD devices
MTD 主要是用于訪問memory設備(ROM、flash)的Linux的子系統.MTD可以使新的memory設備的驅動更加簡單,為此它在硬件和上層之間提供了一個抽象的接口.
2.選中NAND Device Support
• NAND Device Support --->
[~] Verify NAND page writes
• NAND Flash support for S3C2410/S3C2440 SoC
• S3C2410 NAND driver debug
[~] S3C2410 NAND Hardware ECC
這樣就完成了內核對NAND FLASH的支持.
3.由于添加了YAFFS2文件系統,所以在內核的配置菜單 [File systems] 中的 [miscellaneous filesystems] 中增加了 [Yaffs2 file systems support] 選項.這個選項就是 YAFFS2的配置內容.
File systems ---> Miscellaneous filesystems --->
• YAFFS2 file system support
--- 512 byte / page devices
• Lets Yaffs do its own ECC
• Use the same ecc byte order as Steven Hill's nand_ecc.c
--- 2048 byte (or larger) / page devices
• Autoselect yaffs2 format
• Disable lazy loading
• Turn off wide tnodes
• Turn off debug chunk erase check
• Cache short names in RAM
選擇這個選項的全部內容,保存配置,然后退到終端,輸入make zImage,重新編譯內核,這樣就就完成了對YAFFS文件系統的定制.
7 測試掛載的YAFFS文件系統
1.用imagewrite命令將YAFFS文件系統的映像文件燒寫到mtdblock3分區.
2.在ramdisk根文件系統中創建掛載目錄,使用命令mkdir /mnt/yaffs.
3. 執行mount –t yaffs /dev/mtdblock/3 /mnt/yaffs來掛載YAFFS文件系統.
4. 由于內核配置了proc文件系統,用cat /proc/mounts 可以查看已經成功掛載了YAFFS文件系統,用ls /mnt/yaffs可以查看YAFFS文件系統的內容.
8 結束語
本文為開發者提供了在ARM9平臺上移植YAFFS文件系統的方法和過程的參考,創新之處是在當前嵌入式應用中比較新的2.6內核上測試完成的.測試過程中 YAFFS穩定性能比JFFS2文件系統要穩定的多,而且mount分區的時間也比JFFS2文件系統少的多。需要注意一點是,即使NAND FLASH 是512+16B的,不需要使用YAFFS2,也必須將對2kpage的NAND FLASH的支持這一項選上,否則編譯無法通過.由于ARM- S3C2410不支持大容量的NAND FLASH,所以flash是512+16B / page的,即使你選擇的是YAFFS2文件系統,內核也會自動選擇掛載為YAFFS1文件系統,由于實驗系統的局限性,本文只在ARM-S3C2410平臺上實現了YAFFS1文件系統的移植,在功能更強大ARM 芯片系列中已經加入了對大容量(512M)的NAND FLASH的支持,支持YAFFS2文件系統,移植方法與YAFFS文件系統移植方法大致相同.
參考文獻:
[1] 杜春雷,ARM體系結構與編程[M]。北京:清華大學出版社,2003
[2] 潘巨龍,黃寧,ARM9嵌入式系統構建與應用[M]。北京:北京航空航天大學出版社,2006
[3] 陳 春,ARM9嵌入式技術及Linux高級實踐教程[M]。北京:北京航空航天大學出版社,2005
[4] Wookey and Tak—Shing,Porting the Linux Kernel to a New ARM Platform,SOLUTIONS JOURNAL,2002,4:52—57
[5] 郝淑風等.基于ARM的uCLinux啟動引導實現的分析[J].微計算機信息,2005,8-2:50—52
評論