当一颗Flash里面同时存放Bootloader和应用程序时,应用程序就不能再占用上电后默认的中断向量表位置了,否则很容易跟Bootloader的向量表发生冲突。对于支持向量表偏移寄存器(VTOR)的Cortex‑M芯片,正确的做法是把应用程序的向量表整体搬到一个新的起始位置,然后在代码启动过程中更新VTOR,让CPU知道中断入口地址已经变了。如果只调整了链接脚本而漏掉运行时重定位,或者反过来,主函数虽然能跑起来,但定时器、串口和外部中断这类外设往往完全没有反应。Arm的技术文档也说明,软件可以借助VTOR寄存器把向量表重定位到新的内存地址。
2026-06-04