
01前言. k8 Z/ o) p( q6 a9 K/ m3 C7 H 本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。 : @( U. x, }; ^# K 由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。- p0 y; d+ H1 T5 t0 S5 S7 V 1 [0 I+ h6 }* M$ I! I 因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。 此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。9 D5 b( X3 x+ w" ?# k 02准备工作 9 }* }/ _" Q+ B/ @ ![]() ( s( `) B7 K% M T# N ?$ F* N; y 软件包: STM32Cube_FW_H5_V1.1.0 1 i/ V. M3 |1 k& G# F9 q" m2 |- V 工具: • STM32CubeProgrammer v2.14.0 • Tera Term 串口终端显示0 S5 ~3 G( ` [! r2 @) W/ L • Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选) IDE: STM32CubeIDE v1.13.0 + c T2 }) ?8 S& j; U& Z2 y1 v) h STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。 03生成OBK并测试 在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。 % n2 i5 u# a6 J% N 3.1. 生成 DA OBK 文件和密码文件 打开 TPC 工具。) \/ a; E; X" K' ~ 4 U3 u) V+ E; H0 q$ c' P# L, E ![]() 左边选择 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 文件 : ' r& l+ {) ^/ v j4 g3 p% t ![]() % {1 ]% p; a7 t( q) d 如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。 2 ?& \: i5 E7 i" d0 ^, c6 Z 3.2. 预配置 DA(provisioning) 接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。 7 o& b' n+ A6 e) v, x& U% S1 I ![]() 然后将 product state 配置为 provisioning 状态 :7 Z- T) J5 b6 ?$ _3 W " F# L% a& Q, [ p& ^ ![]() 然后使用 STM32CubeProgrammer 进行预配置 :5 z C( c3 Y/ k5 N2 a: O+ a $ J4 w. q* \! e, c, e! y ![]() 如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键… ![]() ( O, S& C: T7 k( l6 e 结果将弹出对话框提示预配置成功。, l6 x* q6 o4 W: [9 l% d 3.3. DA 回退 接下来我们直接使用密码进行 DA 回退… ! X" x4 u& \/ Y6 q; V ![]() 如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover… ![]() 如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin + C5 Q4 |, |$ r# m- h 然后点击 Full Regression 按键… % ]2 e. }! L# K ![]() , Z, N4 \! H3 ~4 R; A* A 如上图所示, 成功时会弹出提示对话框。8 C6 H: G. g" L. U0 [' {7 u ' h) r" ]7 e" g! I 这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。 ) l5 W, x) ^% F$ F \& V) P 04烧录程序再次测试 接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。 " H' _8 p% d5 R) w# o! Z 在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。 转载自: STM32单片机: |& j3 L3 r. V& C8 R) l 如有侵权请联系删除5 y* C* _# X+ e$ h }5 I- T, Y2 P5 v & R+ I1 V. ?) K/ Q5 z |
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA
NUCLEO-H563ZI刷入Micropython固件并点亮LED灯
【NUCLEO-H533RE评测】+点亮小灯
【NUCLEO-H533RE评测】+09 低功耗测试
【NUCLEO-H533RE评测】+08 初识FreeRtos
【NUCLEO-H533RE评测】+07 IIC调试
【NUCLEO-H533RE评测】+06 ADC调试
【NUCLEO-H533RE评测】+05 调试PWM
开发板和不错呀~~~