如何制作和使用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 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工具不能使用。

最后将新生成的uImageramdisk文件下载到板子上,起动系统,使用命令 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上的分区; mtd2dataflsh上的分区,该分区上放有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 即可
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PetaLinux是一个基于嵌入式Linux的开发工具链,用于构建嵌入式系统。它提供了许多可定制的组件和功能,其中包括对JFFS2文件系统的支持。 JFFS2(Journaling Flash File System 2)是一种针对闪存存储设备设计的文件系统。它具有很好的压缩率和高度可靠性,适用于嵌入式系统。在嵌入式系统中,闪存是一种常见的存储设备,它通常具有较小的存储容量和有限的周期寿命。因此,选择合适的文件系统对于确保系统的可靠性和性能至关重要。 使用PetaLinux时选择使用JFFS2文件系统有几个优点。首先,JFFS2具有较好的压缩率,可以节省存储空间。这在嵌入式系统中特别重要,因为闪存的容量通常有限。其次,JFFS2采用了日志技术,可以确保数据的完整性和一致性。它可以通过将修改的数据写入日志中,然后再写入闪存中来提供数据持久性。这有助于防止数据损坏和错误。 另外,PetaLinux提供了对JFFS2文件系统的内建支持和集成工具。这些工具使得在构建嵌入式系统时轻松地添加和配置JFFS2文件系统成为可能。开发人员可以使用PetaLinux提供的命令和选项设置文件系统的参数和属性,以满足特定的需求。 综上所述,使用PetaLinux来构建嵌入式系统并选择JFFS2文件系统能够提供较好的存储空间利用率和数据的可靠性。这使得嵌入式系统在具有有限存储容量和闪存设备的情况下,能够更好地运行和维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值