首页 > 解决方案 > ARM 如何找到我重定位的向量表?

问题描述

我正在使用 NXP Kinetis K64 ARM Cortex M4 MCU。我成功地更改了链接器配置文件,将我的向量表移动到地址 0x8000(而不是默认的 0x0000)。当我告诉 CodeWarrior 10.6 调试器在代码开始处中断时,它会按预期停在 boot.S 文件的顶部。但我突然明白了, MCU/调试器是如何找到代码的,因为闪存从地址 0x0000 到 0x7FFF 是空的(0xFF)并且 VTOR 寄存器显示为 0x0?!

我查看了 ARM M4 内核和 NXP K64 的数据表,但他们没有回答这种情况。

标签: vectorlinkercortex-m

解决方案


这可能是由于您在 CodeWarrior 中的调试配置的设置。在 Debugger 选项卡中,如果如下图所示勾选Initialized program counter at ,则调试器在复位时会给出 Program Counter 的“boot.S 文件顶部”的地址,即Program entry point。跳过查找向量表的正常顺序。

如果没有调试器,您的程序将无法运行。 截屏

可以在此处找到有关 CodeWarrior 调试器的更多详细信息


推荐阅读