4 启动配置(Boot configuration)
4.1 启动模式选择
启动模式由 BOOT1:0 引脚组合决定。
|----------|-----------|-----------|---------------------------|------------------------|
| 启动模式 | BOOT1 | BOOT0 | 启动存储器 | 说明 |
| 主 Flash | 0 | 0 | 0x0000 0000 - 0x0007 FFFF | 主 Flash 存储器作为启动区 |
| 系统存储器 | 0 | 1 | 0x1FF0 0000 起(容量 2KB) | 出厂内嵌自举程序,经 USART1 串口烧写 |
| 内嵌 SRAM | 1 | 1 | 0x2000 0000 - 0x2000 3FFF | SRAM 作为启动区,调试用 |
BOOT1:0 引脚在系统复位后第 4 个 SYSCLK 上升沿被锁存。
退出 Standby 模式时,BOOT1:0 引脚重新采样,启动模式随之重新确定。
启动延迟结束后,CPU 从 0x0000 0000 取栈顶值,从 0x0000 0004 开始执行代码。
4.2 启动引脚连接
选择启动存储器所需的外围连接如下。

4.3 内嵌自举程序模式
用途:重烧 Flash。
激活接口按容量档位区分:
- 低密度、低密度价值型、中密度、中密度价值型、高密度:USART1
- XL 密度:USART1,或 USART2 重映射
- 互联型:USART1,USART2 重映射,CAN2 重映射,USB OTG FS Device 模式 DFU
USART 走内部 8 MHz HSI 工作。CAN2 与 USB OTG FS 必须外接 HSE,常见 8 MHz、14.7456 MHz、25 MHz。
自举程序固化在 System memory,出厂由 ST 烧写。
这里需要注意下,使用串口下载程序时,对晶振没有要求,使用USB和CAN时,类似DFU,必须使用晶振,外部时钟必须提供以下其中一种频率: 8 MHz、14.7456 MHz或25 MHz。
对于STM32F105xx/107xx器件,如果外部HSE晶振频率不等于25 MHz(14.7456 MHz或8 MHz),则器件在与主机建立正确连接之前,将执行多个失败的枚举(包含连接/断开连接 序列)。这是由基于帧起始(SOF)检测的HSE自动检测机制引起的。(来自:https://www.st.com.cn/resource/zh/application_note/an2606-stm32-microcontroller-system-memory-boot-mode-stmicroelectronics.pdf)
串口或者USB可以直接使用STM32CubeProgrammer
can没有提供上位机工具,可以参考协议自己实现IAP功能https://www.st.com/resource/zh/application_note/an3154-can-protocol-used-in-the-stm32-bootloader-stmicroelectronics.pdf
在解释下IAP、ISP 的关系
- IAP(In-Application Programming,在应用编程):用户自己编写的 Bootloader,放在 Flash 分区中,靠它完成固件升级和跳转 APP;
- ISP(In-System Programming,在系统编程) :很多芯片(如 STM32)出厂时在**系统存储器(Boot ROM)**中固化了一段厂家 Bootloader,通过 BOOT0/BOOT1 引脚选择从用户 Flash、系统存储器还是 SRAM 启动------从系统存储器启动就进入厂家的 ISP 下载模式,且该区域用户不可修改;
工程中一般使用IAP,做加密,固件版本核对, AB版本配合外部看门狗实现防止变砖或者等等其他功能,一般不会直接使用ISP。