一,JFFS2
JFFS:1999 Journalling Flash File System, Version 2:2001-9-23,Linux 2.4.10 主要用于NOR Flash,可用于NAND Flash 1. 特性: 掉电保护与损耗平衡 垃圾回收机制 CRC循环冗余校验机制 挂载时间与内存消耗跟文件系统的大小成正比:文件系统越大,越慢,消耗越多 ————> 很差的扩展性 挂载需要进行全盘扫描,挂载一个 16M 的闪存有时需要半分钟以上的时间 在实际应用中,JFFS2 最大能用在 128M 的闪存上二,YAFFS2
YAFFS:2002 Yet Another Flash File System, Version 2:2003 只能用于NAND Flash, YAFFS1支持512Bytes/Page的NAND Flash;YAFFS2支持2kBytes/Page的NAND Flash. 1.特性: 储存资料的基本单位是Chunk:Page 支持YAFFS/Direct使用:可以不需要VFS,甚至操作系统支持 ECC冗余校验机制 纠正单比特错误和检测双比特错误,而且计算速度很快,但对1比特以上的错误无法纠正,对2比特以上的错误不保证能检测。 更快的挂载速度,更少的内存使用 512B/page ————> 4KB RAM/1MB NAND 2KB/Page ————> 1KB RAM/1MB NAND JFFS与YAFFS都是日志结构文件系统(LFS),保障了数据的可靠性与安全性,可以恢复数据。 一般来说,对于小于64MB的NAND Flash,可以选用JFFS2;如果超过64MB,用YAFFS2比较合适
三,jffs2文件系统镜像制作
1、工具安装
sudo apt-get install mtd-utils 命令:mkfs.jffs22、镜像制作 信息收集: Flash的页大小、擦除块大小 mkfs.jffs2 [options] 主要选项: -p, --pad[=SIZE] 使用0xff填充文件系统到指定大小,不指定则只填充完最后一个擦除块 -r, -d, --root=DIR 使用指定的目录内容构建文件系统(default: cwd) -s, --pagesize=SIZE 使用指定的页大小(最大数据节点大小) (default: 4KiB) -e, --eraseblock=SIZE 指定擦除块的大小 (default: 64KiB) -c, --cleanmarker=SIZE 擦除标记的大小 (default 12) -m, --compr-mode=MODE 选择压缩模式(default: priortiry) -x, --disable-compressor=COMPRESSOR_NAME 禁用指定的压缩算法 -X, --enable-compressor=COMPRESSOR_NAME 启用指定的压缩算法 -y, --compressor-priority=PRIORITY:COMPRESSOR_NAME 设置压缩算法的优先级 -L, --list-compressors 列出可用的压缩算法 -t, --test-compression 测试压缩算法 -n, --no-cleanmarkers 不添加擦除标记到擦除块 -o, --output=FILE 指定文件系统镜像名称(default: stdout) -l, --little-endian 创建一个小端的文件系统 -b, --big-endian 创建一个大端的文件系统 -q, --squash 压缩权限和设置所有文件的拥有者为root -U, --squash-uids 设置所有文件的拥有者为root -P, --squash-perms 压缩所有文件的权限
四,yaffs2文件系统镜像制作
1、获取yaffs2源码
git clone git://www.aleph1.co.uk/yaffs2 从源码中编译制作工具: cd yaffs2/utils make error: unknown type name ‘u8’ error: unknown type name ‘u32’如果出现以上错误,修改yportenv.h文件,增加:#define CONFIG_YAFFS_DEFINES_TYPES 制作工具: mkyaffs2image: YAFFS2(2KB/page) mkyaffsimage: YAFFS(512B/page)2、镜像制作 mkyaffs2image dir image_file [convert]
以上所有文件系统只能烧录使用,不能在宿主机上进行挂载