使用 stm32cubeide 调试非 0x08000000,我们需要一些配置
.ld链接脚本条件编译
目前如果要修改程序的启动地址需要修改两个地方
system_stm32f103xx.c
中的VECT_TAB_OFFSET
,可通过宏定义开启或者关闭- .ld 链接脚本,可通过宏进行条件编译,也可以直接修改 ld,创建不同的链接脚本文件,创建不同配置
/* Memories definition */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 496K
}
#ifdef DEBUG
FLASH = 0x8000000;
#else
FLASH = 0x8004000;
#endif
调试非0x08000000
地址的App程序时软件重启配置
直接调试App程序,只需要修改 ld 脚本文件及向量即可,但此时无法使用软件重启,会重启失败,此时需要对软件重启参加参数,指定两个指针,设置如下:
set $sp = *(unsigned int*)0x08004000
set $pc = *(unsigned int*)0x08004004
App 起始地址为 0x08004000