歡迎您光臨本站 註冊首頁

嵌入應用:如何製作和使用Jffs2文件系統

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

本文主要介紹如何在AT91SAM9261EK板子上製作和使用jffs2文件系統,使用的是linux-2.6.21內核.

首先配置MTD

$ make menuconfig      進入 Memory Technology Devices (MTD) --->         <*> Memory Technology Device (MTD) support          [*] Debugging          [*] MTD partitioning support          [*]  Command line partition table parsing          [*] Direct char device access to MTD devices          [*] Caching block device access to MTD devices          RAM/ROM/Flash chip drivers ----->             <*> Detect non-CFI AMD/JEDEC-compatible flash chips             <*> Support for AMD/Fujitsu flash chips          Mapping drivers for chip access --->              [*] Support non-linear mappings of flash chips          Self-contained MTD device drivers --->              [*] Support for AT45... DataFlash          NAND Flash Device Drivers ---->              [*] NAND Device Support              [*] Support for NAND Flash /SmartMedia on AT91                                 File systems ---->            <*> Second extended fs support            [*] Inotify file change notification support            [*] Inotify support for user space            <*> Filesystem in Userspace support            Miscellaneous filesystems             <*> Journalling Flash File System v2 (JFFS2) support             [*] JFFS2 write-buffering support             <*> Compressed ROM file system support (cramfs)

以上配置中沒有列出的,都沒選;其配置僅做參考,可根據自己的需要自行配置.

$ make all

其次製作mtd-util工具

從網上下載zlib-1.2.3.tar.gz 解壓縮 $ cd zlib-1.2.3

$ ./configure –prefix=/usr/local/arm/3.4.1/arm-linux --shared

修改Makefile如下:

CC=arm-linux-gcc

LDSHARED=arm-linux-ld -shared

$ make all

$ make install

注意:這裡是安裝在/usr/local/arm/3.4.1/arm-linux目錄下

由於交叉編譯mtd工具時需要zlib.h文件,在編譯之前先安裝zlib庫文件.

從網上下載 mtd-snapshot-20050519.tar.bz2 解壓縮 $ cd mtd/util

修改該目錄下的Makefile:

CROSS=arm-linux-

$ make all

然後將該目錄下生成的 flash_erase,flash_eraseall, mkfs.jffs2工具放在ramdisk 文件系統中(我這裡放在/bin目錄下),另外在 ramdisk文件系統的dev目錄下要保證有mtd0~mtd9,mtdblock0~mtdblock9這些設備,如果沒有可參考 ramdisk文件系統的製作,也可從pc機相同目錄下拷貝,要加上文件屬性.

另外,需要將/arm-linux/lib目錄下的libz.so, libz.so.1, libz.so.1.2.3文件拷貝到ramdisk文件系統的/lib目錄下,否則mkfs.jffs2工具不能使用.

將新生成的uImage和ramdisk文件下載到板子上,起動系統,使用命令 cat /proc/mtd 可以看到

dev: size erasesize name

mtd0: 00040000 00020000 "Partition 1"

mtd1: 0ffc0000 00020000 "Partition 2"

mtd2: 00420000 00000210 "spi0.0-AT45DB321x"

這裡mtd0,mtd1是nandflash上的分區; mtd2是dataflsh上的分區,該分區上放有u-boot,uImage.img,ramdisk.img,我們這裡可以使用空的nandflash上的兩個分區.使用之前要先用工具flash_erase或者flash_eraseall擦除nandflash,具體使用的步驟如下:

# flash_erase /dev/mtd1

製作jffs2映像

# cd /var/tmp

# mkdir jffs2 (jffs2下的目錄可以任意建)

# mkfs.jffs2 –d jffs2/ -o jffs2.img

# cp /var/tmp/jffs2/jffs2.img /dev/mtdblock1

# mount -t jffs2 /dev/mtdblock1 /mnt/mtd即可,使用結束可使用$ umount /mnt/mtd 卸載.

如果只是當作普通的jffs2 來使用dataflash或者nandflash,可不必製作 jffs2映像,只需要一步,# mount -t jffs2 /dev/mtdblock1 /mnt/mtd即可.


[火星人 ] 嵌入應用:如何製作和使用Jffs2文件系統已經有1078次圍觀

http://coctec.com/docs/linux/show-post-56593.html