我现在调试一个2核程序,出现了下面的情况:
- 使用仿真器调试程序运行时正常的,但是把程序烧写的SPI FLASH后,上电后0核运行正常,1核程序在运行Ipc_start();函数是程序异常退出,运行的截图:
;
- 修改了程序中几个无关数组的长度后,上述错误消失,即仿真器和上电boot运行都正常;
请教一下这个问题可能是什么原因导致,解决这个问题我需要重哪方面入手?
我现在进行了以下一些调试分析,我在main函数开始使用while()语句让程序运行在此处不再往下运行,然后根据1核*.map文件中程序占用的地址空间,分别把使用仿真器load和上电boot时程序相关的地址空间的内容导出,把使用仿真器load程序导出文件记为load.dat,上电从flash boot起来的程序记为flash.dat,对比文件内容,.txet段内容是一致的,其他段是有一些不同,如.fardata、.far等段;使用仿真器把这两个.dat通过load memory...的方式load到相关区域进行测试,运行boot.dat对应程序确实会在运行Ipc_start();时异常退出,而运行load.dat能正常运行。