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。