c - 引导加载程序应用程序中的 vector 表重定位

标签 c embedded microcontroller bootloader nxp-microcontroller

我为 NXP Kinetis 微 Controller 编写了引导加载程序应用程序。以下是我为实现相同目的所做的事情: 1. 在 CFlash 地址 0x0000 到 0x8000 中创建了一个引导加载程序应用程序 2. 从地址 0x8000 到 0x1FFFF 创建了我的主要应用程序代码

这段代码运行良好。现在我的疑问是,我在引导加载程序和主应用程序代码中都放置了 ISR,但没有使用任何 ISR vector 重定位。是否需要在主应用程序中重新定位 vector 表?

PS:我可能不会因为两个应用程序中的 ISR 相同而面临这个问题。

最佳答案

在大多数现代 MCU 上,不需要 vector 表重定位,因为在编译应用程序时可以将 vector 表基地址指定为参数。

如果您的目标没有这样的功能,并且引导加载程序中的 vector 表是 0x0000 到 0x8000,那么您将需要为应用程序重新定位 vector 表,以便应用程序中发生的中断导致跳转到正确的位置处理程序。

关于c - 引导加载程序应用程序中的 vector 表重定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48722985/

相关文章:

c - 为什么 scanf 会导致我的代码无限期运行?

c - 比变量小的指针类型

arm - 如何制作裸机ARM程序并在QEMU上运行?

c - 最简单快速的音频事件检测方法?

c - 我在哪里可以学习串行/终端接口(interface)编程?

c - 如何在 armv7 架构中构建 mcrypt 库?

c - UDP 套接字设置超时

c - 读取后如何刷新 FIFO?

c++ - 这段 Arduino 代码有什么作用?

c++ - Arduino 与 Visual C++ 串口通信