Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1371292
  • 博文数量: 244
  • 博客积分: 10311
  • 博客等级: 上将
  • 技术积分: 3341
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-14 21:50
文章分类

全部博文(244)

文章存档

2013年(6)

2012年(5)

2011年(16)

2010年(11)

2009年(172)

2008年(34)

分类: LINUX

2009-06-08 21:52:15

本文主要介绍怎么在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,mtd1nandflash上的分区; mtd2是dataflsh上的分区,该分区上放有uboot,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即可
  • 阅读(1227) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~