常见存储器概念辨析:
RAM、SRAM、SDRAM、ROM、EPROM、EEPROM、Flash
存储器可以分为很多种类,其中根据掉电数据是否丢失可以分为RAM(随机存取存储器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失,而ROM掉电后数据不会丢失。
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。
而通常人们所说的SDRAM 是DRAM 的一种,它是同步动态存储器,利用一个单一的系统时钟同步所有的地址数据和控制信号。使用SDRAM不但能提高系统表现,还能简化设计、提供高速的数据传输。在嵌入式系统中经常使用。
NAND Flash和NOR Flash的比较
NAND则是高数据存储密度的理想解决方案,NOR一般只用来存储少量的代码;NOR主要应用在代码存储介质中。NOR的特点是应用简单、无需专门的接口电路、传输效率高,它是属于芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在(NOR型)flash闪存内运行,不必再把代码读到系统RAM中。在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NOR flash占据了容量为1~16MB闪存市场的大部分。NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。
性能比较:
● NOR的读速度比NAND稍快一些。
● NAND的写入速度比NOR快很多。
● NAND的4ms擦除速度远比NOR的5s快。
● 大多数写入操作需要先进行擦除操作。
● NAND的擦除单元更小,相应的擦除电路更少。
易于使用:
可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。
由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。
在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。
总结如下:
Nand Flash:适合大容量数据存储,类似硬盘;
Nor Flash:适合小容量的程序或数据存储,类似小硬盘;
SDRAM:主要用于程序执行时的程序存储、执行或计算,类似内存,主要应用于嵌入式系统中()。
SRAM :主要应用于计算机缓存;
DRAM :主要应用于计算机内存;
Nor Flash有自己的地址线和数据线,可以采用类似于memory的随机访问方式,在Nor Flash上可以直接运行程序,所以Nor Flash可以直接用来做boot,采用Nor Flash启动的时候会把地址映射到0x00上。
Nand Flash是IO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像Nor Flash、内存一样随机访问,不能EIP(片上运行),因此不能直接作为boot。
PS:为什么不能再NAND 上运行程序?
代码执行主要就是指令取值和数据存取, 对于指令存取和数据存取,CPU 直接将要预取的指令或者数据的地址发到系统总线上,对于ARM (就是AXBI) 总线, 这个地址会根据Soc之钱的地址编码送到不同的控制器,对于NAND Flash 根本就没有地址线,只有数据线。 NAND Flash 的读取是要靠软件代码经过 NAND Flash controller 发相关的命令和要地址等数据到NAND Flash芯片内部的控制器, 命令和地址都是经过数据线传送的。一般需要多个周期, 由于需要数据读写,需要软件介入,所以说他不是XIP 的。XIP 从某种意义上说是 CPU 送出的地址能否不经过任何软件直接能够寻址到相关的存储单元。所以Nor Flash/SRAM/SDRAM 都是XIP 的,而Nand Flash 等就不是XIP 了。