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

STM32 微控制器系统存储器自举模式

[复制链接]
STMCU小助手 发布时间:2022-7-25 16:29
前言
5 ]# E$ C6 H; a+ d+ ^5 v6 Q自举程序存储在 STM32 器件的内部自举 ROM 存储器 (系统存储器)中。在芯片生产期间由 ST 编程。其主要任务是通过一种可用的串行外设(USART、CAN、USB、I2C 等)将应用程序下载到内部 Flash 中。每种串行接口都定义了相应的通信协议,其中包含兼容的命令集和序列。本文档适用于1 中所列产品。这些产品在整个文档中称为 STM32。& J0 v* q" t5 v8 N

: I9 {0 j* n+ ?& w2 H# `& R
FGGRUDGN%NBE884IN42~4)O.png * S4 d8 H! T' A3 ^* D  }
0 V8 ]% G' |. d# Y( X
自举程序的主要功能如下:* L2 i# L* r& J* `! S* K
• 使用嵌入式串行接口按照预定义的通信协议下载代码 .
# a" U* R/ j( W7 k1 ]• 可传送并更新 Flash 代码、数据和向量表部分。
# D; V. O7 F( e- s$ ]本应用笔记介绍了自举程序的一般概念。说明了使用 STM32 器件的自举程序时支持的外设以及需要考虑的硬件要求。不过,支持的每种串行外设的低层级通信协议规范在单独的文档中进行了介绍 (参见1 节:相关文档+ b- o) x: \) k1 Z! E. U

