一、启动模式#
stm32根据两个boot引脚有三种启动模式。分别是
- 从FLASH启动,是直接运行代码常用的模式。地址是0x08000000,被映射到0x00000000
- 从SRAM启动,是进行调试常用的模式。地址是0x20000000,并没有映射到0x00000000,需要在应用程序初始化代码中重新设置向量标的位置。
- 从系统存储器启动,一般是运行芯片厂商烧写好的固件,对stm32来说是串口下载的固件。地址是0x1FFFF000,被映射到0x0000000。
二、硬件复位#
1. 复位后的流程#
- 只要是复位,硬件就会自动按照启动模式进行内存的映射。例如从Flash启动,会将0x08000000映射到0x00000000。
- cpu上电后处在SVC模式,并且从0x00000000处开始执行代码。
- 正常的启动模式会从0x00000000读取数据,这里存放着中断向量表。中断向量表的第一条是SP地址,