基于ARM的嵌入式文件系統(tǒng)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的子系統(tǒng).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文件系統(tǒng),所以在內核的配置菜單 [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文件系統(tǒng)的定制.
7 測試掛載的YAFFS文件系統(tǒng)
1.用imagewrite命令將YAFFS文件系統(tǒng)的映像文件燒寫到mtdblock3分區(qū).
2.在ramdisk根文件系統(tǒng)中創(chuàng)建掛載目錄,使用命令mkdir /mnt/yaffs.
3. 執(zhí)行mount –t yaffs /dev/mtdblock/3 /mnt/yaffs來掛載YAFFS文件系統(tǒng).
4. 由于內核配置了proc文件系統(tǒng),用cat /proc/mounts 可以查看已經成功掛載了YAFFS文件系統(tǒng),用ls /mnt/yaffs可以查看YAFFS文件系統(tǒng)的內容.
8 結束語
本文為開發(fā)者提供了在ARM9平臺上移植YAFFS文件系統(tǒng)的方法和過程的參考,創(chuàng)新之處是在當前嵌入式應用中比較新的2.6內核上測試完成的.測試過程中 YAFFS穩(wěn)定性能比JFFS2文件系統(tǒng)要穩(wěn)定的多,而且mount分區(qū)的時間也比JFFS2文件系統(tǒng)少的多。需要注意一點是,即使NAND FLASH 是512+16B的,不需要使用YAFFS2,也必須將對2kpage的NAND FLASH的支持這一項選上,否則編譯無法通過.由于ARM- S3C2410不支持大容量的NAND FLASH,所以flash是512+16B / page的,即使你選擇的是YAFFS2文件系統(tǒng),內核也會自動選擇掛載為YAFFS1文件系統(tǒng),由于實驗系統(tǒng)的局限性,本文只在ARM-S3C2410平臺上實現(xiàn)了YAFFS1文件系統(tǒng)的移植,在功能更強大ARM 芯片系列中已經加入了對大容量(512M)的NAND FLASH的支持,支持YAFFS2文件系統(tǒng),移植方法與YAFFS文件系統(tǒng)移植方法大致相同.
參考文獻:
[1] 杜春雷,ARM體系結構與編程[M]。北京:清華大學出版社,2003
[2] 潘巨龍,黃寧,ARM9嵌入式系統(tǒng)構建與應用[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啟動引導實現(xiàn)的分析[J].微計算機信息,2005,8-2:50—52
評論