Lession 13 Flash文件系统:jffs/jffs2和yaffs/yaffs2
在嵌入式系统中进行数据读写时,为了保证可靠性,我们可以选择哪些合适的文件系统?
一、Flash闪存类型
非易失存储器,可以对称为块的存储器单元块进行擦写和再编程
任何flash器件的写入操作只能在空或已擦除的单元内进行,在进行写入操作之前必须先执行擦除
1. NOR Flash: 非易失内存
应用:代码存储介质
特点:
芯片内执行(XIP, eXecute In Place)
低容量高成本: 1 - 16MB(常见)
读写速度:读取速度快,写入速度慢
块最大擦写次数:10W
2. NAND Flash:类似硬盘的块设备
应用:数据存储介质
特点:
极高的单元密度
读写速度:写入和擦除的速度很快
高容量低成本:16 - 1024MB(常见)
块最大擦写次数:100W
二、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比较合适