最近在做基于
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。
请问哪里不对
1、2个APP分成两个工程,存储在Flash的不同位置,在Boot中运行APP,建议将APP拷贝到RAM中,然后让APP在RAM中运行,从而降低复杂度
2、如1所示,BOOT是、统一的,只是拷贝的源地址不一样,目标地址是相同的,向量表也是完全一样的,因为运行代码在同一个地址
3、APP只是代码的存储位置不一样,运行域是相同的,通过分散加载文件来控制。
不知能否帮到你
一周热门 更多>