博客日历
| 2025年11月 | ||||||
| 一 | 二 | 三 | 四 | 五 | 六 | 七 |
| 27 | 28 | 29 | 30 | 31 | 1 | 2 |
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
存档
2025年03月 11月 2024年
03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
ARM Cortex-M0 的 BootLoader 跳转到 APP 的一种方法
BootLoader和APP独立编译,独立烧写。
一、BootLoader的地址空间配置
假设BootLoader需要占用0x2000字节的空间。
BootLoader配置IROM1起始0x08000000,size为0x2000
BootLoader配置IRAM1起始0x20000100,(size需要减少0x100)
二、APP的地址空间配置
根据在startup_xx.s中__Vectors和__Vectors_End之间的中断入口函数数量计算APP的向量表的大小
比如有50个DCD定义,则APP的向量表大小为50*4=200(0xC8)个字节
APP配置IROM1起始0x08002000 (size需要减少0x2000)
APP配置IRAM1起始0x20000000+0xC8 (size需要减少0xC8)
三、BootLoader跳转方法
1)BootLoader跳转到APP之前,把0x08000000~0x080000C8复制到SRAM的0x20000000~0x200000C8中
2)先关闭中断,然后配置SYSCFG_CFGR1,把SRAM映射在 0x00000000
3)接下来设置栈顶指针MSP为0x08002000的内容对应的地址
4)跳转到APP入口地址,即0x08002000+4的内容对应的地址(APP内开中断)
四、参考文档
http://www.51hei.com/bbs/dpj-40235-1.html
STM32F0系列MCU中断向量表的重映射
https://www.cnblogs.com/andyzhao365/p/6576718.html
关于Cortex M0系列MCU中断向量表重映射问题
https://blog.csdn.net/qq_39340220/article/details/108882352
Cortex m0 做bootloader中断向量表重映射
https://blog.csdn.net/weixin_45444963/article/details/144692268
STM32在bootloader跳转到application时设置MSP
上一篇: QtWebEngine版本与Chromium版本对应关系
分类:嵌入式/电子 查看次数:17 发布时间:2025/11/19 12:36:04