🟦 u5-06 启动与安全:Boot 模式与生命周期
🟦 STM32U575 数据手册初学者精讲 · 第 6 / 10 章
🗨️ U575 上电后从哪启动、TrustZone 开不开、代码能不能被读出来,这些问题由 Boot 模式、TZEN 和 RDP 生命周期共同决定。
这一章在干嘛? 学会看 Boot 配置、理解安全启动与 RDP 等级,避免调试时因为安全设置而锁死芯片。
Boot 模式:芯片上电后先去哪取指令
STM32U575 通过 BOOT0 引脚 和 BOOT1 选项位 决定启动来源:
| 启动来源 | 触发条件 | 用途 |
| 主 Flash | BOOT0=0(默认) | 正常运行用户程序 |
| 系统存储器 | BOOT0=1 | 运行 ST 出厂 bootloader,用于串口/I2C/SPI/USB 下载 |
| SRAM | 选项字节配置 | 调试或临时加载代码 |
日常开发中,BOOT0 通常接地,上电后直接从 Flash 跑你的程序。
TrustZone 启动:安全世界先跑
当 TZEN=1 时,芯片上电后先进入 安全世界,执行安全启动代码。安全代码完成初始化后,再跳转去非安全世界的用户程序。
对初学者的影响:
- 如果 TrustZone 开启,你的非安全工程必须和 HAL 的 "NonSecure" 版本配套。
- 调试时,安全世界默认不可见,调试器可能需要先解锁或配置 TZEN=0。
如果你的 CubeMX 工程默认开启了 TrustZone,但你并没有写安全世界代码,可能会发现程序进不了 main()。这时先把 TZEN 关掉,专注于非安全世界开发。
RDP:读保护等级
RDP 控制外部调试器能否读取 Flash 内容:
| 等级 | 功能 | 风险 |
| Level 0 | 无保护,可读可写 | 代码容易被抄 |
| Level 0.5 | 非安全 Flash 可读,安全 Flash 不可读 | TrustZone 场景用 |
| Level 1 | 不能读/写/擦除 Flash,可改回 Level 0 | 调试器读不出代码,但可以降级 |
| Level 2 | 永久关闭调试接口,不可降级 | 芯片彻底锁死调试 |
RDP Level 2 不可逆!调试阶段绝对不要设 Level 2,否则 JTAG/SWD 永不可用。
安全固件安装 SFI
SFI 允许你在生产线上把加密的固件烧进 Flash,芯片内部解密后运行。即使代工厂拿到你的固件文件,也无法反编译。
对初学者来说,SFI 属于进阶话题;知道有这个东西即可,量产高安全产品时再用。
生命周期与调试密码
U575 支持 RDP 密码 和 调试认证。即使 RDP Level 1 也可以配置一个密码,合法调试器输入密码后获得临时访问权限。
如果你做产品需要保护代码又不想锁死调试,可以考虑 RDP Level 1 + 调试密码,而不是直接 Level 2。
🧠 小测验默认情况下,BOOT0 接什么电平会从主 Flash 启动?
低电平(接地)。
TZEN=1 时 CPU 先进入哪个世界?
安全世界(Secure World)。
RDP Level 2 有什么后果?
JTAG/SWD 调试接口永久关闭,无法恢复。