vector - 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 的数据表,但他们没有回答这种情况。
解决方案
这可能是由于您在 CodeWarrior 中的调试配置的设置。在 Debugger 选项卡中,如果如下图所示勾选Initialized program counter at ,则调试器在复位时会给出 Program Counter 的“boot.S 文件顶部”的地址,即Program entry point。跳过查找向量表的正常顺序。
推荐阅读
- typescript - Typescript 和 WebRTC,“RTCPeerConnection”类型上不存在“createDataChannel”
- ios - 使用 ObjectMapper iOS 高效解析 JSON 数据
- javascript - 未执行 Jsstore 添加
- ruby-on-rails - 在 Rails 应用程序上的 127.0.0.1:6379(ECONNREFUSED) 上连接到 Redis 时出错
- python - 如何使用我从另一个请求中获得的 html 表单发送 POST 请求?
- c# - 如何首先在实体框架代码中设置身份主键的起始值?
- java - spring mvc,我的 bean 如何在控制器中自动装配?
- java - 用于完整应用程序性能测试的 Java JMH 工具
- java - 我需要 log4j 1.2 和 2.5 在同一个 webapp 中共存
- python - Python3.7 input() 连接整数