Flash的类型

Flash的类型主要分两种,nand flash和nor flash。

除了网上最流行的这个解释之外:

NAND和NOR的比较

再多说几句:

1.nor的成本相对高,具体读写数据时候,不容易出错。总体上,比较适合应用于存储少量的代码。

2.NAND flash相对成本低。使用中数据读写容易出错,所以一般都需要有对应的软件或者硬件的数据校验算法,统称为ECC。由于相对来说,容量大,价格便宜,因此适合用来存储大量的数据。其在嵌入式系统中的作用,相当于PC上的硬盘,用于存储大量数据。

所以,一个常见的应用组合就是,用小容量的Nor Flash存储启动代码,比如uboot,系统启动后,初始化对应的硬件,包括SDRAM等,然后将NAND Flash上的Linux 内核读取到内存中,做好该做的事情后,就跳转到SDRAM中去执行内核了,然后内核解压(如果是压缩内核的话,否则就直接运行了)后,开始运行,在Linux内核启动最后,去NAND Flash上,挂载根文件,比如jffs2,yaffs2等,挂载完成,运行初始化脚本,启动console交互,才运行你通过console和内核交互。至此完成整个系统启动过程。

而Nor Flash存放的是Uboot,NAND Flash存放的是Linux的内核镜像和根文件系统,以及余下的空间分成一个数据区。

Nor flash,有类似于dram之类的地址总线,因此可以直接和CPU相连,CPU可以直接通过地址总线对nor flash进行访问,而NAND flash没有这类的总线,只有IO接口,只能通过IO接口发送命令和地址,对NAND flash内部数据进行访问。相比之下,nor flash就像是并行访问,NAND flash就是串行访问,所以相对来说,前者的速度更快些。

但是由于物理制程/制造方面的原因,导致nor 和NAND在一些具体操作方面的特性不同:

表3 NAND Flash 和 Nor Flash的区别

1. 理论上是可以的,而且也是有人验证过可以的,只不过由于NAND flash的物理特性,不能完全保证所读取的数据/代码是正确的,实际上,很少这么用而已。因为,如果真是要用到NAND flash做XIP,那么除了读出速度慢之外,还要保证有数据的校验,以保证读出来的,将要执行的代码/数据,是正确的。否则,系统很容易就跑飞了。。。

2. 芯片内执行(XIP, eXecute In Place):

http://hi.baidu.com/serial_story/blog/item/adb20a2a3f8ffe3c5243c1df.html

【spare area/oob】

NAND由于最初硬件设计时候考虑到,额外的错误校验等需要空间,专门对应每个页,额外设计了叫做spare area空区域,在其他地方,比如jffs2文件系统中,也叫做oob(out of band)数据。

其具体用途,总结起来有:

1. 标记是否是坏快

2. 存储ECC数据

3. 存储一些和文件系统相关的数据,如jffs2就会用到这些空间存储一些特定信息,yaffs2文件系统,会在oob中,存放很多和自己文件系统相关的信息。

深圳雷龙发展有限公司从事NANDFLASH行业10+年.目前代理ATO Solution小容量SLC NAND,SPI NAND,MCP等。想了解更多请咨询扣二八伍二扒二陆扒六八;电话一三陆玖一玖八二一零柒

猜你喜欢

转载自blog.csdn.net/qq_42688853/article/details/81067007