JFFS2介绍
JFFS2全名是Journalling Flash File System Version2,是Redhat公司开发的Flashmemory的文件系统,其前身是JFFS,最早只支持NOR Flash,自2.6版以后开始支持NANDFlash,极适合使用于嵌入式系统。JFFS2功能如下:
- 支持NAND flash设备;
- 硬连结(Hard links),这是JFFS碍于文件格式所无法支持的功能;
- 压缩,三种算法: zlib, rubin以及rtime;
- 更佳的性能。
缺点
- JFFS2在挂载(mount)时会扫描整个flash所有的数据,再将文件系统目录存储在system memory,会线性倍数成长,消耗很多时间;
- JFFS2没有write-back机制,不能将数据暂存于cache,以致于flash I/O的动作频繁;
- JFFS2设计机制过于复杂,代码不易阅读。
文件配置
Cramfs制作完成以后继续制作jffs2文件系统,关于mkfs.jffs2工具的生成可以参考网上的其他文章,本文用的官方提供的mkfs.jffs2。
- 第一步必然是配置内核并且记得不要关闭ECC校验否则内核源码中nand分区将变成一个:
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 File systems ---> Miscellaneous filesystems ---> <*>Journalling Flash File System v2 (JFFS2) support [*]JFFS2 write-buffering support [*]Advanced compression options for JFFS2 [*]JFFS2 ZLIB compression support [*]JFFS2 RTIME compression support [*] JFFS2 RUBIN compression support
- 第二步:生成jffs2文件系统,使用生成好的cramfs文件系统就可以。因为本文已经把mkfs.jffs2拷贝到/bin、/sbin文件夹所以直接mkfs.jffs2就可以了:
[root@localhost]#mkfs.jffs2 -r /rootfs -o rootfs.jffs2 -e 0x20000 -s 0x800 --pad=0xf00000 -n –l -e指的是擦除块的大小,因为原先制作了cramfs所以直接:cat /proc/mtd就可以查到: dev: size erasesize name mtd0: 00f00000 00020000 "root" --pad=0xf00000我指定的是15M,这是系统分区的大小。 -n针对Nand Flash不需要在每个擦除块的开始写入CLEANMARKER 节点。 -l指定小端模式 -s指定分页大小,我的是2048也就是0x800
制作完成以后就可以烧录到板子上启动并进行操作。
转载请注明:雪后西塘 » JFFS2文件系统制作