1. OTP 与仿真寄存器地址完整梳理
| 用途 | 仿真调试地址 (Emulation) | 独立量产 OTP 地址 (Standalone) |
|---|---|---|
| BOOTPIN‑CONFIG 引脚配置 | 0x50020000 | 0x0810A018 |
| BOOTDEF‑LOW 模式表低字 | 0x50020004 | 0x0810A038 |
| BOOTDEF‑HIGH 模式表高字 | 0x50020008 | 0x0810A03C |
仿真寄存器可以反复改写,调试阶段优先使用;OTP 地址属于 DCSM 一次性可编程,烧录后不可回退修改,量产前务必在仿真寄存器验证全部逻辑。
资料获取:AN1137_G32R501 BootLoader 用户手册
2. BOOTPIN_CONFIG、BOOTDEF 寄存器配置方法与配置示例
BOOTPIN_CONFIG 寄存器
- bit31‑24 KEY:必须写入
0x5A,寄存器配置才视为有效; - bit23‑16 BMSP2、bit15‑8 BMSP1、bit7‑0 BMSP0:最多 3 个选择引脚;0xFF 代表禁用该引脚。
典型配置案例:
- 无选择引脚,固定 Flash 启动 BMSP0=0xFF,BMSP1=0xFF,BMSP2=0xFF;KEY=0x5A;BOOTDEF0 配置
0x03(Flash Boot)。芯片上电无条件直接运行 Flash 程序。 - 单选择引脚,GPIO0;引脚 0=0 执行 CAN Boot;引脚 0=1 执行 Flash Boot BMSP0=0x00(GPIO0),BMSP1=0xFF,BMSP2=0xFF;KEY=0x5A;BOOTDEF0=0x02(CAN),BOOTDEF1=0x03(Flash)。
BOOTDEF 寄存器(64bit,BOOTDEF0‑BOOTDEF7 共 8 个条目)
每个字节 BOOTDEFx 存储对应引脚电平下的启动模式配置值,可以配置外设引脚、Flash/RAM 启动地址。不支持的模式配置值会触发芯片复位。
3. 不同 Boot 模式引脚配置表查阅方法
文档每个 Boot 模式提供多套配置值,不同配置对应不同 GPIO 引脚、存储器起始地址:
- UART Boot:配置值 0x01 /0x21 /0x41 等,对应不同 Tx/Rx 引脚;
- CAN Boot:配置值 0x02 /0x22 /0x42,对应 CAN 引脚;
- Flash Boot:配置值 0x03 /0x23 /0x43 /0x63,对应 Bank0/Bank1、ITCM/Busmatrix 访问地址;
- RAM Boot:配置值 0x05 /0x25 /0x45 /0x65,分别映射 ITCM / SRAM0 / SRAM1 / SRAM2;
- SPI、I2C 同理,不同配置值映射不同 GPIO 引脚组合。
用户修改 BOOTDEF,配置值必须和硬件引脚分配匹配。
4. 主机侧数据流构造要点
主机工具(PC / 外部 EEPROM)生成标准 Boot 数据流,关键点:
- 头部必须是
0x08AA,字节序 LSB 在前; - SPI、I2C、CAN 模式:8 个保留字需要填入外设配置参数;UART、Parallel‑IO 模式保留字填 0;
- 入口地址 EntryPoint 必须和下载目标内存匹配;RAM 启动填入 SRAM/ITCM 地址,Flash 启动填入 Flash 起始;
- 多个数据块依次拼接,最后一个块的 BlockSize 设置 0x0000,作为传输结束标记;
- SPI/I2C 模式,数据流存放在外部 EEPROM 起始地址 0x0000。
5. 开发调试完整实操流程
- 调试阶段(仿真启动) ① 仿真器连接芯片,TRST 引脚为低,自动进入仿真模式; ② 通过调试内存改写 EMU‑BOOTPIN‑CONFIG,写入 KEY=0x5A,配置选择引脚;改写 EMU‑BOOTDEF 设置模式表; ③ 配置需要测试的 Boot 模式;复位芯片; ④ 主机构造标准 Boot 数据流,下发; ⑤ 下载完成跳转 EntryPoint;调试运行用户代码; ⑥ 全部逻辑验证完成,再烧写 OTP 对应参数用于量产独立模式。
- 量产独立模式 ① 烧写 DCSM‑OTP 区域 Z1‑OTP‑BOOTPIN‑CONFIG、Z1‑OTP‑BOOTDEF;注意 OTP 一次性,烧写前反复仿真验证; ② 硬件设置 Boot 选择 GPIO 引脚电平;上电复位,芯片运行独立 BootROM 逻辑。
6. 故障排查、常见问题与定位手段
- 芯片上电卡死不进入用户程序 读取 Boot 进度寄存器、异常 Fault 寄存器;读取 PC 程序计数器,对照 Boot Wait Point 地址区间,判断卡死在哪一个 ROM 内部循环。
- UART Boot 波特率锁定失败 高波特率(>100k)容易出现自动波特识别失败;降低主机波特率;优先低波特完成下载,应用层再切换高速。
- I2C Boot 无法加载 确认外部 EEPROM 从机地址 0x50;启动阶段总线不能存在其他 I2C 主机。
- Secure Boot 校验失败,进入 Wait 核对 OTP 内部 128bit CMAC 密钥;核对 Flash 内 Golden CMAC 标签;校验 8KB 代码区域范围是否正确。
- OTP 烧写完成,启动模式不符合预期 检查 BOOTPIN_CONFIG 的 KEY 位是否写入 0x5A;确认 BOOTDEF 每一个模式配置值合法。
阅读全文
1