基于STM32的IAP:FLASH里的标志位不能跳转到程序区2

2019-07-14 18:16发布

最近在做基于STM32的IAP,我想把FALSH分为4个区,1个BOOT区(8002000H开始),2个应用程序区(1区:8002000H开始,2区:8008000开始),1个存储标志位的区(800F000H开始)。在BOOT里面通过读取FLASH里的标志位,来决定跳到应用程序区1还是跳转到应用程序区2。现在能够正常跳转到应用程序区1,不能跳转到应用程序区2,大致问题应该是中断向量表的问题。我应用程序里面的中断向量表设置也是通过读取FLASH标志位来设置,如果APP在1区,则设置为8002000H,在2区设置为8008000。keilc里面设置的编译段为8002000H。

请问哪里不对
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
东少2016
2019-07-15 16:22
你的方法有点复杂,给你提个建议,希望能帮到你
 
1、2个APP分成两个工程,存储在Flash的不同位置,在Boot中运行APP,建议将APP拷贝到RAM中,然后让APP在RAM中运行,从而降低复杂度
2、如1所示,BOOT是、统一的,只是拷贝的源地址不一样,目标地址是相同的,向量表也是完全一样的,因为运行代码在同一个地址
3、APP只是代码的存储位置不一样,运行域是相同的,通过分散加载文件来控制。
不知能否帮到你

一周热门 更多>