🟦 u5-03 存储体系:Flash、SRAM 与 ART 加速
🟦 STM32U575 数据手册初学者精讲 · 第 3 / 10 章
🗨️ U575 最高提供 2 MB Flash 和 786 KB SRAM,并且通过 ICACHE/DCACHE 大幅提升 Flash 取指和数据访问效率。
这一章在干嘛? 搞懂 Flash 和 SRAM 怎么分区、怎么保护,以及 ART 加速器如何让你的代码跑得更快。
Flash:程序的家,也是配置的保险柜
STM32U575 的 Flash 最高 2 MB,用来存:
Flash 的保护机制非常重要:
| 保护 | 作用 | 初学者须知 |
| 读保护 RDP | 防止 JTAG/SWD 读出代码 | 设高了调试器就挂,调试时通常 RDP Level 0 |
| 写保护 | 防止 Flash 被意外改写 | 一般按页/组保护 |
| Secure 区域 | 仅安全世界可访问 | TrustZone 场景下用 |
| Hide 保护 HDP | 隐藏区域,调试时也不可见 | 高安全场景用 |
RDP Level 1 时调试器读不出 Flash;Level 2 时 JTAG/SWD 永久关闭(不可逆)。调试阶段务必保持 Level 0,量产时再根据安全需求调整。
SRAM:运行时数据与栈的所在地
U575 把 SRAM 分成多段:
| 区域 | 典型大小 | 特点 |
| SRAM1 | 192 KB | AHB 主总线访问,通用 |
| SRAM2 | 64 KB | 可用于低功耗模式保持 |
| SRAM3 | 512 KB | 大容量,适合帧缓冲、算法中间数据 |
| SRAM4 | 16 KB | 在低功耗域,Stop 模式下可保持 |
| BKPSRAM | 2 KB + 128 个备份寄存器 | VBAT 供电时保持 |
做 LCD/OLED 屏缓冲、算法大数组时,优先把数据放到 SRAM3(512 KB),它够大。
ICACHE 与 DCACHE:让慢 Flash 也能喂饱快 CPU
U575 内置:
- ICACHE:8 KB,缓存 CPU 取指令。
- DCACHE1:4 KB,缓存 AHB 数据访问。
为什么需要它们?因为 CPU 跑在 160 MHz,而 Flash 读速度跟不上这么高的主频。没有缓存时,CPU 经常要等待 Flash;有了缓存,常用代码和数据就在缓存里,执行效率大幅提升。
对初学者的影响:
- 默认 CubeMX 会帮你开启 ICACHE,不用手动操心。
- 如果使用 DMA 访问 SRAM/外设,注意 DCACHE 一致性:CPU 和 DMA 看到的数据可能不一致,需要手动 clean/invalidate。
DMA + DCACHE 是很多新手踩坑的地方。如果 DMA 读到的数据老是不对,先检查 DCACHE 有没有 invalidate。
OTP 与选项字节
- OTP(One-time programmable):一次性编程区域,适合写设备的唯一序列号、校准值。
- 选项字节(Option Bytes):控制 RDP、BOR、看门狗、用户字节等,掉电保持。
修改选项字节会触发一次系统复位,这是正常现象。
🧠 小测验U575 的 SRAM 大致分为哪几块?
SRAM1(192K)、SRAM2(64K)、SRAM3(512K)、SRAM4(16K)、BKPSRAM(2K)。
RDP Level 2 有什么风险?
JTAG/SWD 永久关闭,无法再次调试,不可逆。
ICACHE 主要解决什么问题?
让 Flash 取指速度能跟上 160 MHz 的 CPU,减少等待周期。