基于ARM的嵌入式文件系統(tǒng)YAFFS的移植
6 配置和編譯內(nèi)核
1.選中對MTD(memory technology device內(nèi)存技術(shù)設(shè)備)的支持.
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設(shè)備(ROM、flash)的Linux的子系統(tǒng).MTD可以使新的memory設(shè)備的驅(qū)動更加簡單,為此它在硬件和上層之間提供了一個抽象的接口.
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
這樣就完成了內(nèi)核對NAND FLASH的支持.
3.由于添加了YAFFS2文件系統(tǒng),所以在內(nèi)核的配置菜單 [File systems] 中的 [miscellaneous filesystems] 中增加了 [Yaffs2 file systems support] 選項.這個選項就是 YAFFS2的配置內(nèi)容.
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
選擇這個選項的全部內(nèi)容,保存配置,然后退到終端,輸入make zImage,重新編譯內(nèi)核,這樣就就完成了對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. 由于內(nèi)核配置了proc文件系統(tǒng),用cat /proc/mounts 可以查看已經(jīng)成功掛載了YAFFS文件系統(tǒng),用ls /mnt/yaffs可以查看YAFFS文件系統(tǒng)的內(nèi)容.
8 結(jié)束語
本文為開發(fā)者提供了在ARM9平臺上移植YAFFS文件系統(tǒng)的方法和過程的參考,創(chuàng)新之處是在當前嵌入式應(yīng)用中比較新的2.6內(nèi)核上測試完成的.測試過程中 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),內(nèi)核也會自動選擇掛載為YAFFS1文件系統(tǒng),由于實驗系統(tǒng)的局限性,本文只在ARM-S3C2410平臺上實現(xiàn)了YAFFS1文件系統(tǒng)的移植,在功能更強大ARM 芯片系列中已經(jīng)加入了對大容量(512M)的NAND FLASH的支持,支持YAFFS2文件系統(tǒng),移植方法與YAFFS文件系統(tǒng)移植方法大致相同.
參考文獻:
[1] 杜春雷,ARM體系結(jié)構(gòu)與編程[M]。北京:清華大學出版社,2003
[2] 潘巨龍,黃寧,ARM9嵌入式系統(tǒng)構(gòu)建與應(yīng)用[M]。北京:北京航空航天大學出版社,2006
[3] 陳 春,ARM9嵌入式技術(shù)及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啟動引導(dǎo)實現(xiàn)的分析[J].微計算機信息,2005,8-2:50—52
評論