目录

STM32-Bootloader理解

STM32 Bootloader理解

STM32 Bootloader个人理解

stm32单片机启动时会先运行一个引导程序Bootloader,该程序可以判断单片机的启动方式,例如stm32f103单片机会利用 boot0 、boot1 两个引脚判断启动模式。判断完启动模式后,设置 SP地址 以及 PC 指针指向对应的地址。当我们的启动方式选择为从flash中启动,那么它会把我们的 PC 指针设置为 0x08000004。

当我们设置好 MDK 中的程序存储的位置后,程序就是从该路径开始保存,同时中断向量表的位置也是从该位置进行保存。

https://i-blog.csdnimg.cn/direct/27786663ab2f4c359d4c38ccec93673f.png

https://i-blog.csdnimg.cn/direct/d792879000744a16b8b59a3de28d1295.png

https://i-blog.csdnimg.cn/direct/a3b30a3a37bc4feabdd4e9a802638ffe.png

因此从 bootloader 退出时执行启动文件,PC = 0x08000004,会执行中断向量表中的复位中断程序,由复位中断程序跳转到我们的 main 函数中,从而进入到 c 的世界。

若是我们设置 MDK 的 flash 地址为 0x08001000 时,那么我们的中断向量表也会设置到 0x08001000 ,复位中断程序地址在 0x08001004 中保存;从 bootloader 退出时执行启动文件,PC = 0x08000004 并不能找到复位中断程序,程序会卡住。

https://i-blog.csdnimg.cn/direct/936cb03f572044139f70a977b1b49e55.png

https://i-blog.csdnimg.cn/direct/cf5ec95f41294584a3493cd593c4230f.png