STM32H5 系列引入的 DA(Debug Authentication,调试认证)是开发者必备技能,其认证策略随 TrustZone(TZ)状态不同而变化:开启 TZ 时采用证书认证,关闭 TZ(TZEN=0xC3)时则通过密码实现 DA 回退。本文基于 ST 官方 LAT1329 应用笔记,以 NUCLEO-H563ZI 开发板为例,详解无 TrustZone 场景下 DA 回退的完整流程,同时说明 STM32H503 的特殊适配点,助力开发者快速掌握调试认证与回退操作。
1. 核心背景与关键差异
1.1 DA 核心逻辑
- 无 TrustZone(TZEN=0xC3):不支持常规 DA 调试,仅支持 DA 回退,需通过密码验证解锁调试权限;
- 有 TrustZone(TZEN=0xB4):采用证书认证,流程与密码认证完全不同(参考《STM32H5 DA 之初体验 (带 TrustZone)》)。
1.2 STM32H503 特殊说明
- H503 不带 TrustZone,DA 流程与 H563 无 TZ 场景一致;
- 差异点:H503 无内部 OBK(OB Key)区域,预配置时密码对应的 OBK 文件会直接写入芯片 OTP(一次性可编程)区域。
2. 准备工作
2.1 硬件与软件清单
- 开发板:NUCLEO-H563ZI(H503 可直接参考流程);
- 软件包:STM32Cube_FW_H5_V1.1.0(需放置在无空格、无中文的路径下,示例路径:C:workspace);
- 工具:STM32CubeProgrammer v2.14.0、Tera Term(串口终端)、Trust Package Creator(TPC,随 CubeProgrammer 安装,需勾选);
- IDE:STM32CubeIDE v1.13.0(用于后续程序烧录测试)。
2.2 关键参数预设
- TZEN 配置:确保为 0xC3(TrustZone 关闭);
- Product State 定义:
- Provisioning(0x17):预配置状态,调试部分开放(仅非安全域);
- Closed(0x72):关闭状态,ST-LINK 无法直接连接,需 DA 回退解锁;
- Open(0xED):开放状态,程序可正常烧录运行。
3. 完整操作流程
第一步:生成 DA OBK 文件与密码文件
通过 TPC 工具基于 XML 模板生成 OBK(预配置文件)和 password.bin(密码文件),步骤如下:
- 打开 STM32 Trusted Package Creator(TPC)工具;
- 左侧选择 “STM32H5”,上方切换至 “OBKey” 选项卡;
- 点击 “Open DA Config”,选择 XML 模板路径:
C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-H563ZIROT_ProvisioningDAConfigDA_ConfigWithPassword.xml; - 在 “Password” 栏输入自定义密码(示例用默认密码),“Output File” 保持默认路径;
- 点击 “Generate OBkey”,在
Binary目录下生成两个核心文件:- DA_ConfigWithPassword.obk:用于芯片预配置(provisioning);
- password.bin:DA 回退时需验证的密码文件。
第二步:预配置 DA(Provisioning)
将 OBK 文件写入芯片,完成 DA 预配置,确保后续可通过密码回退:
- 确认芯片状态:TZEN=0xC3,Product State 切换为 Provisioning(0x17);
- 打开 STM32CubeProgrammer,连接开发板,切换至 “PROV”(预配置)标签页;
- 在 “OBKey file path” 选择第一步生成的 OBK 文件:
C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-H563ZIROT_ProvisioningDABinaryDA_ConfigWithPassword.obk; - 点击 “Start Provisioning”,弹出 “OBKey Provisioned successfully” 提示即表示预配置成功。
第三步:DA 回退操作(解锁调试权限)
当芯片处于 Closed 状态(0x72)、ST-LINK 无法连接时,通过密码文件实现 DA 回退:
- 断开 STM32CubeProgrammer 与开发板的连接;
- 切换至 “DA”(Debug Authentication)标签页,点击 “Discover” 识别芯片;
- 在 “Password File Path” 选择第一步生成的密码文件:
C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-H563ZIROT_ProvisioningDABinarypassword.bin; - 点击 “Full Regression”,弹出成功提示即表示 DA 回退完成,芯片解锁,ST-LINK 可重新连接。
第四步:烧录程序验证完整流程
- 在 Product State=Open(0xED)状态下,通过 STM32CubeIDE 烧录一个不带 TrustZone 的测试程序,确保程序正常运行;
- 将 Product State 切换为 Provisioning(0x17),重复第二步预配置流程;
- 再将 Product State 切换为 Closed(0x72),此时 ST-LINK 无法连接,但芯片上的测试程序仍正常运行;
- 执行第三步 DA 回退操作,解锁后 ST-LINK 可重新连接,验证回退功能有效性。
第五步:芯片还原(恢复原始状态)
若需清除所有配置,还原芯片初始状态,重复第三步 DA 回退流程即可:
- 回退成功后,全片 Flash 内容会被自动擦除,芯片恢复为原始未配置状态,可重新进行预配置与程序烧录。
4. 关键注意事项
- 路径要求:STM32Cube_FW_H5 软件包必须放置在无空格、无中文的路径下,否则可能导致预配置失败;
- 状态切换:预配置需在 Product State=Provisioning(0x17)下执行,DA 回退需在 Closed(0x72)状态下触发;
- 密码匹配:OBK 文件与 password.bin 一一对应,预配置后需妥善保存密码文件,丢失则无法完成 DA 回退;
- H503 适配:无需修改流程,仅需注意其 OBK 文件写入 OTP 区域,OTP 写入后不可修改,需谨慎配置密码。
STM32H5 无 TrustZone 场景下的 DA 回退,核心是 “TPC 生成 OBK 与密码文件→CubeProgrammer 预配置→Closed 状态下密码回退” 的三步流程。关键在于确保 TZEN=0xC3、Product State 切换正确,且 OBK 文件与密码文件匹配。
该流程适用于 H563(无 TZ)、H503 等系列芯片,既能保障芯片调试安全(Closed 状态下禁止非法连接),又能通过密码回退解锁调试权限,是 STM32H5 开发中调试认证的核心方案。
阅读全文
264