FLASH ROM与EEPROM 区别

本文详细阐述了FLASH与EEPROM这两种非易失性存储器之间的区别。FLASH适用于存储程序代码,部分类型支持运行中擦写;而EEPROM主要用于存储少量需要频繁修改的数据,支持字节级擦写,擦写次数更多。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FLASH ROMEEPROM  区别

EEPROM,虽然也叫非易失性数据存储器,但它不能直接参与ALU运算,只是用于掉电不丢失的数据存储。

EEPROM和片内RAM 类似,也属于数据存储器,它的特点是数据掉电可保持,而程序存储器一般指ROM,用于存储用户程序代码。

EEPROMFLASH基本都是非易失性存储器。EEPROM应属于数据存储器,但是它制造工艺和FLASH更近似。
FLASH是用于存储程序代码的,有些场合也可能用它来保存数据,当然前提是该单片机的FLASH工艺是可以自写的(运行中可擦写),但要注意FLASH的擦写次数通常小于一万次,而且通常FLASH只能按块擦除。
EEPROM
不能用来存程序,通常单片机的指令寻址不能到这个区域。EEPROM的擦写次数应有百万次,而且可以按字节擦写。

EEPROM在一个PAGE内是可以任意写的,
FLSAH
则必须先擦除成BLANK,然后再写入,而一般没有单字节擦除的功能,至少一个扇区擦除。

 

        FLASH存储器又称闪存,它结合了ROMRAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。

        目前Flash主要有两种NOR FlashNADN FlashNOR 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。这种设置并不能带来性能上的提高,反而还会增加器件的复杂度,但是这样可以有效地防止本不应该被修改的内容改变,还是有很重要的作用的

 

Arduino Uno 开发板的存储系统由三种主要类型的存储器组成:Flash、SRAM 和 EEPROM。每种存储器都有其独特的功能和应用场景,适用于不同的用途。 ### Flash 存储器 Flash 存储器的容量为 32KB,主要用于存储程序代码。其中,0.5KB 被保留用于储存引导程序(Bootloader),该程序负责通过串口下载新的程序到 Flash 中。剩余的 31.5KB 则供用户编写和存储应用程序使用。Flash 存储器具有非易失性,这意味着即使在断电后,程序仍然可以保留在其中。尽管从计算机的角度来看,32KB 的容量非常小,但在单片机领域,这一容量足以支持较为复杂的任务和功能[^1]。 ### SRAM 存储器 SRAM 的容量为 2KB,类似于计算机中的内存(RAM)。它被用来在 CPU 运算时临时存储数据和变量。 Flash 不同,SRAM 是易失性的,因此当 Arduino 断电或复位后,其中的数据会丢失。这种存储器通常用于处理实时数据和运行时变量,例如缓存传感器输入值或中间计算结果[^1]。 ### EEPROM 存储器 EEPROM 的全称为“电可擦写的可编程只读存储器”,其容量为 1KB。 Flash 和 SRAM 不同EEPROM 也属于非易失性存储器,但它的写入次数有限(约为 100,000 次)。由于这一特性,EEPROM 常用于存储需要长期保存且不频繁更改的数据,例如设备配置信息或校准参数。在 Arduino 编程中,可以通过专门的库函数(如 `EEPROM.h`)来操作 EEPROM,实现数据的持久化存储[^1]。 ### 使用场景对比 - **Flash**:适合存储程序代码和常量数据,例如固定的字符串表或查找表。 - **SRAM**:用于存储动态变化的数据,例如运行时的变量或缓冲区。 - **EEPROM**:适用于存储需要在断电后保留的小型数据,例如用户设置或历史记录。 以下是一个简单的示例,演示如何在 Arduino 中使用 EEPROM 来存储和读取数据: ```cpp #include <EEPROM.h> void setup() { // 初始化串口通信 Serial.begin(9600); // 写入数据到 EEPROM 地址 0 EEPROM.write(0, 42); // 将数值 42 存储到地址 0 // 从 EEPROM 地址 0 读取数据 int value = EEPROM.read(0); // 打印读取到的值 Serial.print("Value read from EEPROM: "); Serial.println(value); } void loop() { // 主循环无需执行任何操作 } ``` ### 总结 Arduino Uno 的 Flash、SRAM 和 EEPROM 各有特点,分别适用于不同的需求。Flash 用于存储程序代码,SRAM 用于临时数据处理,而 EEPROM 则用于持久化存储少量关键数据。理解这些存储器的特性和限制有助于优化程序设计并提高系统的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值