Vector ARM如何找到重新定位的向量表?

Vector ARM如何找到重新定位的向量表?,vector,linker,cortex-m,Vector,Linker,Cortex M,我使用的是NXP Kinetis K64 ARM Cortex M4 MCU。我成功地修改了链接器配置文件,将向量表移动到地址0x8000(而不是0x0000默认值)。当我告诉CodeWarrior 10.6调试器在代码开始时中断时,它会按预期在boot.S文件的顶部停止。但我突然明白了,既然闪存从地址0x0000到0x7FFF是空的(0xFF),并且VTOR寄存器显示为0x0,MCU/调试器是如何找到代码的 我查看了ARM M4 core和NXP K64的数据表,但它们没有回答这个问题。这可能

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


我查看了ARM M4 core和NXP K64的数据表,但它们没有回答这个问题。

这可能是由于CodeWarrior中调试配置的设置。在调试器选项卡中,如果勾选了如下所示的初始化程序计数器,调试器将在重置时为程序计数器提供“boot.S文件顶部”的地址,即程序入口点。将跳过查找向量表的正常顺序

没有调试器,程序将无法运行。


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

中找到,这非常有意义,并通过实验得到了证实。谢谢你的回复和网址。如果在启动时查找向量表的正常顺序是通过读取VTOR寄存器,那么如何事先通过链接器文件进行设置?VTOR寄存器的重置值始终为0x0。重置后,每次都必须设置VTOR的值,并在默认重置处理程序中进行设置,该处理程序的地址存储在位置0x4;因此,无法将0x0000到0x7FFF保留为空(包括0x0004),并在与程序员分离时让代码在0x8000处执行。我必须意识到这一点。再次感谢。