如何制作和使用Jffs2文件系统
首先配置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...全部
首先配置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 卸载。
收起