你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32H5的DA之初体验经验分享(不带 Trust Zone)

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言% T, a* m( B( r7 g* G) S/ q) H
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。6 v4 E: U1 l$ a! k
/ _; Z1 R( s0 c# }  o6 G; {8 z% B
由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。1 Z# N" U: p8 ?( ^- L

% c# _8 l: t3 N* B) Y2 u. @; W因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。
$ ]6 r" a/ Y- z  e4 S
# v4 \* A8 {1 u3 G! C& \$ _0 n此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。- x; x* m! N  z, c/ p0 I
! H1 q# I1 H( P
02准备工作
+ `% ^* s- i6 C3 E) g4 U. M" |0 j# E! e, }/ P
微信图片_20240229145309.jpg
9 l' ^. v4 _- ?/ a9 W. k2 J+ U
+ x, m6 b( f3 @软件包: STM32Cube_FW_H5_V1.1.0! i# L: ?+ v2 b  _7 ?

+ Z& p$ e% d0 V! Q工具:- t. ^8 `6 h  F- o0 h& c6 r
• STM32CubeProgrammer v2.14.0
+ I. P6 Y. [2 v• Tera Term 串口终端显示9 I8 ]0 Q8 @* n  o- l
• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)
+ \# k9 v5 z; Z* |* K8 O6 H" t/ m1 J5 k9 [2 }( t
IDE: STM32CubeIDE v1.13.0' v, [- e) P: g0 \2 b* M3 P
  y( ~* t' j0 n8 ~
STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
2 J5 P) s' G, E/ H- o% c6 p- `8 |3 b/ B" f
03生成OBK并测试

1 M8 D. p9 J* @# i$ Y在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。- U+ c% ]/ F! |6 n* V

' T7 b3 C2 z( M1 }3 o8 T2 \1 J3.1. 生成 DA OBK 文件和密码文件! u5 E: @1 n. F
打开 TPC 工具。
% X  p( l7 }1 P, ^: O6 ^- {! G9 n5 K* Z
微信图片_20240229145312.jpg
! c6 {2 R2 s8 X
, x5 L+ Q4 d! J) r; C左边选择 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 文件 :$ ]- O( ~+ B1 [8 E. s4 d

' F' j$ a' U: L) N% y
微信图片_20240229145315.jpg
+ \0 J! D& R! R3 k# E! U" h4 Y! Q, V: D8 Q" X& s
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。! r' b' ?# _7 D) L

* I6 Q& [! b" u4 T# e5 T: j3.2. 预配置 DA(provisioning)0 L5 Q) Q+ i* b* v% [
接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。3 K6 t# b, U- n: J

$ d4 U, E" s8 P% \
微信图片_20240229145211.jpg
) D0 T% g! N; M# w* D, t4 n: C1 Q3 Y3 @  [5 d
然后将 product state 配置为 provisioning 状态 :
  |# {5 g  L5 U9 N9 R: U$ ]2 V" C; I5 e( O4 x0 w. o
微信图片_20240229145207.jpg
% [+ p/ }. h/ ^% l
' F% [0 e/ g2 M% \& l- [  P然后使用 STM32CubeProgrammer 进行预配置 :) p3 o5 A8 ~2 [' v- ?

& `( L  ^: G5 U2 _1 Z: {; X- _
微信图片_20240229145202.jpg % @8 m) y) x3 F8 u

/ a3 _% d7 e' {, Y4 T如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…. N1 f9 u% E2 u/ v4 S+ K

5 J# y& @# \0 C, ^
微信图片_20240229145158.jpg
0 p0 ]; G% V6 f5 x) V
7 m% K+ a* f9 ]8 |结果将弹出对话框提示预配置成功。+ M3 ]1 B1 U0 b" z

- ^+ A( V, n  d5 q4 ^  }3.3. DA 回退' f7 i# L: x0 t: J# A- a
接下来我们直接使用密码进行 DA 回退…
  j' v2 [8 f- I7 |8 \- a, f
* E8 x8 b/ n0 z. N8 Y4 F3 r( g" s
微信图片_20240229145155.jpg 6 M- y$ J! j, t4 J' V

6 ~& P9 b- k- L1 _/ B* T" K如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…9 r1 W/ X. B0 |9 c$ d
; T) ?7 |: F$ O+ [
微信图片_20240229145152.jpg
& [0 Y1 a6 ^, O' v5 w  ~% z4 t; Z+ w  I% W0 C* E0 g- H& r& J
如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin4 G9 [; L& I( Z! M

1 ?% m* c: z  y然后点击 Full Regression 按键…% I4 i! a9 C* Z5 @8 S! J$ `) X' m
8 d6 p* R3 {8 H7 `& v$ D% C
微信图片_20240229145147.jpg
' k+ @* Z4 d" G- @3 b% H! ~2 h2 ?
: O% ~9 d' j1 x1 V如上图所示, 成功时会弹出提示对话框。5 d6 Z  N# B' D) L  p# G$ t
7 W4 p3 A) r- C0 @
这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。
; }, c: h! c& n3 J7 t, q; F+ g7 L. J6 ]' J! W* e  {
04烧录程序再次测试7 `8 u' C5 f& ]. V
接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。( R2 {1 p8 v1 b# K- p& ^
+ z$ O$ i# F' i
在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。
! {' c+ ?: P: \/ P; [$ w5 e( h$ V
% k( i/ Y0 f9 l; ^! ~4 q6 V$ m

" u: _% P# ~- {: m7 o. B转载自: STM32单片机+ L& `4 X6 C+ M" l7 f
如有侵权请联系删除
  g! G: h* Y% B4 S9 w& {; _
3 L0 @) N) t" j+ n. ~: _
收藏 评论1 发布时间:2024-2-29 14:59

举报

1个回答
xu@xupt 回答时间:2024-3-3 12:32:53

开发板和不错呀~~~

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版