一、问题来源
multiprog编程出来的应用程序(简称App),在底层Bsp1基础上运行OK。当对Bsp1进行简单升级,比如原来已经定义的某个变量进行初始化操作,形成新的Bsp2文件后。App出现无法运行问题。
二、问题分析
写在前面:
1、Bsp中涉及multiprog相关的运行库及接口定义已经通过icf文件固定在ROM相关区。
2、IAR编译环境
问题来源中形成的Bsp1与Bsp2进行bin文件及map分析,发现:bin文件差异巨大,map中发现RAM区相关的变量地址顺序移动很多。
故猜测:multiprog中应用程序中使用了,BSP程序中RAM区相关的变量地址的绝对地址。
三、验证
打开Bsp1对应的map文件,将相关的RAM区地址固定下来,再次编译后,发现应用程序可以正常运行