• 正文
  • 相关推荐
申请入驻 产业图谱

OTP / 仿真寄存器配置、工程开发调试、主机端实现与移植实操要点

8小时前
1
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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 代表禁用该引脚。

典型配置案例:

  1. 无选择引脚,固定 Flash 启动 BMSP0=0xFF,BMSP1=0xFF,BMSP2=0xFF;KEY=0x5A;BOOTDEF0 配置0x03(Flash Boot)。芯片上电无条件直接运行 Flash 程序。
  2. 单选择引脚,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 数据流,关键点:

  1. 头部必须是0x08AA,字节序 LSB 在前;
  2. SPI、I2C、CAN 模式:8 个保留字需要填入外设配置参数;UART、Parallel‑IO 模式保留字填 0;
  3. 入口地址 EntryPoint 必须和下载目标内存匹配;RAM 启动填入 SRAM/ITCM 地址,Flash 启动填入 Flash 起始;
  4. 多个数据块依次拼接,最后一个块的 BlockSize 设置 0x0000,作为传输结束标记;
  5. SPI/I2C 模式,数据流存放在外部 EEPROM 起始地址 0x0000。

5. 开发调试完整实操流程

  1. 调试阶段(仿真启动) ① 仿真器连接芯片,TRST 引脚为低,自动进入仿真模式; ② 通过调试内存改写 EMU‑BOOTPIN‑CONFIG,写入 KEY=0x5A,配置选择引脚;改写 EMU‑BOOTDEF 设置模式表; ③ 配置需要测试的 Boot 模式;复位芯片; ④ 主机构造标准 Boot 数据流,下发; ⑤ 下载完成跳转 EntryPoint;调试运行用户代码; ⑥ 全部逻辑验证完成,再烧写 OTP 对应参数用于量产独立模式。
  2. 量产独立模式 ① 烧写 DCSM‑OTP 区域 Z1‑OTP‑BOOTPIN‑CONFIG、Z1‑OTP‑BOOTDEF;注意 OTP 一次性,烧写前反复仿真验证; ② 硬件设置 Boot 选择 GPIO 引脚电平;上电复位,芯片运行独立 BootROM 逻辑。

6. 故障排查、常见问题与定位手段

  1. 芯片上电卡死不进入用户程序 读取 Boot 进度寄存器、异常 Fault 寄存器;读取 PC 程序计数器,对照 Boot Wait Point 地址区间,判断卡死在哪一个 ROM 内部循环。
  2. UART Boot 波特率锁定失败 高波特率(>100k)容易出现自动波特识别失败;降低主机波特率;优先低波特完成下载,应用层再切换高速。
  3. I2C Boot 无法加载 确认外部 EEPROM 从机地址 0x50;启动阶段总线不能存在其他 I2C 主机。
  4. Secure Boot 校验失败,进入 Wait 核对 OTP 内部 128bit CMAC 密钥;核对 Flash 内 Golden CMAC 标签;校验 8KB 代码区域范围是否正确。
  5. OTP 烧写完成,启动模式不符合预期 检查 BOOTPIN_CONFIG 的 KEY 位是否写入 0x5A;确认 BOOTDEF 每一个模式配置值合法。

相关推荐