38.RAM-ROM-Flash.md 5.7 KB

RAM / ROM / Flash

判别规则(核心,唯一要记的)

  1. 看掉电要不要还在:要 → Flash/ROM;只是运行临时数据 → RAM(掉电丢)
  2. 看读写性质:变量/堆栈/反复改 → RAM(快、随便写);代码/常量/掉电保存 → Flash(慢、有寿命)
  3. Flash = "能写的 ROM":可编程但要先擦整块、写慢、寿命约 10 万次——运行高频数据不放它

一句话:"掉电要留的放 Flash,运行反复改的放 RAM;Flash 能写但有块擦、寿命、速度三道坎。"

抽象描述(一句话本质)

数据放哪个存储器,就看三件事:掉电后要不要还在(易失性)、读写快不快(速度)、要不要反复改(可写性)。

三个存储器对比(一张表)

RAM(SRAM) Flash ROM
掉电 (易失) 保持(非易失) 保持(出厂写死)
速度 最快 慢(比 RAM 慢很多) 只读
可写 随便写,无次数限制 能写,但先擦整块、寿命约 10 万次 不能写
用途 变量、堆栈、运行数据 程序代码、常量、掉电保存的数据 固定固件(基本被 Flash 取代)

程序各段放哪(背这张)

内容 存哪
代码段 程序指令 Flash(掉电保持,上电直接执行)
常量(const) 只读数据 Flash
RW-data 已初始化为非 0 的全局/静态变量 初值存在 Flash,上电拷贝到 RAM 运行
ZI-data 未初始化/初始化为 0 的全局 直接放 RAM(默认 0,不用存初值)

RAM 占用 = RW-data + ZI-data + 堆 + 栈

为什么要"初值在 Flash、运行在 RAM"

  • 变量的当前值必须在 RAM(掉电丢是正常的,运行时要反复改、要快)
  • 但非 0 的初值得放 Flash 里存着,每次上电拷回 RAM 恢复——不然掉电后初值就没了
  • ZI-data 初值本来就是 0,上电清零即可,不用在 Flash 占地方

正反例(建立直觉)

  • 正例1:程序代码 → Flash(掉电保持,上电直接执行)
  • 正例2:全局变量、堆栈、缓冲 → RAM(运行反复改、要快)
  • 正例3:设备参数(音量、校准值)要掉电保存 → Flash(或 EEPROM)
  • 反例1:把高频更新的缓冲放 Flash → 错,写慢 + 先擦整块 + 寿命有限(每秒写一次很快磨坏)
  • 反例2:把程序代码放 RAM → 错,掉电就丢,且浪费
  • 反例3:以为 RAM 掉电还在 → 错,RAM 易失

易混对比

RAM vs Flash(最常见考题)

RAM Flash
掉电 保持
速度
写入 随便写 先擦整块、有寿命上限
典型放啥 变量/堆栈 代码/常量/参数

RW-data 初值 vs 运行时值

在哪
初值(非 0) Flash
运行时当前值 RAM
初值 0 / 未初始化 只放 RAM(ZI-data)

变体验证(3 题,全过=学会)

  1. 音量设置要重启还在 → Flash;但每秒改一次就不行(Flash 寿命 ~10 万次,高频写磨坏)
  2. 陷阱题:"全局变量初值存放在 RAM" → 。非 0 初值存 Flash(RW-data)上电拷到 RAM;初值 0 直接 RAM(ZI-data)
  3. 陷阱题:4KB 缓冲每秒更新 → 放 Flash 不行(写慢 + 先擦整块 + 寿命上限),放 RAM

口述要点(面试怎么讲)

  • 结论先行:掉电要留 → Flash;运行反复改 → RAM
  • 为什么代码必须放 Flash/ROM:掉电要保留,上电要能直接执行;RAM 掉电就丢
  • 为什么 Flash 不能当 RAM 用:写前先擦整块、写慢、寿命约 10 万次;RAM 无限制
  • 为什么 RW-data 初值在 Flash、运行在 RAM:当前值放 RAM(要快、反复改),非 0 初值放 Flash 存着每次上电恢复;ZI-data 默认 0 不用存
  • 易错点:以为全局变量全在 RAM(初值在 Flash);把高频写的数据放 Flash;以为 RAM 掉电还在

关系网络

相邻概念 关系 孤立理解会犯的错
程序分段 RW-data/ZI-data/代码段就是"放哪"的答案 以为所有数据都在 RAM
堆 vs 栈 都在 RAM,是运行时动态区 把堆栈误以为要放 Flash
时钟树 Flash 读快慢影响 CPU 取指 → Flash 等待周期 高频时忘配 Flash 等待,取指跟不上
DMA 内存→内存搬运就是 Flash→SRAM 不知 DMA 常配在 RAM 区域
掉电/低功耗 低功耗模式里 SRAM 掉电丢失,BKP 用电池保 以为待机后数据还在

学习日期

2026-08-18


每主题一页,复习时只翻本目录。