原创 Linux攻略 如何制作和使用Jffs2文件系统

2008-10-30 13:33 2009 3 3 分类: MCU/ 嵌入式
本文主要介绍如何在AT91SAM9261EK板子上制作和使用jffs2文件系统,使用的是linux-2.6.21内核。

首先:配置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
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条