keilv5 编译目标文件 起始地址不同,导致程序跑飞

最近在做关于stm32的远程升级项目,程序可以跳到app中,并运行若干语句,然后到某一处,会突然跑飞。app程序的起始地址定在0x08010000,如果把程序起始地址恢复到0x08000000,则运行正常。经过比对二者的目标程序,前面的一大段程序都相同(除了地址有所偏移),但发现在程序跑飞附近,的确发生了代码错乱。看了很多帖子,都没有这种怪现象,是keil设置不当造成的?请知情者不吝赐教,不胜感谢!

其实这种问题首先需要考虑1.就是程序在哪里跑飞,然后通过hardfault定位出来。2接下来需要考虑,变量,数组是否越界,是否使用了80000000以前的地址,等等。

谢谢,今天换了一版keil,编译的目标代码正常了,与起始地址无关。

中断向量在 8000000 和 8100000 的不同的 位置 应该够