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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言2 m- F; o2 I# ^3 M
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。
; O+ }$ k. r" a* G3 U+ t2 g
$ a) h# w& F8 @由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。
% k6 D1 ]2 a1 g- a3 Y4 t$ k7 r4 P( _# c1 I3 B2 f
因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。
+ k3 E0 }. H$ _6 F0 z8 }& c  z" O; w  a+ R1 Y6 M
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。7 L7 H4 f# P; p

0 F& u1 _/ R6 f9 ?02准备工作
+ `% n# [* ^" ?& X+ k) P' u9 l5 m% H4 f1 a$ D8 `
微信图片_20240229145309.jpg # k8 w: N; C! `! g9 {( Z
  n6 X$ c8 v. m$ f- F7 U! K; f
软件包: STM32Cube_FW_H5_V1.1.0
/ r2 A8 q, B; ?. J- `8 ~3 q$ n; m) c/ R. w  g
工具:' u1 P* R) W$ `2 W8 e3 D
• STM32CubeProgrammer v2.14.0
/ E' R+ ?( k0 j• Tera Term 串口终端显示
# g( p0 _  s+ ]8 L. a• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)
7 c# X; Q! K7 R! }1 D8 _/ t- \
' _) x  J" Y  AIDE: STM32CubeIDE v1.13.03 C% q8 V+ t4 p2 _1 |" ^- R

( {3 I+ ^7 e) VSTM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
" x5 U: I* q, r9 T+ I; P
" q- ~0 a( K% j: ]6 s- U8 L- Y03生成OBK并测试
& z+ g2 e  h- _  }& K' N) q4 `* s9 H
在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。
0 C8 o8 {* a3 x& O: T! |$ K; ]: e  h+ ~. \" S$ `2 E
3.1. 生成 DA OBK 文件和密码文件/ k* k! I. C% c8 X( Y# Z
打开 TPC 工具。8 ^1 _  c2 q% i8 j8 O# D/ M
& l1 h, l9 O; _& Q- g
微信图片_20240229145312.jpg ' S- s" U0 G& j# G7 j$ \" z& X8 \
$ A0 O+ Y! P% D3 L  c) E  N( U
左边选择 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 文件 :; i7 }0 m* P) V" f( K$ ~  O7 e
+ `# v" n0 s  F# a5 P% F4 n" f& t! @
微信图片_20240229145315.jpg + o! ]+ b4 ]) D2 F* a

* Z2 x' F' b, {" D. L' _如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。. q% ]; o3 C. h6 f& i+ y  O. d0 G
7 S8 Z3 z. ~8 ?; V; y, {! s
3.2. 预配置 DA(provisioning)- \! Z) J% A% b4 b9 T) a
接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。
2 c4 g0 F$ d  A$ q" R
5 ?3 ^# {2 _4 @* j  {& @1 M+ w9 `
微信图片_20240229145211.jpg
) v# Q/ V1 W. x8 R$ b; T+ L
" u  K$ ~  O# U然后将 product state 配置为 provisioning 状态 :
; u) ^) N' V$ v0 h, V8 c1 K, ~4 O2 `7 U: W' q- J; C
微信图片_20240229145207.jpg
' _& _. U# f0 w2 _2 X# I7 h' e- b, b% F4 _+ D% K1 x- d
然后使用 STM32CubeProgrammer 进行预配置 :
  G/ C+ j5 |6 k8 ~* Q4 E, W  `
1 C4 U. O$ {+ f3 b; V
微信图片_20240229145202.jpg
4 E& x/ l; E2 a) [, _3 U9 U0 F+ m. C% |0 P0 a0 Z) W% B
如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…
! E5 A$ B. r9 W! |
/ V, T& c9 L; A0 A
微信图片_20240229145158.jpg ( L( r. n. |% e6 U0 G3 {9 x* V
, R% p$ h3 B# I2 e  U
结果将弹出对话框提示预配置成功。
' G2 Z  T. G& p& x1 Y/ _1 w! H( h$ c5 B+ R& z0 d1 W" `
3.3. DA 回退2 f1 o1 O) F: f$ v  J" G0 G" s
接下来我们直接使用密码进行 DA 回退…1 j4 z& s7 H, U& I3 ^
  V9 p" K- \7 }+ c# `" r
微信图片_20240229145155.jpg
) ?# p0 i5 \! O" X4 C( a5 ~: @
8 g$ i9 |1 q1 [; a* z' V如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…$ A6 e( H. F/ o5 K& |

& D" ?8 d8 y/ u
微信图片_20240229145152.jpg
9 _& T1 k1 u- j2 w  e9 U0 K; B- x6 `7 k) P
如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin
/ m+ v0 t4 O2 X: F1 F! |4 P% {( d$ |: t" f" X
然后点击 Full Regression 按键…
. ^" Q5 x0 O: F* o4 E4 ?' S6 i, V; u: @" \6 a
微信图片_20240229145147.jpg
, F. Q0 K! d: a; G. X* L! r4 B# l' {% q/ w% k/ C
如上图所示, 成功时会弹出提示对话框。" O( r5 R, J6 l1 d- t4 w
) r7 v& x: O. ?2 n8 D6 ?1 c
这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。+ ~2 \6 y8 m. r+ X7 C2 q7 C! m4 g

* q  ?$ V& d, n& w' G5 _/ i04烧录程序再次测试
! q! s& G' i& C, t- o( Y" l接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。8 u! \& c- w, R* |1 @' Q0 I4 o

3 w4 P6 @8 F% r+ `- }, y在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。

* w# B' i% d; Q: [* r- ~- M6 G- C* M) t- s) J# s1 J: U% v

: ?1 K& @( @7 C转载自: STM32单片机
1 e* v2 ^1 j& e" x如有侵权请联系删除
3 r4 ~$ E- T: G, s( P: r3 G0 }! ~2 r- @1 O4 O, z
收藏 评论1 发布时间:2024-2-29 14:59

举报

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

开发板和不错呀~~~

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版