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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言. k8 Z/ o) p( q6 a9 K/ m3 C7 H
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。
& @+ K) C, i3 K/ a: @( 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 回退。
; o/ U. |( }. E/ C* W7 X. n5 G: c
9 Q& S$ n! f/ O此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。9 D5 b( X3 x+ w" ?# k

* g7 w* x" R; `3 R! A& s3 K9 R02准备工作
# r, X) e9 D% H7 P: |& u9 }* }/ _" Q+ B/ @
微信图片_20240229145309.jpg % w+ T4 C+ V4 j  }. T7 C
( s( `) B7 K% M  T# N  ?$ F* N; y
软件包: STM32Cube_FW_H5_V1.1.0
& l, ^0 G$ H  m6 G$ ^1 i/ V. M3 |1 k& G# F9 q" m2 |- V
工具:
/ U) n1 u/ ^+ E$ Q3 t& z+ s• STM32CubeProgrammer v2.14.0
0 d% Z! `5 C, |# I& R. l• Tera Term 串口终端显示0 S5 ~3 G( `  [! r2 @) W/ L
• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)
; F! O$ p8 l% ~) z% S
2 l5 ]+ m4 y& V/ j- Z- @. _) oIDE: STM32CubeIDE v1.13.0
' q4 \$ }4 s: B' Q0 ]" f+ c  T2 }) ?8 S& j; U& Z2 y1 v) h
STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
* x4 M4 `, e2 z, H
$ ]. s  @5 ]% U, c! B! [03生成OBK并测试

  {. o7 }# r0 ^- n/ p在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。
9 u2 P9 |0 f* }/ k: e6 w% n2 i5 u# a6 J% N
3.1. 生成 DA OBK 文件和密码文件
$ Y: d0 R5 Y. G3 c, S打开 TPC 工具。) \/ a; E; X" K' ~
4 U3 u) V+ E; H0 q$ c' P# L, E
微信图片_20240229145312.jpg . [3 Z& j% B2 j! z: N% m. F1 t. Q

/ f3 g$ H+ g" U0 P  n左边选择 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 文件 :
+ n! r/ W2 Z; _8 w' [' r& l+ {) ^/ v  j4 g3 p% t
微信图片_20240229145315.jpg ; h5 Q( T& N$ w" v, p
% {1 ]% p; a7 t( q) d
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。
/ P1 m8 M/ D9 @+ t' Y2 ?& \: i5 E7 i" d0 ^, c6 Z
3.2. 预配置 DA(provisioning)
5 c' S. A2 R1 c接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。
" O$ y% _; u0 l1 F' ]4 U2 X; q7 o& b' n+ A6 e) v, x& U% S1 I
微信图片_20240229145211.jpg
5 P8 X/ |- M1 r7 q* E! s$ Q
0 b: J: y) G, y- p: U$ ]. J然后将 product state 配置为 provisioning 状态 :7 Z- T) J5 b6 ?$ _3 W
" F# L% a& Q, [  p& ^
微信图片_20240229145207.jpg 5 S) }9 ?, p$ c: o. s

: ?5 O* |+ `% [% W3 j; s然后使用 STM32CubeProgrammer 进行预配置 :5 z  C( c3 Y/ k5 N2 a: O+ a
$ J4 w. q* \! e, c, e! y
微信图片_20240229145202.jpg
, ~, u+ W8 {6 y" K1 T0 c6 F, q
  t9 R. w3 ~/ M6 g% v# q- M# ?如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…
9 f) u" J$ }( t( r! E
% F6 q/ [" K5 E: ]8 e* D
微信图片_20240229145158.jpg 8 O0 v# ]* I% i0 L
( O, S& C: T7 k( l6 e
结果将弹出对话框提示预配置成功。, l6 x* q6 o4 W: [9 l% d

! U6 p" H7 s+ ~; s% w9 W3.3. DA 回退
6 m# `/ M/ t% A/ L& G! |! G1 K接下来我们直接使用密码进行 DA 回退…
! K8 [/ P1 y% A8 |  F! X" x4 u& \/ Y6 q; V
微信图片_20240229145155.jpg - W: u" x7 ]7 ^* u' [& N

/ r" r0 S6 V7 h! t- `0 _4 I6 u如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…
/ N- Y4 L4 T6 u# X) |
' s: W8 M4 ^3 k. @
微信图片_20240229145152.jpg - `8 X% ~; u2 v! H9 l7 h7 h' t

' Q  x  v8 ~4 o* {  s4 c7 h如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin
$ n  _9 P, O. T& a* X3 H* |2 Y$ j- ^# c, |+ C5 Q4 |, |$ r# m- h
然后点击 Full Regression 按键…
! O" R( S0 F+ T6 m& l% ]2 e. }! L# K
微信图片_20240229145147.jpg
8 o3 L: q6 o6 w; g+ Y, Z, N4 \! H3 ~4 R; A* A
如上图所示, 成功时会弹出提示对话框。8 C6 H: G. g" L. U0 [' {7 u
' h) r" ]7 e" g! I
这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。
4 G  _/ W7 y1 I) l5 W, x) ^% F$ F  \& V) P
04烧录程序再次测试
* x$ I! ^& S  b接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。
) j' ~. F5 \3 d" Q' @" H' _8 p% d5 R) w# o! Z
在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。

7 _+ i& @5 E7 p
* V/ h0 E. Q7 f+ G7 @, _3 f

5 a! q( u7 E" c转载自: 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
收藏 评论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 手机版