EEPROM,虽然也叫“非易失性数据存储器”,但它不能直接参与ALU运算,只是用于掉电不丢失的数据存储。
EEPROM和片内RAM 类似,也属于数据存储器,它的特点是数据掉电可保持,而程序存储器一般指ROM,用于存储用户程序代码。
EEPROM和FLASH基本都是非易失性存储器。EEPROM应属于数据存储器,但是它制造工艺和FLASH更近似。
FLASH是用于存储程序代码的,有些场合也可能用它来保存数据,当然前提是该单片机的FLASH工艺是可以自写的(运行中可擦写),但要注意FLASH的擦写次数通常小于一万次,而且通常FLASH只能按块擦除。EEPROM不能用来存程序,通常单片机的指令寻址不能到这个区域。EEPROM的擦写次数应有百万次,而且可以按字节擦写。
EEPROM在一个PAGE内是可以任意写的,FLSAH则必须先擦除成BLANK,然后再写入,而一般没有单字节擦除的功能,至少一个扇区擦除。
FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。
目前Flash主要有两种NOR Flash和NADN Flash。NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。
一般小容量的用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息,而大容量的用NAND FLASH,最常见的NAND FLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的"闪盘",可以在线擦除。目前市面上的FLASH 主要来自Intel,AMD,Fujitsu和Mxic,而生产NAND Flash的主要厂家有Samsung和Toshiba及Hynix。
FLASH ROM就是 ROM(只读存储器)和RAM(可读写的存储器)相对应。全称是read-only memory 最初的ROM熔丝类型的,只能烧写一次,之后就不能修改了。
后来出现了可以用紫外线擦除,然后再次烧写的ROM,严格来讲已经不是只读的了。这种ROM叫做 EPROM(erasable programmable read-only memory)表示可擦除的ROM
但是紫外线擦除很麻烦,后来又发明了不用紫外线,只用电就能擦除的ROM。这种ROM就叫做 EEPROM ,全称就是 electrically erasable programmable read-only memory,电可擦除并重新编程的只读存储器。EEPROM也写作E2PROM,简称E方
实际使用中,不同种类的ROM因为性能,价格等的不同,分别用于不同的场合。
比如经常说的U盘,用的一般是NAND FLASH,而单片机存放程序的ROM一般是NOR FLASH,因为后者具有可以不经RAM直接运行程序的特点。
所有这些ROM都属于非易失存储器,即在掉电之后,数据也不会消失。(类似硬盘)
在运行期间,程序ROM的内容一般不能被程序修改,所以单片机经常会配置EEPROM以便运行的数据可以得到存储,修改,并且掉电后仍然能够保持。
本质上讲,存储程序的ROM其实很多也是EEPROM(有些是EPROM,还有用熔丝ROM的),但是因为一般都不具备在运行时自我修改的能力,所以对应用来说,认为是只读的。而在运行时可修改的那些则特意叫做EEPROM。
现在随着技术发展,一次性的ROM越来越少,逐渐向EEPROM转变,但是习惯上,仍然把他们叫做ROM而不特意说明是EEPROM。
Atmel公司已经开发可以动态修改属性的ROM,本身是EEPROM,但是可以通过设置将其中一部分设置为真正只读的ROM。这种设置并不能带来性能上的提高,反而还会增加器件的复杂度,但是这样可以有效地防止本不应该被修改的内容改变,还是有很重要的作用的。