扫码加入

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

STM32H573 STiROT 实操:安全启动与加密固件更新分步实现

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

STiROT(ST Integrated Root of Trust)是 STM32H573 专属的硬件级信任根功能,核心支撑安全启动、固件加密签名与安全更新,仅适用于带安全硬件加速器的 STM32H573(H563、H503 不支持)。本文基于 ST 官方 LAT1342 应用笔记,以 STM32H573-DK 开发板为例,分步拆解 Full Secure(全安全)和 Secure+Non Secure(S+NS)两种工程类型的部署、固件更新与芯片还原流程,适配 STM32Cube_FW_H5_V1.1.0 及配套工具链。

1. 核心背景与适用范围

1.1 STiROT 核心价值

  • 安全启动:仅允许经加密签名的固件运行,阻断恶意固件;
  • 固件保护:通过密钥对实现固件加密(STiRoT_Encryption.pem)与认证(STiRoT_Authentication.pem);
  • 灵活部署:支持 “全安全工程”(仅 Secure 域)和 “S+NS 工程”(安全域 + 非安全域),适配不同安全需求。

1.2 关键前提

  • 芯片限制:仅 STM32H573 支持 STiROT,需确认硬件型号;
  • TrustZone 状态:Full Secure 工程无需使能 TrustZone,S+NS 工程需激活 TrustZone(TZEN=0xB4);
  • 路径要求:STM32Cube_FW_H5 软件包需放置在无中文、无空格路径(示例:C:workspace)。

2. 准备工作

2.1 硬件与软件清单

  • 开发板:STM32H573-DK(MR1 版本);
  • 软件包:STM32Cube_FW_H5_V1.1.0;
  • 工具:STM32CubeProgrammer v2.14.0、Trust Package Creator(TPC,随 CubeProgrammer 安装并勾选)、Tera Term(串口终端);
  • IDE:STM32CubeIDE v1.13.0。

2.2 环境预处理

  • TrustZone 检查:通过 STM32CubeProgrammer 查看 Option bytes,Full Secure 工程确保 TZEN 未使能(后续 S+NS 工程需激活);
  • 脚本路径配置:打开STM32Cube_FW_H5_V1.1.0ProjectsSTM32H573I-DKROT_Provisioningenv.bat,核对STM32CubeProgrammer_CLI.exeSTM32TrustedPackageCreator_CLI.exe的安装路径,确保与本地一致。

3. 实操流程:Full Secure 工程部署(默认配置)

Full Secure 工程仅含安全域代码,部署步骤简洁,适合纯安全需求场景:

3.1 运行 STiROT 预配置脚本

  1. 进入路径STM32Cube_FW_H5_V1.1.0ProjectsSTM32H573I-DKROT_ProvisioningSTiROT,双击运行provisioning.bat
  2. 系统弹出 DOS 终端,按提示逐步操作(全程保持终端开启)。

3.2 生成 STiROT_Config.obk 文件(核心配置文件)

  1. 打开 TPC 工具,左侧选择 “STM32H5”,上方切换至 “OBKey” 选项卡;
  2. 加载 XML 配置文件:C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsSTM32H573I-DKROT_ProvisioningSTiROTConfigSTiRoT_Config.xml
  3. 配置关键参数:
    • 勾选 “Is the firmware full secure”(全安全工程标识);
    • 密钥选择:使用默认密钥对(或点击 “Regenerate” 自定义生成,需妥善保存);
    • 输出路径:选择Binary目录,点击 “生成”,得到STiROT_Config.obk文件。

3.3 复用 DA_Config.obk 文件

无需额外生成,直接使用 SDK 自带文件:C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsSTM32H573I-DKROT_ProvisioningDABinaryDA_Config.obk,其密钥与证书位于同级目录的 Keys 和 Certificates 文件夹。

3.4 编译 Full Secure 工程

  1. 用 STM32CubeIDE 打开工程:C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsSTM32H573I-DKApplicationsROTSTiROT_Appli
  2. 直接编译,生成两个核心文件(路径:工程 / Binary 目录):
    • appli.bin:原始固件(初始安装用);
    • appli_enc_sign.hex:加密签名固件(后续升级用)。

3.5 芯片预配置(Provisioning)

  1. 确认开发板 BOOT0 引脚拉低;
  2. 在 DOS 终端按回车键,提示输入最终 Product State,输入 “CLOSED”(禁止非法调试),按回车;
  3. 脚本自动完成:Option bytes 配置、固件烧录、STiROT_Config.obk 预配置,直至提示 “预配置完成”。