6 l4 |0 {1 k. T4 [7 [3 通用自举程序描述9 S5 X) g$ `8 b2 w
3.1 自举程序激活( h* [( c0 ?$ `0 s- N+ D' b
自举程序通过应用2 所述模式之一激活。% J2 g0 R7 ]5 ?/ M0 `! K
如果 Boot From Bank2 选项激活 (针对支持此功能的产品),自举程序执行 Dual Boot 机制,如图 “STM32xxxx 的双存储区自举实现 ” 中所示,其中 STM32xxxx 是相关的 STM32 产品。" V1 e' G7 Y; ~. L/ F+ e
否则,执行自举程序选择协议,如图 “STM32xxxx 的自举程序 VY.x 选择 ” 所示,其中STM32xxxx 是相关的 STM32 产品。
% ?: e- t0 c' c' p当读出保护 Level2 激活时,任何情况下 STM32 都不在系统存储器上自举,自举程序不能执行 (除非从 Flash 用户代码跳转到它)。
  v! s6 Y+ q5 G, [1 x! k6 w( M
! N8 a  M; Z: ?; L; @$ T2. 自举程序激活模式
4 j# i3 @' F9 V& o PJS%T6E(APK9AQUH1XN]S6T.png
0 P) T, P  d6 O; |
7 w) `( K( w0 k& w' O; E2 |- i! w除了上述模式之外,用户可通过从用户代码跳转到系统存储器来执行自举程序。跳转到自举程序之前,用户必须:
1 f5 P/ C& |2 G, W+ o2 v禁用所有外设时钟
1 d; r9 u. n9 X. A3 g; ?5 u7 l禁用所用的 PLL$ M* u2 d2 w! m- E
禁用中断
$ R0 m, @* `, _2 B( C, M清空挂起的中断
/ \6 @, X' r3 n$ M2 e: l, W通过离开自举程序激活条件并生成硬件复位,或使用 Go 命令来执行用户代码,可退出系统存储器自举模式。
( ]# a9 A  P; p, \/ r3 H注: 如果选择执行 Go 命令,则在跳转到用户应用程序之前,自举程序使用的外设寄存器不会初始化为默认复位值。如果要使用这些寄存器,应在用户应用程序中对其重新配置。因此,如果应用程序正在使用 IWDG,则必须调整 IWDG 预分频器值来满足应用程序的要求 (因为已将预分频器设置为最大值)。
3 w1 ~5 b+ }$ n$ y0 J$ k3.2 自举程序标识
5 c: b6 f( z1 i" S, v根据所用 STM32 器件的不同,自举程序可支持一个或多个嵌入式串行外设,用来将代码下载到内部 Flash 中。自举程序标识符 (ID) 可提供有关支持的串行外设的信息。3 Q: A$ F/ a: k. H6 n; d* \
对于给定的 STM32 器件,自举程序通过以下各项标识:
( i( h* h# V+ t; [- ]1. 自举程序 (协议)版本:自举程序中使用的串行外设 (USART、 CAN、 USB 等)通信协议的版本。可使用自举程序 Get Version 命令检索此版本。
  W5 y+ g5 C2 D( C/ u( j2. 自举程序标识符 (ID):STM32 器件自举程序的版本,以 0xXY 形式的单字节代码表示其中:
3 x8 d2 ]# t" \  }1 M+ p. D; HX 指定器件自举程序所用的嵌入式串行外设:
- R2 q" G% t2 G, kX = 1:使用一个 USART4 ?# L% G' \& E/ V
X = 2:使用两个 USART6 S9 Y* S5 l# h5 p( z& E
X = 3:使用 USART、 CAN 和 DFU
4 r: r/ O" E, _  ?- l! I' |) c5 p6 BX = 4:使用 USART 和 DFU
" o, x, t3 i9 e& Z8 {3 cX = 5:使用 USART 和 I2C# Q- {/ K& f+ q/ M1 T4 n8 h# n
X = 6:使用 I2C ( t+ c/ L" g  W! M3 d
X = 7:使用 USART、 CAN、 DFU 和 I2C
- s; P* |; O6 vX = 8:使用 I2C 和 SPI
& B4 \6 _) e0 j  PX = 9: 使用 USART、 CAN、 DFU、 I2C 和 SPI
5 o! U* F/ b9 t, s# \& YX = 10:使用 USART、 DFU 和 I2C
9 _6 F  ^/ a. U' Q" k6 XX = 11:使用 USART、 I2C 和 SPI
' M7 f! k# \. W. xX = 12:使用 USART 和 SPI
# _% b. u9 w0 I! W" M. jX = 13:使用 USART、 DFU、 I2C 和 SPI" m0 n. N2 s8 f$ e- d. J
" e: u6 v$ s8 ?+ O3 L0 K5 @

  b. Q5 I# D+ ], MY 指定器件的自举程序版本
6 }6 }+ v1 F1 h8 e( r下面以自举程序 ID 0x10 为例。这表示仅使用一个 USART 的器件自举程序的第一个版本。 8 X/ `  X* [- T% g* K7 N: Y- h
自举程序 ID 编程在器件系统存储器最后一个字节地址减 1 所对应的空间中,可通过自举程序 “Read memory” 命令来读取,或者通过使用 JTAG/SWD 直接访问系统存储器来读取。
7 {8 f6 r* w# x1 |下表提供了有关 STM32 器件嵌入式自举程序的标识信息。
8 v# e8 R0 F) Z7 ~1 R* j: }* Y
& W" T: F4 U6 \* I 6N35J]DVW[KVQLK%M{}M$~G.png " N( g8 T- y% ^
4LZS(ODM8KME8P5_17{]I99.png 4 J0 u# m0 m) [) S! d2 C( p8 B
QEA[`FKUTL@~1~TLCBB]NG7.png 5 t. b9 k; C6 a3 I

4 w: R% K0 z( K完整版请查看:附件
. ~" M9 I' D3 Z
0 h+ J  e0 y. Q, {
]T[IR]ITALNK~3}QYPI9D`4.png

CD00167594_ZHV23.pdf

下载

3.84 MB, 下载次数: 2

收藏 评论0 发布时间:2022-7-25 16:29

举报

0个回答

所属标签

相似分享

官网相关资源

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