嵌入式存储器分类详解 RAM、ROM、Flash到底有什么区别

ROM(read only memery)只读存储器

ROM只能读取事先所存数据,数据存储后无法改变或删除,断电后数据不会丢失。

随着技术发展,出现了紫外线擦写,电擦写(EEPROM),和快闪存储器(Flash Memory,简称Flash)。

在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、”const”限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。

RAM (Random Access Memory)随机访问存储器

存储单元的内容可按照需要随机取出或存入,且存取的速度与存储单元的位置无关。这种存储器在断电时,将丢失存储数据。

它主要用来存储程序中用到的变量(需要改变的数据)。凡是整个程序中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在RAM中。

FLASH

Flash 存储器(FLASH EEPROM)又称闪存,快闪。

它是EEPROM的一种。它结合了ROM和RAM的长处。不仅具备电子可擦除可编辑(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据。它与EEPROM的最大区别是,FLASH按扇区(block)操作,而EEPROM按照字节操作。FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因此适合用于做程序存储器。

核心差异对比

深度解析与选型逻辑

RAM:系统的“临时工作台”‌

‌原理‌:依靠电容或触发器存储电荷,必须持续供电刷新,否则数据消失。

‌细分‌:‌SRAM‌速度快、无需刷新,常用于CPU缓存或高速缓冲;‌DRAM‌密度高、成本低,需刷新电路,常用于大容量主存。

‌局限‌:掉电即失,因此所有需要长期保存的数据必须定期备份到非易失性存储器中。‌‌

‌ROM:系统的“基因库”‌

‌演变‌:早期ROM(如Mask ROM)工厂写入后不可改;现代嵌入式中,“ROM”常作为非易失性存储的统称,实际多由Flash或EEPROM实现。

‌特点‌:传统意义下只能读,或擦写次数极少(如EEPROM约10万次),适合存储校准参数、序列号等极少变动的数据。

‌注意‌:手机宣传的“128GB ROM”实为Flash存储,并非传统ROM。‌‌

Flash:ROM的现代主流实现‌

‌地位‌:目前嵌入式系统存储代码和数据的主力,兼具非易失性和可擦写性。

‌两大流派‌:

‌NOR Flash‌:

支持‌XIP‌(片上执行),CPU可直接从Flash运行代码,读取快但写入慢、容量小、成本高,常用于存Bootloader或小系统代码。

‌NAND Flash‌:

按页读写、按块擦除,密度极高、成本低,但无法直接执行代码,需加载到RAM中运行,常用于大容量存储(如eMMC、SD卡)。

‌局限‌:写入前必须先擦除(块操作),且有擦写寿命限制(通常1千-10万次),需配合FTL算法管理。‌‌

嵌入式内存布局实际运用

在MCU开发中,三者分工明确:

‌代码段 (.text)‌ & ‌常量 (.rodata)‌ → 存放在 ‌Flash‌(掉电不丢)。

‌全局变量初始值‌ → 初始存在 ‌Flash‌,上电后拷贝至 ‌RAM‌。

‌运行时变量、堆、栈‌ → 存放在 ‌RAM‌(高速读写,掉电清空)。‌‌

‌一句话总结‌

CPU干活用‌RAM‌,开机引导用‌ROM/Flash‌,存程序和大文件用‌Flash‌。


请使用浏览器的分享功能分享到微信等