[Linux驱动开发] jffs2 文件系统制作及移植

来源:互联网 发布:手机版服装批发软件 编辑:程序博客网 时间:2024/06/05 03:19
制作jffs2根文件系统及烧录
1、 准备mkfs.jff2制作工具

  下载zlib-1.2.3.tar.bz2解压缩到主机生成zlib-1.2.3目录

    $ cd zlib-1.2.3

    ./configure

    $make

    $sudo make install

  下载 mtd-snapshot-20050519.tar.bz2 解压缩 $ cd mtd/util

  $make 

  $sudo make install
这样在你的PC机上就有了mkfs.jffs2的工具,它只是一个制作jffs2文件系统镜像的工具而不能格式化成相应的jffs2文件系统,区别mkfs.ext2.

2、 生成JFFS2 根文件系统

  $ mkfs.jffs2 -r /opt/rootfs -o rootfs.jffs2 -e 0x20000 --pad=0x800000  

  $cp rootfs.jffs2 /tftpboot/

3、 设置启动参数

 启动开发板,设置

  OpenJTAG> setenv bootargs console=ttySAC0,115200 root=1f02 rootfstype=jffs2  rw init=/linuxrc mem=64M

  OpenJTAG> save

  OpenJTAG> nand erase 260000 800000

  OpenJTAG> tftp 30800000 rootfs.jffs2

  OpenJTAG> nand 30800000 260000 800000

此处boot后会发现有如下错误:

可知,一定是我们的1f02出问题了,那么我们的1f02会出什么问题呢?

此处的1f02表示Nand Flash上的存放rootfs的存储区域,和前一篇博文中用来存放rootfs.cramfs是一样的。那么会出什么问题呢?

很自然我们想到要来比较一下是否是存放在此存储区域上的内容出了问题。

经过比较我们发现rootfs.cramfs和rootfs.jffs2文件的大小差别很大,且rootfs.jffs2大小已经超过了我们分配给1f02的大小,那么我们怀疑可能是因为1f02存储区域过小在烧录时有溢出的问题发生

那么我们就来尝试修改分配给1f02的内存大小,在内核中:

terry@terry-virtual-machine:/home/linux-2.6.22.6$ vi arch/arm/plat-s3c24xx/common-smdk.c

修改Nand Flash中1f02的大小

      鉴于,rootfs.jff2的大小超过8M,此处我们将1f02的大小更改为10M,即0xa00000

      

      重新设置

 启动开发板,设置

  OpenJTAG> setenv bootargs console=ttySAC0,115200 root=1f02 rootfstype=jffs2  rw init=/linuxrc mem=64M

  OpenJTAG> save

  OpenJTAG> nand erase 260000 a00000

  OpenJTAG> tftp 30800000 rootfs.jffs2

  OpenJTAG> nand 30800000 260000 a00000

      

      所以,说明我们的分析是对的!

      .jffs2的文件特点是系统挂载慢,但是可读写

      这里我们尝试:mkdir terry,结果是OK微笑