嵌入式Linux下的Nand文件系统
上一篇 / 下一篇 2007-10-11 04:37:55 / 个人分类:linux
Linux下的FLASH文件系统
Mic (mic.lupaworld.com)
z P _.Tj4Q0
+ZL4lbj'F]0
4[9grz VzsO7V0
内容目录LUPA开源社区)S1g3Aq4K2Tqy4Q
Linux下的FLASH文件系统 1LUPA开源社区 ypN"`8NpK3N9V1\
Z"V2U6}TqY-_+bz0FLASH 2LUPA开源社区'k.?pCb`@7y
JFFS & JFFS2 3
L!Vs+japc0YAFFS1 & YAFFS2 4LUPA开源社区s{ A8_7`rP(Z
LUPA开源社区5f1NEL"O/?
LUPA开源社区V,Fs8?
\c
LUPA开源社区LKKCk8y
@5cmd
va0前言LUPA开源社区.|C6JG)yO@${Z
Nand存储设备在嵌入式设备中使用比较普遍.通常我们使用的手机,PDA,GPS,忧盘等等设备中都用到了.随着技术的发展,Nand存储芯片的容量也在越来越大,其功耗,寿命等性能参数也在提升.
1Vu
S7~dG0X[8i:G;m
m0
熟悉linux嵌入式开发的人肯定很熟悉这几个名词:
JFFS,JFFS2,YAFFS,YAFFS2,CRAMFS. 这些都是专门为NAND设计的文件系统--除了CRAMFS.
CRAMFS其实只是一种文件的打包方式.
我们常常把rootfs打包成cramfs的格式(mkcramfs),然后将这个打包好的image文件烧写在nand.LUPA开源社区 COB,Du3`Noj
本文将介绍下各个文件系统的优缺点,最后将介绍UBI-Unsorted
BLOCK Images,一个新的文件系统,专门为NAND设计.
9s
C9bsNTa0LUPA开源社区9t3Zj&@1e c
LUPA开源社区}.O(wK{L2B"lQ
LUPA开源社区jv3Zii0dU%S%~
FLASH
LUPA开源社区^*Xe{&?}#PN_
Flash存储设备有高稳定性,可靠性,以及高存储密度,低成本的优点,所以被广泛得应用在嵌入式设备中.Flash其是EEPROM的一种,分为Nor
Flash和NAND flash. Nor
Flash先出现,它可以直接访问(传统的接口方式,有地址和数据总线分开),主要用在存储少量的程序代码;Nand后出现,其接口方式和Nor不同,它是通过一种命令接口访问的,主要用在存储大量的数据,而且价格更便宜,所以很多系统把代码也存储在Nand中,系统起来之后把这些代码数据拷贝到内存中运行.举例samsung
的s3c24xx系列应用处理器都具备上电之后自动从NAND中将NAND中的程序数据拷贝到RAM中的功能.
FLASH中数据成块存储.这些块中的数据都不能单独修改,也就是说写操作是成块进行的.
比如,我们想修改某一个字节,必需先读取该字节所在块的内容,然后修改该字节,再擦除改块,然后写入修改过的块内容.
有一个问题值得注意,块的会随着擦写损耗,最终沦为坏块.LUPA开源社区p8S2\:m'Ml
NOR FLASH的存储容量一般从64KBytes
到16MBytes(参考了网络上的数据);NAND
更大,而且技术不断提升,已经出现了G级的NANDFLASH,似乎有代替硬盘的趋势.
M#CqQiF|L0LUPA开源社区:Z9K6E%u7O*Wk+_
下表仅供参考LUPA开源社区l$uGU.i!Uj|6O
v%L$KxzJ0NOR-NAND comparison LUPA开源社区 H!R)s-F&_8k
|
参数 IA3Y[C{0 |
NORLUPA开源社区E$ni6r3t2ko |
NAND v+Rfy8F0 |
|---|---|---|
|
LUPA开源社区lu~+jg~[Pt~ 容量LUPA开源社区 T so,E|0qdBT;s |
LUPA开源社区(\)z)H5lh/t 1 to 16 Mbytes 0sY(hai0 |
LUPA开源社区|9f6u6j|8oO 8 to 128 MbytesLUPA开源社区$W hbSsk AJ |
|
P~J7K*sz?xT6l3F0XIP (code execution)LUPA开源社区!SAe INi |
suI c+r5\0YesLUPA开源社区n0B ?G Ws |
LUPA开源社区[g;FE!T^7d%GX{Bn NoLUPA开源社区6B;N/B!X@j#R |
|
LUPA开源社区f;iam3] 性能 Erase |
t4q&kd&xA7`Wk0Very Slow
(5 s) |
LUPA开源社区n0J
y`1f#P \4y Fast (3
ms) |
|
)V|H F]3kf t"t0StrengthsLUPA开源社区7^pxL;_&Fe6Q"C |
6`J:~"kvX]/b0Addressable to every byte |