UM3234 用户手册是 STM32N6 系列 MCU Boot ROM 启动的核心开发指南,系统定义了从复位检测、启动源选择到安全验证的全流程机制,支持多存储介质、安全启动与生命周期管理,为工业控制、智能终端等低功耗高安全场景提供标准化启动解决方案。
资料获取:【用户手册】UM3234 如何在STM32N6 MCU上启动ROM
1. 核心定位与核心功能
Boot ROM 是 STM32N6 上电或复位后首先执行的固件,存储于片上 ROM 中,承担 “启动引导 + 安全校验” 双重核心职责:
- 基础功能:系统初始化(时钟、电源、缓存)、复位源检测、启动配置解析、FSBL(第一阶段引导程序)加载与跳转。
- 关键特性:支持多启动源、USB/USART 串口下载、安全启动验证、生命周期管控、防篡改与错误处理。
- 适配场景:兼容 CLOSED_UNLOCKED/LOCKED_UNPROVD/LOCKED_PROVD 多生命周期状态,满足开发、量产、运维全阶段需求。
2. 启动流程与支持启动源
2.1 核心启动流程
- 复位检测:识别 PIN/POR/BOR 等 7 类复位源,读取 RCC_HWRSR 寄存器并清除状态。
- 生命周期与配置解析:通过 OTP 熔丝确定设备生命周期,解析 BOOTSR 引脚与熔丝配置,选择启动模式。
- 启动源加载:从选定启动源读取 FSBL 到内部 RAM,执行安全验证。
- 跳转执行:验证通过后跳转至 FSBL 入口,失败则进入串口下载模式或阻塞流程。
2.2 支持启动源(含存储介质与串口接口)
- 存储介质启动:支持 sNOR flash、HyperFlash™、SD 卡(V6.0)、eMMC(V5.1),适配 XSPI、SDMMC 接口。
- 串口下载启动:兼容 USART1/2/UART4(115200 波特率)、USB 2.0 HS(DFU 1.1 协议),支持并行 polling 接口。
- 开发模式启动:CLOSED_UNLOCKED 生命周期下,通过 Boot1 引脚进入 Dev Boot 模式,开放调试权限。
3. 安全启动机制:信任链根基
Boot ROM 是 STM32N6 安全启动的第一环,构建从硬件到固件的完整信任链:
- 固件验证:支持 ECDSA 256/384 签名校验,通过公共密钥索引与哈希表验证 FSBL 完整性。
- 加密解密:可选 AES-128/256 CBC 解密 FSBL,支持 SAES(防 DPA 攻击)与 CRYP 硬件加速。
- 防回滚保护:通过 OTP 熔丝的单调计数器,限制 FSBL 版本低于当前记录时无法启动。
- 防篡改:支持 8 路外部篡改、11 路内部篡改检测,确认篡改后自动擦除密钥并进入死循环。
4. 关键接口与硬件配置
4.1 核心硬件接口配置
- 存储接口:XSPI(支持 sNOR/HyperFlash™)、SDMMC1/2(支持 SD/eMMC),含时钟、引脚复用配置。
- 串口接口:USART1/2/UART4(推挽高速模式,偶校验)、USB OTG HS(8 端点,480 Mbps)。
- 电源与时钟:支持 HSI(64 MHz)、PLL(最高 400 MHz),适配 nominal/default 双时钟场景,独立 I/O 电源域(VDDIO3/4/5)。
4.2 关键配置要点
- 缓存管理:指令缓存默认启用,数据缓存在安全启动时启用,跳转前清理无效数据。
- 内存布局:AXI SRAM2 划分为下载缓冲区、安全 / 非安全数据区,RISAF2 硬件隔离敏感数据。
- 定时器配置:TIMER2 用于超时与时间戳,基准频率 1 MHz。
5. 生命周期与 OTP 配置
5.1 三大生命周期状态
- CLOSED_UNLOCKED:开发阶段,安全启动非强制,支持 Dev Boot 与串口下载。
- CLOSED_LOCKED_UNPROVD:未完成密钥配置,仅支持 ST 官方 FSBL,安全启动强制启用。
- CLOSED_LOCKED_PROVD:已完成密钥配置,仅支持 OEM 自定义 FSBL,完全锁定调试。
5.2 OTP 熔丝核心配置
- 启动配置:通过 OTP_WORD11 指定启动源(如 XSPI NOR、eMMC),禁用特定串口 / USB 启动。
- 安全配置:OTP_WORD18 控制安全启动开关、加密优先级(速度 / 安全),OTP_WORD17 管理 OEM 密钥索引。
- 生命周期配置:通过 OTP_WORD124(DFT_disable)、OTP_WORD18(prov_done)切换生命周期状态。
6. 应用场景与开发注意事项
6.1 适配场景
- 工业控制:依赖多启动源与防篡改,适配 PLC、传感器网关。
- 智能终端:借助 USB/USART 下载与安全启动,满足消费电子安全需求。
- 低功耗设备:支持低功耗复位与时钟优化,适配电池供电场景。
6.2 开发关键注意事项
- 启动源优先级:熔丝配置优先级高于 Boot 引脚,需提前确认 OTP 启动源设置。
- 安全校验:CLOSED_LOCKED 状态下,FSBL 必须携带 ECDSA 签名与加密头,否则启动失败。
- 调试限制:CLOSED_LOCKED_PROVD 状态下调试功能锁定,需通过 RMA 密码解锁。
7. STM32N6 Boot ROM 启动配置检查表
本检查表基于 UM3234 用户手册,涵盖启动源选择、OTP 安全配置、安全校验、硬件接口四大核心模块,明确每项配置的要求、参考依据与检查结果栏,助力开发快速完成启动配置验证与故障排查。
| 检查模块 | 检查项 | 配置要求 |
|---|---|---|
| 一、启动源选择 | 1. 启动模式确认 | 1. 通过 BOOTSR [1:0] 引脚(Boot0=PA6、Boot1 = 专用引脚)或 OTP_WORD11(BOOTROM_CONFIG_2 [8:5])确定启动配置 2. 优先级:OTP 配置 > 引脚配置 |
| 2. 存储介质启动配置 | (若选择存储启动) 1. sNOR/HyperFlash™:确认 XSPI1/XSPIM_P2 配置(CSHT、ADMODE 等) 2. SD/eMMC:确认 SDMMC1/2 时钟(64 MHz)、引脚(如 SDMMC1_CK=PC12) 3. 存储介质格式:SD 需 512 字节扇区,eMMC 需启用 Boot Partition 1 |
|
| 3. 串口下载启动配置 | (若选择串口启动) 1. USART:波特率 115200、偶校验、9 位数据位,引脚如 USART2_RX=PF6 2. USB:USB 2.0 HS(DFU 1.1),端点 8 个,RxFifo/TxFifo=0x80 3. 确保 OTP 未禁用对应接口(OTP_WORD11 [16:9]) |
|
| 4. Dev Boot 模式配置 | (开发阶段) 1. 仅 CLOSED_UNLOCKED 生命周期支持 2. 通过 Boo1 引脚触发,启动后开放调试权限 |
|
| 二、OTP 安全配置 | 1. 生命周期熔丝配置 | 1. CLOSED_UNLOCKED:OTP_WORD18[3:0]=0(secure_boot=0) 2. CLOSED_LOCKED_UNPROVD:OTP_WORD124.20=1 + OTP_WORD18=0xF 3. CLOSED_LOCKED_PROVD:OTP_WORD124.20=1 + OTP_WORD18=0x1EF |
| 2. 安全启动开关 | 1. CLOSED_LOCKED 状态下,OTP_WORD18 [3:0]≥1(强制安全启动) 2. 加密优先级:OTP_WORD18.4=0(速度优先,用 CRYP)/1(安全优先,用 SAES) |
|
| 3. 防回滚计数器配置 | 1. OTP_WORD20/21 存储 FSBL 单调计数器,需≥FSBL 版本号 2. 计数器最大值 63,超限时仅启动 FSBL 不更新计数器 |
|
| 4. 篡改检测配置 | 1. OTP_WORD29.1=1(启用启动阶段篡改检测) 2. OTP_WORD56 配置外部 / 内部篡改使能,OTP_WORD57 配置篡改类型(确认 / 潜在) |
|
| 三、安全校验参数 | 1. FSBL 签名配置 | 1. 签名算法:ECDSA 256(NIST/Brain pool)或 ECDSA 384 2. 公共密钥:通过 OTP_WORD17 [7:0] 指定活跃密钥索引,校验密钥哈希表 |
| 2. FSBL 加密配置 | (若启用加密) 1. 密钥大小:AES-128/256(OTP_WORD64.8 指定) 2. 派生常量:需与 FSBL 加密扩展头一致(32 字节) 3. 解密后校验:SHA256 的 128 MSB 需匹配头信息 |
|
| 3. 密钥管理 | 1. 芯片唯一密钥(CUK)存储于 OTP,禁止直接读取 2. 加密密钥派生:通过 PRF CMAC 从 EDMK(OTP_WORD364~367)与常量生成 |
|
| 四、硬件接口配置 | 1. 存储接口配置 | 1. XSPI:Prescaler=0x1(fclock = 内核时钟 / 2)、CSHT=0x0(sNOR)/0x7(HyperFlash™) 2. SDMMC:CLKCR.CLKDIV=0x84(识别模式)/0x2(传输模式),PWRCTRL=0x3(上电) |
| 2. 串口 / USB 接口配置 | 1. USART:GPIO 模式 = 推挽高速 + 上拉,AF 复用(如 USART2=AF7) 2. USB:PHY = 嵌入式,VBUS 检测禁用,SOF 禁用 |
|
| 3. 时钟与电源配置 | 1. 时钟场景:nominal(CPU=400 MHz、AHB=150 MHz)/default(CPU=64 MHz) 2. 电源域:VDDIO3(XSPI)、VDDIO4(eMMC)、VDDIO5(SD)独立供电 |
|
| 4. 缓存与内存配置 | 1. 缓存:指令缓存启用,数据缓存安全启动时启用 2. 内存:下载缓冲区基地址 = 0xX4108000(X=2 非安全 / X=3 安全),RISAF2 隔离敏感区 |
|
| 五、启动故障排查 | 1. 启动失败原因确认 | 1. 查看 PG10 引脚(BootFailed)状态,UART5_TX(9600 波特率)输出错误日志 2. 常见故障:签名失败(0x44)、版本回滚(0x45)、篡改触发(0x26) |
| 2. 串口下载失败排查 | 1. 确认 USB/USART 未被 OTP 禁用 2. USART 需断开 USB,USB 需完成枚举(设备 ID=0x0483:0xDF11) |
使用说明
- 检查结果填写:完成配置后在 “检查结果” 栏标注√(符合要求)、×(不符合)、待确认(需进一步验证)。
- 故障定位:若启动失败,优先检查 “启动故障排查” 项,结合 UART 日志与 OTP 配置反查问题。
- 版本适配:确保 FSBL 版本、Boot ROM 版本(0x00000501,DV5.1)与手册(Rev 1)版本匹配。
UM3234 手册为 STM32N6 Boot ROM 提供了从启动流程、安全机制到硬件配置的完整指南,其多启动源适配、强安全校验与生命周期管控特性,是高安全、高可靠场景启动开发的核心参考。
阅读全文
541