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

STM32WB系列的ST固件升级服务

[复制链接]
STMCU小助手 发布时间:2022-7-10 18:00
引言1 [1 H# P. g& b- p
本文档介绍了 STM32WB 系列微控制器可用的固件升级服务(FUS)。这些服务由位于嵌入式 Flash 存储器安全部分中的 ST 代码提供,可供通过用户 Flash 存储器在 Cortex®-M4 上运行的任何代码使用,也可以通过嵌入式 Bootloader 指令(也在 Cortex®-M4 上运行)使用。
  R# Q  `5 o1 x" K! T0 j
0 f" N3 x9 s7 g. h4 Z1 概述
8 }( I0 S% n/ e/ X. ]本文档适用于基于 Arm®的 STM32WB 系列器件。
* Z* W, Y& p9 n* }( t$ {4 Y0 H- S0 n: y4 I- v$ a) g
提示
1 x( E. I( \& q1 FArm Arm Limited(或其子公司)在美国和/或其他地区的注册商标。2 @! g( k  C5 E! p0 V+ h( u. U, H; n# z) h

. p  a$ g  Q6 S& W8 V8 @
. z% Q( _+ v- s& G: f
1.1 固件升级服务定义% I- u! e& s# a* u- t
FUS(固件升级服务)是在 STM32WB Cortex®-M0+上运行的固件,并提供以下功能:
& Z" v& k2 B3 b! w7 L8 R' |1. 安装、升级或删除 STM32WB Cortex®-M0+无线协议栈:
( B7 j2 E! b- i  ]. \仅由 ST 加密和签名
- V! o, z8 D- P. c+ _0 f. n. T或者,如果需要,客户还可以进行额外的双重签名2 m, h; z& u, W/ |
2. FUS 自我升级:# f- t% b3 p1 B. Y2 Q
仅由 ST 加密和签名
: B& H/ g2 M! k# ^6 \或者,如果需要,客户还可以进行额外的双重签名
* G& G7 _* G- c6 ?; ]3. 客户验证密钥管理:
! U: k6 r8 G1 K% x) y3 }用于对映像进行双重签名0 L$ m$ [1 q3 C. r' l0 g3 h# R
安装、更新和锁定客户验证密钥
# L3 q4 H" W- k! e) n! u  E4. 用户密钥管理:
# _: {" D0 [" n$ w7 K* {6 N& p存储客户密钥
! ~1 j+ b: u5 A* v5 O9 s& X+ L主密钥8 R' Z, C0 I$ P: q9 x, W2 e! P3 D+ D
简单的明文密钥: W# L9 G  N! ^! k, n) m0 m: D" a
加密密钥(通过主密钥)
8 g' x5 c5 B" v/ s在安全区域中,只能通过 Cortex®-M0+代码来访问。, H4 @! X8 Y" p$ J: V" E9 A
以安全模式(Cortex®-M4 无法访问密钥)将存储的密钥(简单或加密)写入 AES1(高级加密标准)。, K: D% E) q5 J6 X3 U1 p
锁定存储的密钥,以防其在下一次系统复位之前被使用3 [7 N  w; z( ~# _( p1 s) |0 w
从 AES 中卸载之前加载的密钥,以防被其他应用程序使用
+ m; z4 D1 K; P8 A. ~% i密钥宽度:128 或 256 位
' X# c, h1 ]! y$ J7 U3 P2 ^9 U8 h' \最多 100 个用户密钥(通过主密钥或明文密钥加密)和 1 个用户主密钥
3 Z" k, q* a% B& H$ ?5. 与 Cortex®-M4(用户代码或 Bootloader)通信:
  m- `, p# {/ Q! B. F5 E7 F& E  U通过 IPCC 指令和响应模式(与无线协议栈模式相同); M0 I5 n9 X/ y9 ?5 p$ ^# _* w
STM32WBBootloader 已支持的指令(在 ROM 中)- X/ ?9 F0 F8 p5 e# S

/ c# I; d3 }3 H$ I+ @8 n# f) g1.2 FUS 版本管理和识别& ?* L- N' L$ j/ ]! W
用户需要读取 SRAM2a 中的共享表内存来识别 FUS 版本,详见第 1.6 节 共享表存储器使用情况和第 6.1 节 共享表的使用。
6 D  J. y; p: }# d& ~3 m6 bIPCCDBA 选项字节指定的 SRAM2a 中的第一个字是“器件信息表”地址。该表(如表 5. 器件信息表所描述)在偏移0xC 处包含 FUS 版本,版本信息以四个字节编码。通常情况下,如果 IPCCDBA=0x0000,且@0x20030000 包含0x20030024,则 FUS 版本为@0x20030030。+ J- `3 C5 a% j- ]% Z; z- y
FUS 映像的安装遵循映像(二进制版本)说明中规定的条件。
) q  p* M/ B3 o8 E! z. p1 r9 z( y" |7 C7 G, ~

8 U6 G4 f! \8 b, V6 H N}49_SE{3}1[L{L]~)@K%)N.png
1 O. [) N4 }2 m, a* h0 G1 Q! o' \* {$ z* r, c. j" Z3 u
1.3 如何激活 FUS
2 d+ g& F) S- c" x9 sFUS 在 Cortex®-M0+上以及专用于 FUS 和无线协议栈的受保护 Flash 存储区上运行。有两种可能的情况:' Z' o2 K* w9 C' P0 j
( G3 ^! n& p5 c" k+ m: a' q

1 P8 e# Q8 n7 t% h `3QDS0W)Q_V_)1PJ7Q$OS6H.png
9 s% P& ]1 L; d) y1 S$ X& L( Y: X* G5 A
: w. P: U) F! z
为检查 FUS 是否正在运行,可使用以下选项:
( k& z. }0 _. _; V8 P* x  }9 g) C发送一条 FUS_GET_STATE 指令,并检查返回的状态。如果为 FUS_STATE_NOT_RUNNING,则 FUS 未运行。
; k& p3 a) o% j, e检查 SBRV 选项字节值:
1 V& g' y! B- ?) l' @  J6 }, g. g如果是 0x3D800(用于 FUS V0.5.3)或 0x3D000(用于 FUS V1.x.z),则 FUS 必须运行
( z( q! }% e2 F( o( ], h如果与 0x3D800(用于 FUS V0.5.3)或 0x3D000(用于 FUS V1.x.z)不同,则 FUS 不运行
3 X' j) O6 T. G& h/ u; M: @发送无线协议栈指令:
  b7 I, S. v  S! P; z: e如果得到确认,则 FUS 未运行
+ z. G; F  W6 D( z如果未得到确认,则 FUS 正在运行: N8 t! ]; u7 `8 X, c2 u. _
读取共享表信息:! K! b# P3 w. p# U& \9 H1 X* X
读取 IPCCDBA(在选项字节中),以获取 SRAM2a 中的共享表起始地址
7 m9 W, Y; o7 I3 O/ l8 `+ C: ?获取器件信息表地址8 F* {2 {9 T* Y: ]$ Y( C) ~
读取“最后的 FUS 激活状态”字段
! m' l* r& S# ]* Z+ h% ^6 e' c" H, t0x04 意味着无线协议栈一定正在运行
. ^6 Q# I$ K# \其他值意味着 FUS 一定正在运行1 D' ^! Q% i# ^( \2 t

! N, h% N) G( q0 d
1.4 存储器映射* \5 _6 W( c  H
FUS 在 Flash 存储器中有一个专用空间,该空间取决于 FUS 大小。它还使用 SRAM2a 和 SRAM2b 中的专用空间以及 SRAM2a(共享表)中的共享空间。由选项字节定义 Flash 存储器 SRAM2a 和 SRAM2b 中的专用空间大小。. o% b4 T$ S# S9 V' ?8 ^! p% m7 H
若需更多信息,请参见产品参考手册。4 ]  c0 i: k% a4 o
与无线协议栈(如果安装)共享专用 Flash 存储器和 SRAM 区域。但在给定时间,只能在 Cortex®-M0+上运行FUS 或无线协议栈。) |: Z+ Q# _6 g! J+ N0 {
8 Q* }0 @# M: q# B8 e3 Q

9 X' j) W5 l" d/ R (WR50]WW8}DUQCF(B6VLVJ2.png
- N" c; v0 Z  o  ~! n; p" u6 E! s/ x3 }; B( N7 P/ ]% g2 G
V[V20XPQ`G{4H4CM0R}4.png
  S  l" Y9 Q+ y. J) O7 o* t
4 o+ m5 ^( c5 h; r% R1.5 FUS 资源使用情况3 Z6 b  l* o* t, W' u) R, G% [- v" m
FUS 仅配置/使用表 3 中列出的资源。
2 K/ g2 s/ D" [  k  S/ q  A' w在使能 Cortex®-M0+之前,必须通过 Cortex®-M4 应用程序来配置 RCC(复位和时钟控制)、Flash 存储器、PWR(电源控制)以及 STM32 正常操作所需的所有必要组件(这在启动时由系统 Bootloader 自动完成)。; x* \) x1 t2 _$ X& O

# u  w. B0 d% t
$ V$ |3 q& d* s, Y6 X$ l
({8LHFPQB))2MT97Q[2JNIT.png
9 R0 g. ]1 e0 _& E: M; Q! n
8 {5 Y; d; q0 i& R! J1 e1.6 共享表存储器使用情况! L# |' Q8 t9 v( C9 c7 I. L9 t
通信数据缓冲区由查找表指向,其地址由选项字节决定:IPCCDBA(IPCC 邮箱数据缓冲区基址)。该地址提供了缓冲区表指针的基址:如构建无线应用(AN5289)中所述。' k3 `+ k' F2 J
如果 IPCCDBA 指向一个不适合所有表指针的地址(即(SRAM2a_END_ADDRESS -SharedTable_BaseAddress)< SizeOf(SharedTable)),则 FUS 必须完全放弃使用共享表,因为 FUS 无法进行通信和发出指令。
7 O- N% d- }& Y+ o3 I  X用户应用程序必须正确设置共享表基址,否则,它必须停止 FUS 服务初始化。
4 G, r$ T7 I- P9 B
7 {+ n: {# b# x( U0 M! Q

) B2 a' k, N. n/ b2 e 2P6O3@WR7D3UHK``H2_NJHU.png
0 B3 i1 F4 T2 ^7 `9 B5 G) X$ q: H9 @: n

: Y* m  S/ `# {4 R4 YFUS 仅使用两个表:2 ?1 T! j3 S6 |* r$ h, U5 W9 B$ E6 J" H
器件信息表:该表允许在启动时提供从 FUS 到 Cortex®-M4 用户应用程序(或 JTAG)的有用信息(启动时由FUS 写入的内容)。
, v0 Y; F! `3 v2 x7 @: S系统表:该表允许在 FUS 和 Cortex®-M4 用户应用程序之间交换指令和响应。 3 W: G" S# y4 U- e0 w* u6 |6 X

8 F8 x. U9 k* }, U. q8 w9 @! E% r" e0 Y' x7 Y

( b( K6 k$ V/ ~

AN5185_DM00513965_ZHV4.pdf

下载

1.67 MB, 下载次数: 5

收藏 评论0 发布时间:2022-7-10 18:00

举报

0个回答

所属标签

相似分享

官网相关资源

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