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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言8 t+ T6 V/ b3 S, r
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。; J* V8 u; \; F: j) a) w0 F$ Y, ?

2 U# d* A, N+ \+ w6 `( k8 r由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。
0 m5 }1 H4 H# R) {6 Y/ l
( q9 J, J$ ]2 |( `! i; e) Z' l1 ]因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。. a' Z7 g! r. o5 i8 F2 Y9 a7 J7 }
, D4 e8 L# M& @' i% O$ C  K. B
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。
$ ^- n! w2 s+ R+ F
6 E" S' p4 q) y7 ^02准备工作8 l" o5 x& J5 u- D

0 u9 p% r, ]  M. _
微信图片_20240229145309.jpg
; c& @8 k6 c- K& y7 k5 f2 |7 g: v& G* I) g# l
软件包: STM32Cube_FW_H5_V1.1.0
# j! S* a) m2 {3 f6 B/ I! @
! }; _& }1 ]1 V# W, E* L4 W, {工具:
3 ~9 c; ]3 z$ p: Y& ]1 u! Q& I• STM32CubeProgrammer v2.14.0# M# j6 i$ q. P" }- m
• Tera Term 串口终端显示2 L& Y  A! Q% V
• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)
5 s% k# M4 [% _8 I6 B# p
* J2 w0 t' h9 F$ j7 yIDE: STM32CubeIDE v1.13.0- B  `" x$ K3 ?$ G

/ y4 d$ M. A7 Q; n% ^STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
" H, B1 n- Q" I
- }9 r+ ?% h/ @8 B' r( e0 [7 [03生成OBK并测试

% g' R* ~5 s# D/ X* E. A在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。$ ~2 y  T. Y1 W

' ]( _1 z# C( t, S' s$ H; ~  _4 k3.1. 生成 DA OBK 文件和密码文件
$ U$ H6 Q3 n* b! v5 g$ i打开 TPC 工具。+ N4 U# J. u2 ]4 C* D8 F

* c+ o+ D5 U  C9 a8 E
微信图片_20240229145312.jpg % m) Q9 J" Q% y. Z

" `7 i, R2 l) g  I左边选择 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 文件 :
- \4 F, v$ O1 H; j' Q
: Z! g& z/ o* v
微信图片_20240229145315.jpg 5 O% G& p! s, G; [6 Q: L
; @' }6 ~: _2 P3 O' T5 l. z. [
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。
+ V1 j5 z$ Q& B& C. i
) Z4 Q% _& B5 O  _' D: l3.2. 预配置 DA(provisioning)% q0 N( R4 |* T0 W' n# X( U' C: P* e
接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。  x) T5 L6 c) W& `  |  v: G! J; ~

! m/ Z6 m! B$ r  N/ X
微信图片_20240229145211.jpg , o+ c+ {+ E: n

2 J& |' y( n# w( l; t- H- Q% l然后将 product state 配置为 provisioning 状态 :# ]7 D0 W1 f! D1 C# R5 A5 a" ?

3 L9 E1 j6 J! F5 ^
微信图片_20240229145207.jpg
5 L1 B$ w$ Z6 b& O
" g4 I7 R6 e- `9 n. Y' ?然后使用 STM32CubeProgrammer 进行预配置 :$ {" ]' c( \8 s  U

; O6 I- y8 r: X+ o1 A) J9 e  H
微信图片_20240229145202.jpg
2 P, f7 c3 B" w% P4 t
) ~2 r* M% t( P" U3 p如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…( p- z8 @& |- R0 F, E2 _

5 Z+ V" R2 E8 G: _
微信图片_20240229145158.jpg ) s4 Z% {7 s* u3 F0 V4 O
: O& ]) y. w6 @. X) D
结果将弹出对话框提示预配置成功。$ u9 P" g" W% a
) P* u" q( }- l/ C+ ^6 q
3.3. DA 回退
, _2 ~0 N: F# p# r+ G% U* C  |; d接下来我们直接使用密码进行 DA 回退…
% Y0 T* s& s2 n+ @& ~) L0 v
! ~* r+ y7 d8 a8 c9 t
微信图片_20240229145155.jpg 4 v/ a$ [& e+ ^

" b/ w; f; V$ n/ O如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…
, t/ p( h# C( I6 e' c9 B1 @4 l3 [3 ~5 `& X; O* V# w" a
微信图片_20240229145152.jpg
* {6 f% R/ h" T' C
. \. N' h& [2 E" p$ W如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin
- A3 K6 t2 T8 S4 G2 L/ @3 V; m/ |) P7 Q' \+ P- K
然后点击 Full Regression 按键…
6 t. I5 L  G3 N7 i' F5 ~5 Y0 U1 }! [9 I, V) Y! j
微信图片_20240229145147.jpg
  X$ u* B) n" C- Z% z' L' A( {
+ ]1 i% C' U+ `' e/ F如上图所示, 成功时会弹出提示对话框。  k' w; ?3 K$ _- v$ H' C. X7 W3 ~

0 n: v# \7 H0 K0 G* E& H$ }这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。5 r( r5 U9 q4 R6 G8 A, _+ @: Z2 R: q
- ]; U  K9 ?. l+ {) w! p. T" U
04烧录程序再次测试, o( Q& N5 U; L8 y
接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。
" R0 P9 Z1 E3 G, o2 T
* d6 u* M  ^* p% _9 L+ P# w在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。

" g  _0 ~( U: O4 I  z7 _$ I' H5 v( q5 u6 k7 E  |4 K
2 W0 d. {: v+ |7 y2 W9 Q
转载自: STM32单片机  h4 v% x8 O6 K& e3 D+ W
如有侵权请联系删除( C$ w  N- I4 |% {
: r$ R/ _) H8 e& }8 M
收藏 评论1 发布时间:2024-2-29 14:59

举报

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

开发板和不错呀~~~

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版