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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言
  M5 g/ c$ o3 q- e本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。3 U& @. D0 {8 C  \5 r

" v' k5 g2 y+ `由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。
/ j! w* Z: X" t4 e6 e: @% v7 c8 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准备工作
+ O" q, T3 a$ B8 V5 j2 \) W
2 a& U0 L! c0 i! t: l
微信图片_20240229145309.jpg * J  |3 t5 P2 U3 e3 x( Y

: z$ }6 l# _2 x软件包: STM32Cube_FW_H5_V1.1.0% ~& Y( u: L, D1 A, c% _! J

) ~' j1 c  }) T# p工具:
  n" B9 @8 r9 f1 m5 ]3 b- f• STM32CubeProgrammer v2.14.0
  m; J- ]; E5 p7 I% ^( A  A; c" @• 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
/ A4 P& r$ A5 H
5 E4 w: d0 c3 _9 `( @% iSTM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
$ P+ k9 g; W- B2 o1 U% p6 X' J- i- C4 @# b9 X
03生成OBK并测试

3 z- Y2 Q! x5 n7 V" ?8 M3 B在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。
: Y( K3 Z3 z  _2 \3 q, X& m( ]2 S8 f9 `. H
3.1. 生成 DA OBK 文件和密码文件
% _$ z$ J* r- N) v4 Q打开 TPC 工具。
: V" e& A% S2 h: D, U' Q5 v4 v! ?/ G) x4 A% ]; L' _5 d
微信图片_20240229145312.jpg
8 M9 X- v! z' F. E, x* d. }7 {
: {7 Q' Q) @! ^& x" g" l  P左边选择 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

! m  b6 E; K1 d2 y
微信图片_20240229145315.jpg
8 x& L7 g6 z$ e6 P4 \$ V# G9 v, V: f4 }5 M/ J, o* H% s
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。
& V" y0 y, ?3 V2 Q
8 h$ @" {. r9 b7 ?1 S3.2. 预配置 DA(provisioning)
( f2 N) {' ^$ y+ C( L' V# l0 o5 b接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。7 Q- D6 O# @% _* _9 z4 K  l
; n8 ~$ o8 m3 X2 x, j
微信图片_20240229145211.jpg
1 ]3 v" T- n' M1 F! \- Q3 {) [5 ^
然后将 product state 配置为 provisioning 状态 :
- b  j+ |1 s& b2 r" Y; p5 G0 U5 D7 j8 K: [9 I/ g7 K% J
微信图片_20240229145207.jpg % ]" F) |+ x9 x: r, ?/ q0 F) A
, S3 W: B9 k3 G5 v% G
然后使用 STM32CubeProgrammer 进行预配置 :
- A4 O: K  H; ?  ^: m+ P" a; z/ d! Z
- y+ e: g, p1 I
微信图片_20240229145202.jpg
% `0 X5 @4 ?" J. w# s8 ]) H
2 b% V( `& O: S" Z如上图所示, 在 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

# h9 `) Z1 `6 B0 N
微信图片_20240229145158.jpg : u7 G' _- q1 V2 E

7 R: l6 p: r# t7 e- {/ o; R结果将弹出对话框提示预配置成功。
1 a1 q% z9 a' F& L6 b' u3 H1 ?  }" H8 C7 V/ H/ b: d3 K
3.3. DA 回退
- C5 y, Q; Q! y6 c8 E接下来我们直接使用密码进行 DA 回退…& T7 F3 L. N& R

# M. o5 v# t, U- w) i
微信图片_20240229145155.jpg # ?+ j: \2 I# ^+ A
- U& K9 }& p' P/ |/ R
如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…/ k: P1 R& a$ L. i/ ?
4 t& i) ~8 @6 X0 y8 I6 q  W
微信图片_20240229145152.jpg
9 D' a( ?/ h6 x0 S  @( r9 p9 h' 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 按键…
4 g. A# K, S2 c5 {
( p9 q8 p5 |  I% z; c* T8 b
微信图片_20240229145147.jpg
2 s, v* l9 Y; F# }: }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

" H' ^4 z# c, l, |- C: q% P在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。
% [0 I: S, [6 z7 n9 Q: C% \# Y

+ b1 f4 L- x: M) I, j( I, m
: S. L/ U0 G! ?
转载自: STM32单片机: v6 z5 j/ Y! C. J. W3 A9 {) i
如有侵权请联系删除
# a- [" m& C: @$ P3 i( a% R$ f  e  B: Z4 R3 K1 f
收藏 评论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 手机版