首先从字面的理解:

ROM英文全名是Read only Memory只读存储器,非易失存储器,表示只能读,不能写,数据内容不能更新,掉电不丢失,用于存储运行时不需要改的程序,或者是用户设置的数据;

RAM:随机存储器(Random Access Memory)表示既可以从中读取数据,也可以写入数据,数据内容可能快速随意修改,掉电数据丢失; 用于存储处理器运行过程中的计算数据;

我们通常所说的内存就是指RAM, RAM又分为SRAM(Static RAM)和DRAM(Dynamic RAM),SRAM是读写速度非常快的存储设备,但价格昂贵,MCU的内存使用的是SRAM。DRAM比ROM速度快,但是比SRAM速度慢,价格低于SRAM,计算机内存使用的就是DRAM。

单片机中,ROM是指Flash,早期的单片机的flash只能单次烧写,也叫OTP, one-time program,现在大部分单片机的flash也可以擦写,但是只支持大概10万次的擦写。

在写数据时,数据位只能从1写到0,从0改到1需要整个sector或者block擦除,擦除速度还比较慢,以STM32F051为例,其有64K ROM也就是flash,有8K的RAM。

其FLASH支持按sector擦除或者block擦除,擦除一个sector大要耗时20ms,擦除一个block大概需要1s,在此期间,MCU会被挂起,不执行包括中断程序在内的所有程序;

FLASH写的速度也比较慢,大概1个byte的数据需要几us。

而RAM的读写都比较快。