
前言 自举程序存储在 STM32 器件的内部自举 ROM 存储器 (系统存储器)中。在芯片生产期间由 ST 编程。其主要任务是通过一种可用的串行外设(USART、CAN、USB、I2C 等)将应用程序下载到内部 Flash 中。每种串行接口都定义了相应的通信协议,其中包含兼容的命令集和序列。本文档适用于表 1 中所列产品。这些产品在整个文档中称为 STM32。& J0 v* q" t5 v8 N ![]() 0 V8 ]% G' |. d# Y( X 自举程序的主要功能如下:* L2 i# L* r& J* `! S* K • 使用嵌入式串行接口按照预定义的通信协议下载代码 . • 可传送并更新 Flash 代码、数据和向量表部分。 本应用笔记介绍了自举程序的一般概念。说明了使用 STM32 器件的自举程序时支持的外设以及需要考虑的硬件要求。不过,支持的每种串行外设的低层级通信协议规范在单独的文档中进行了介绍 (参见第 1 节:相关文档)+ b- o) x: \) k1 Z! E. U 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 产品。 当读出保护 Level2 激活时,任何情况下 STM32 都不在系统存储器上自举,自举程序不能执行 (除非从 Flash 用户代码跳转到它)。 表 2. 自举程序激活模式 ![]() 除了上述模式之外,用户可通过从用户代码跳转到系统存储器来执行自举程序。跳转到自举程序之前,用户必须: • 禁用所有外设时钟 • 禁用所用的 PLL$ M* u2 d2 w! m- E • 禁用中断 • 清空挂起的中断 通过离开自举程序激活条件并生成硬件复位,或使用 Go 命令来执行用户代码,可退出系统存储器自举模式。 注: 如果选择执行 Go 命令,则在跳转到用户应用程序之前,自举程序使用的外设寄存器不会初始化为默认复位值。如果要使用这些寄存器,应在用户应用程序中对其重新配置。因此,如果应用程序正在使用 IWDG,则必须调整 IWDG 预分频器值来满足应用程序的要求 (因为已将预分频器设置为最大值)。 3.2 自举程序标识 根据所用 STM32 器件的不同,自举程序可支持一个或多个嵌入式串行外设,用来将代码下载到内部 Flash 中。自举程序标识符 (ID) 可提供有关支持的串行外设的信息。3 Q: A$ F/ a: k. H6 n; d* \ 对于给定的 STM32 器件,自举程序通过以下各项标识: 1. 自举程序 (协议)版本:自举程序中使用的串行外设 (USART、 CAN、 USB 等)通信协议的版本。可使用自举程序 Get Version 命令检索此版本。 2. 自举程序标识符 (ID):STM32 器件自举程序的版本,以 0xXY 形式的单字节代码表示,其中: – X 指定器件自举程序所用的嵌入式串行外设: X = 1:使用一个 USART4 ?# L% G' \& E/ V X = 2:使用两个 USART6 S9 Y* S5 l# h5 p( z& E X = 3:使用 USART、 CAN 和 DFU X = 4:使用 USART 和 DFU X = 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 X = 8:使用 I2C 和 SPI X = 9: 使用 USART、 CAN、 DFU、 I2C 和 SPI X = 10:使用 USART、 DFU 和 I2C X = 11:使用 USART、 I2C 和 SPI X = 12:使用 USART 和 SPI X = 13:使用 USART、 DFU、 I2C 和 SPI" m0 n. N2 s8 f$ e- d. J " e: u6 v$ s8 ?+ O3 L0 K5 @ – Y 指定器件的自举程序版本 下面以自举程序 ID 0x10 为例。这表示仅使用一个 USART 的器件自举程序的第一个版本。 8 X/ ` X* [- T% g* K7 N: Y- h 自举程序 ID 编程在器件系统存储器最后一个字节地址减 1 所对应的空间中,可通过自举程序 “Read memory” 命令来读取,或者通过使用 JTAG/SWD 直接访问系统存储器来读取。 下表提供了有关 STM32 器件嵌入式自举程序的标识信息。 ![]() ![]() ![]() 完整版请查看:附件 |
CD00167594_ZHV23.pdf
下载3.84 MB, 下载次数: 2
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南