3.6 验证运行状态

  1. 打开 Tera Term,配置串口波特率 115200 bps,连接开发板;
  2. 复位开发板,串口打印 “User App#A”“Appli Code version:1.0.0”,表示工程正常运行。

4. 实操流程:S+NS 工程部署(安全 + 非安全域)

S+NS 工程需划分安全域与非安全域代码,适用于复杂业务场景,核心差异在配置与工程选择:

4.1 修改脚本工程路径

  1. 打开env.bat文件,修改目标工程配置:
    set stirot_boot_path_project=Applications/ROT/STiROT_Appli_TrustZone
    
  2. 保存后,重新运行provisioning.bat脚本。

4.2 TPC 工具特殊配置

  1. 加载同路径 XML 配置文件,取消勾选 “Is the firmware full secure”;
  2. 配置安全域大小:
    • 打开STiROT_Appli_TrustZone工程,查看 Secure 域 Flash 占用(示例:0x6000);
    • 在 TPC 中 “Size of the secure area” 填写 0x6000,“Firmware area size” 填写 0x20000(128K,需大于 S+NS 工程总占用);
  3. 生成新的STiROT_Config.obk文件。

4.3 编译 S+NS 双工程

  1. 打开STiROT_Appli_TrustZone工程,先编译Secure子工程,再编译NonSecure子工程;
  2. 编译后自动生成加密签名固件,后续预配置、运行验证步骤与 Full Secure 工程一致,串口打印正常即表示部署成功。

5. 固件更新步骤(两种工程通用)

以 Full Secure 工程为例,更新固件版本从 “A” 到 “B”:

5.1 修改代码并重新编译

  1. 打开STiROT_Appli工程,修改版本号:const uint8_t UserAppId = 'B';
  2. 重新编译,生成新的appli_enc_sign.hex(加密签名固件)。

5.2 触发跳转到 Bootloader

  1. 在 Tera Term 串口终端输入 “1”,程序跳转至内置 Bootloader;
  2. 断开 Tera Term 串口连接。

5.3 串口下载新固件

  1. 打开 STM32CubeProgrammer,选择 UART 模式连接开发板(波特率 115200 bps);
  2. 将新生成的appli_enc_sign.hex拖入 CubeProgrammer,点击 “Download”;
  3. 下载完成后,重新连接 Tera Term,复位开发板,串口打印 “User App#B”,更新成功。

6. 芯片还原:DA 回退(恢复 Open 状态)

当芯片处于 CLOSED 状态时,需通过 DA 回退解锁,步骤如下:
  1. 打开 STM32CubeProgrammer,选择 ST-LINK 模式,切换至 “DA” 标签页,点击 “Discover”;
  2. 配置密钥与证书路径:
    • Key File Path:C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsSTM32H573I-DKROT_ProvisioningDAKeyskey_3_leaf.pem
    • Certificate File Path:C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsSTM32H573I-DKROT_ProvisioningDACertificatescert_leaf_chain.b64
  3. 点击 “Continue”,选择 “Full Regression”→“Execute”,回退成功后,Product State 恢复为 Open,TrustZone 自动关闭。

7. 关键注意事项

  1. 密钥管理:自定义生成的密钥对(STiRoT_Encryption.pem、STiRoT_Authentication.pem)需单独备份,丢失将导致固件无法更新;
  2. 工程匹配:TPC 中 “Is the firmware full secure” 勾选状态需与实际工程类型一致,否则编译或运行失败;
  3. 路径禁忌:软件包与工程路径严禁含中文、空格,否则脚本运行或预配置失败;
  4. Product State:严禁设置为 “LOCKED”,否则芯片无法还原;
  5. TrustZone 激活:S+NS 工程需在 Option bytes 中设置 TZEN=0xB4,Full Secure 工程无需使能。
STM32H573 STiROT 的核心落地逻辑是 “配置生成→工程编译→预配置→安全启动→加密更新”,关键在于 TPC 工具的工程类型配置、密钥管理与脚本路径正确性。Full Secure 工程适合纯安全需求,部署简洁;S+NS 工程适合复杂业务,需划分安全域与非安全域。两种工程的固件更新流程通用,均通过加密签名固件保障传输与运行安全。

相关推荐