STMCU小助手
发布时间:2024-2-29 14:59
|
01前言 本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。3 U& @. D0 {8 C \5 r 由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。 8 b# k+ e/ R/ J, G: ?# R8 Y: s 因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。- G7 q" p, M5 c8 | " X z( i/ D* w% w 此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。1 }3 v/ A* W: r7 X9 {4 q1 _5 m/ I; ~ 6 |0 a! h# R7 J i 02准备工作
软件包: STM32Cube_FW_H5_V1.1.0% ~& Y( u: L, D1 A, c% _! J 工具: • STM32CubeProgrammer v2.14.0 • Tera Term 串口终端显示; E5 k3 D! E* F" M8 C' [ • Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)* c3 \+ C! @, t* T/ ] . x/ C* [+ a9 K9 w IDE: STM32CubeIDE v1.13.0 STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。 % p6 X' J- i- C4 @# b9 X 03生成OBK并测试 在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。 3 q, X& m( ]2 S8 f9 `. H 3.1. 生成 DA OBK 文件和密码文件 打开 TPC 工具。 4 v! ?/ G) x4 A% ]; L' _5 d
左边选择 H5, 上方选项卡选择 OBKey, 然后在 xml file 处选择C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEOH563ZI/ROT_Provisioning/DA/Config/DA_ConfigWithPassword.xml, 然后在 Password 处输入你想要设置的密码, 这里我们直接使用默认密码即可。然后在 output file 处设置输出文件, 我们也使用默认即可。最后点击 Generate OBkey 按键, 在 Binary 目录下生成对应的 obk 文件和bin 文件 :+ k( |2 Z7 h# J9 q, j' K0 Q
# G9 v, V: f4 }5 M/ J, o* H% s 如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。 3.2. 预配置 DA(provisioning) 接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。7 Q- D6 O# @% _* _9 z4 K l ; n8 ~$ o8 m3 X2 x, j
1 F! \- Q3 {) [5 ^ 然后将 product state 配置为 provisioning 状态 : 0 U5 D7 j8 K: [9 I/ g7 K% J
, S3 W: B9 k3 G5 v% G 然后使用 STM32CubeProgrammer 进行预配置 :
如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…* ], ~ Q$ W0 K5 ] w
结果将弹出对话框提示预配置成功。 }" H8 C7 V/ H/ b: d3 K 3.3. DA 回退 接下来我们直接使用密码进行 DA 回退…& T7 F3 L. N& R
- U& K9 }& p' P/ |/ R 如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…/ k: P1 R& a$ L. i/ ? 4 t& i) ~8 @6 X0 y8 I6 q W
' F$ r. T. d4 }! H2 B; j* B/ p 如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin6 F7 R- w0 m) J, e/ ` " a6 y2 g5 r- ~: ?$ `4 V4 v 然后点击 Full Regression 按键…
# }: }2 T k3 ~/ e2 | 如上图所示, 成功时会弹出提示对话框。) f8 n5 O5 Y! n: |9 E! G6 L 3 d* V: v" U2 _, \, b. g$ f* ~ 这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。! a" G& N; u- |0 k5 O- N1 E5 K: x7 ` ) L: z6 Y1 D5 U1 U1 d- h4 R# n 04烧录程序再次测试0 v3 j% D; X- ?/ j 接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。/ F: R! i* K/ K2 F1 K. B9 @, k 在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。% [0 I: S, [6 z7 n9 Q: C% \# Y : S. L/ U0 G! ? 转载自: STM32单片机: v6 z5 j/ Y! C. J. W3 A9 {) i 如有侵权请联系删除 3 i( a% R$ f e B: Z4 R3 K1 f |
【NUCLEO-H533RE评测】-01-开箱及资料准备
【STM32H503评测】+基于STM32CubeMX生成工程点灯
实战经验 | LAT1585 STM32H5在使能TrustZone下实现High-Cycle的数据存储
详解STM32单片机的堆栈
STM32大神笔记,超详细单片机学习汇总资料
小白也能明白的STM32的低功耗与唤醒机制
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
STM32时钟详解
经验分享 | STM32H563 SPI DMA应用演示
微信公众号
手机版
开发板和不错呀~~~