从bootloader跳到APP需要几步?
一、bootloader 程序
1.1 FLASH 内存映射图
1.2 boot程序解析
1.3 提问:从boot跳转到app前,如果发生了中断,请问这个中断会被响应么?
答案:否、
处理方法:在跳转到app之前,先把中断关闭,在进入app设置中断NVIC中断向量偏移之后,重新打开中断开关即可。
二、app程序
2.1 app程序源码
这里之所以要设置中断向量偏移表,是因为我们的app程序不是放在0x0800 0000 的默认位置的
主要原因是我们产品需要有一段bootloader程序占用了这段代码空间。
所以我们真实的app应用程序是存放在0x0800 0000
+ 0x800
这个位置的。
所以我们的cpu去获取中断向量地址的时候,就不能直接从0x0800 0000 + 4 之后开始获取。
而要从app程序基于bootloader代码在flash中的偏移量的地址处开始获取。
提问
stm32 在开发ota产品时,为什么中断向量表是存放在flash的起始地址+4的这个相对位置? 而不是flash的绝对位置?
这个问题触及了 AR