Flash有两种分类:NOR Flash与NAND Flash。各自特点如下:
NOR Flash:接口同RAM,故是随机访问(存储在NOR Flash上的程序不需要拷贝到RAM,而是直接运行【就是XIP,全称execute inplace,就地执行】);由Intel于1988年发明,容量较小(1-32MB),较贵,速度快,常用于存储程序;读操作效率很高,写操作和擦除效率很低
NAND Flash:类似于电脑的硬盘;顺序访问;由日本东芝于1989年发明,容量较大(8MB-512MB),较便宜,速度慢,常用于保存系统运行时必需的操作系统、应用程序,数据,掉电后不丢失数据;擦出、读/写操作效率更高
为什么两个擦除速度差异大?
是这样的:Flash由擦除单元(或称块)组成,当要写时,必须先擦除对应单元。NOR Flash的单元大小范围是64KB-128KB,擦除一个块要4s;NAND Flash的单元大小范围8KB-64KB,擦除一个块仅需2ms。故如果一个文件只有1k,写入NOR Flash也不得不擦除64kb-128kb的块。
对比一下两者的可靠性:
Flash的可靠性体现在:位反转、坏块、可擦除次数。
NAND Flash出现位反转的概率高于NOR Flash,更容易出现错误
NAND Flash的可擦除次数是NOR Flash的10倍
NAND Flash上会有坏块随机分布
由于NAND Flash的块约是NOR Flash的1/8,故寿命远超过后者
在嵌入式Linux上的应用:
NAND Flash上常用yaffs文件系统(Yet Another Flash File System)
NOR Flash上常用jffs2文件系统(Journalling Flash File System Version 2)
参考文献:
《嵌入式Linux应用开发完全手册》 韦东山 人民邮电出版社 P125-126