我有一台 Cortex M0+ 设备,我为其开发了一个引导加载程序和应用程序,部分基于 IC 制造商提供的一些示例代码。在引导加载程序中,在跳转到应用程序之前,引导加载程序会检索堆栈指针和应用程序重置向量的地址。我已使用应用程序的映射文件验证了该地址是正确的。但是,它获取的堆栈指针地址是 RAM 中的最顶层地址(在本例中为 0x20008000)。我的理解是 Cortex 堆栈(至少对于 M0 等“较低”设备)会向下增长。我只是想确认这是在这种情况下应该用于堆栈指针的地址。
主页
/
user-1686300
nobby's questions
nobby
Asked:
2024-08-22 04:38:20 +0800 CST
我过去使用过多个 Cortex M 部件,主要使用 IAR 作为我的 IDE。我目前正在使用基于 Eclipse 的 IDE(Infineon ModusToolbox)为 Cortex M0+ 部件开发一个项目。
我想将我的应用程序放在 FLASH 中 0x00 以外的地址处(最终我会在 0x00 处有一个引导加载程序)。我修改了链接器脚本以反映这一点。但是,当尝试通过 SWD 在 0x00 以外的地址进行调试时,它无法调试。重置向量按预期映射到我的新 FLASH 地址(根据映射文件)。
制造商表示,使用 ARM 核心设备无法从 0x00 以外的地址开始调试,但我 99% 肯定,我过去做过我现在正在尝试的事情。我记错了吗?程序计数器不是总是最初设置为复位向量的地址吗?还是需要一些额外的调试器指令?