存储器大致分为两大类:RAM 和 ROM。RAM 这里先不展开,我们主要看 ROM。
ROM 最初不能编程,出厂时是什么内容就永远是什么内容,非常不灵活。关于 RAM 与 ROM 的基础对比,可以参考这篇《单片机中的RAM vs ROM》。
后来出现了 PROM,可以自己写入一次。要是写错了,只能换一片,自认倒霉。
人类文明不断进步,终于出现了可多次擦除写入的 EPROM。但每次擦除都要把芯片拿到紫外线下照一会儿。试想一下:你往单片机里下了一个程序,发现某个地方需要加一句话,就得把单片机放到紫外灯下照半小时,然后才能再烧一次。这么折腾,一天也改不了几次。
历史的车轮继续前进,伟大的 EEPROM 出现了,拯救了一大批程序员。终于可以比较随意地修改 ROM 中的内容了。
EEPROM 的全称是“电可擦除可编程只读存储器”,英文为 Electrically Erasable Programmable Read-Only Memory。它是相对于紫外擦除的 ROM 来说的。不过到今天,EEPROM 已经出现了多种变种,成了一类存储器的统称。
狭义的 EEPROM
狭义 EEPROM 的特点是:可以随机访问和修改任意一个字节,也能往每个 bit 写入 0 或 1。这是最传统的一种 EEPROM,掉电后数据不丢失,通常可以保存 100 年,擦写约 100 万次。它的可靠性较高,但电路复杂、成本也高。因此目前这类 EEPROM 容量多在几十 KB 到几百 KB,极少有超过 512 KB 的。
例如我们常见的 24C02:

广义的 EEPROM
Flash 属于广义的 EEPROM,因为它同样是电擦除的 ROM。不过为了和按字节擦写的一般 EEPROM 区分,我们通常直接叫它 Flash。
Flash 的改进在于:擦除时不再以字节为单位,而是以块为单位。这样一次简化了电路,数据密度更高,成本也更低。上兆字节的 ROM 一般都是 Flash,比如 W25Q128JVSIQ:

Flash 又分为 NOR Flash 和 NAND Flash。
NOR Flash
NOR Flash 的数据线和地址线分开,可以实现类似 RAM 的随机寻址,能读取任意一个字节。但擦除时仍要按块进行。典型型号依然是 W25Q128JVSIQ。
NAND Flash
NAND Flash 同样按块擦除,但数据线和地址线复用,不能利用地址线随机寻址。读取时只能按页进行——也就是说,NAND Flash 按块擦除、按页读,而 NOR Flash 没有页的概念。例如 W29N01HVSINA:

由于 NAND Flash 引脚复用,其读取速度比 NOR Flash 慢一些,但擦除和写入速度却快很多。NAND Flash 内部电路更简单,所以数据密度大、体积小、成本低。大容量 Flash 基本都是 NAND 型,而 2~12 MB 这类小容量 Flash 多是 NOR 型。
寿命方面,NOR Flash 的擦除次数通常是 NAND 的数倍。而 NAND Flash 可以标记坏块,让软件跳过坏块继续使用;NOR Flash 一旦损坏,基本上就无法再用了。
由于 NOR Flash 支持字节寻址,所以程序可以直接在 NOR Flash 中运行。嵌入式系统通常用一片小容量 NOR Flash 存储引导代码,再用一片大容量 NAND Flash 存放文件系统和内核。
|