一、STM32启动流程
在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值被锁定。用户可以通过BOOT1和BOOT0引脚状态,来选择启动模式,并将相应模式首地址映射到启动空间(0x0000 0000)。
二、BOOT引脚说明
1、主闪存存储器:芯片内置的Flash,用户程序存储空间。
2、SRAM:芯片内置的RAM区,就是内存。在调试状态下可以执行程序。
3、系统存储器:芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。启动的程序功能由厂家设置。
三、总结
STM32上电或者复位后,代码区始终从0x00000000开始,三种启动模式其实就是将各自存储空间的地址映射到0x00000000中。三种启动模式对应不同使用场景:
1、主闪存存储器
FLASH掉电不丢失,用户可以将代码存储到FLASH中。从FLASH启动就可以执行用户烧录好的代码。
主闪存存储器启动为正常的工作模式。
2、SRAM
SRAM掉电丢失,在调试状态下,程序直接运行在SRAM中,调试结束后,程序丢失。
SRAM启动主要用于调试。
3、系统存储器
系统存储器中保存着芯片厂商的bootloader,主要用于烧录程序。程序烧录完成后想要启动烧录程序,必须将BOOT引脚配置为主闪存存储器启动。
系统存储器启动主要用于程序更新。
注意:从系统存储器启动 只能下载程序,不能启动程序
以上内如主要参考《STM32参考手册(英文)》中3.4章节:boot configuration。