存储器分为两大类:ram(内存:随机存储器)和rom(外存:程序存储器),分别存数据和程序。程序员
ram就不讲了,今天主要讨论rom。 编程
(1)rom最初不能编程,出厂什么内容就永远什么内容,不灵活。spa
(2)后来出现了prom,能够本身写入一次,要是写错了,只能换一片,自认倒霉。.net
(3)人类文明不断进步,终于出现了可屡次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序以后发现有个地方须要加一句话,为此你要把单片机放紫外灯下照半小时,而后才能再下一次,这么折腾一天也改不了几回。blog
(4)历史的车轮不断前进,伟大的EEPROM出现了,拯救了一大批程序员,终于能够随意的修改rom中的内容了。内存
(ROM--PROM--EPROM--EEPROM的进化!)flash
EEPROM的全称是“电可擦除可编程只读存储器(不要以为多高大上,其实常常都会用到),即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来说的。可是今天已经存在多种EEPROM的变种,变成了一类存储器的统称。it
flash属于广义的EEPROM,由于它也是电擦除的rom。可是为了区别于通常的按字节为单位的擦写的EEPROM,咱们都叫它flash。狭义的EEPROM:这种rom的特色是能够随机访问和修改任何一个字节,能够往每一个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,能够保存100年,能够擦写100w次。具备较高的可靠性,可是电路复杂/成本也高。所以目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。class
flash作的改进就是擦除时再也不以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,下降了成本。上M的rom通常都是flash。软件
flash分为nor flash和nand flash。nor flash数据线和地址线分开,能够实现ram同样的随机寻址功能,能够读取任何一个字节。可是擦除仍要按块来擦。
nand flash一样是按块擦除,可是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取。(nandflash按块来擦除,按页来读,norflash没有页)
因为nandflash引脚上复用,所以读取速度比nor flash慢一点,可是擦除和写入速度比nor flash快不少。nand flash内部电路更简单,所以数据密度大,体积小,成本也低。所以大容量的flash都是nand型的。小容量的2~12M的flash可能是nor型的。
使用寿命上,nand flash的擦除次数是nor的数倍。并且nand flash能够标记坏块,从而使软件跳过坏块。nor flash 一旦损坏便没法再用。
由于nor flash能够进行字节寻址,因此程序能够在nor flash中运行。嵌入式系统多用一个小容量的nor flash存储引导代码,用一个大容量的nand flash存放文件系统和内核。
参考博文:http://blog.csdn.net/yuanlulu/article/details/6163106