工具/软件:
您好 TI 专家、
我将在上实现自定义引导加载程序。
以下是我的设置:
-
总闪存:128KB
-
引导加载程序大小:~72KB(在默认值 0x00000 处构建)
-
应用程序是为启动而构建的 0x12000 (使用链接器脚本修改)
-
引导加载程序
.bin通过 CAN 接收此信息并将其写入 0x12000 -
编程后、引导加载程序使用 0x12000 处的矢量表跳转到应用程序(通过设置矢量表中的 MSP 和 PC)
观察到的行为:
-
应用程序正确启动(LED 闪烁、UART 日志工作正常)
-
不过、 CAN 接收 ISR 从不触发
-
CAN 工具上也未显示总线错误
-
如果我在 0x00000(默认启动)处构建并运行完全相同的应用程序、则可以完美地实现中断
我已验证的事项:
-
引导加载程序正确复制并跳转到应用程序
-
从矢量表中正确加载 MSP 和 PC
-
全局启用中断(即使在 0x12000 构建中、UART 和计时器中断也可以正常工作)
-
在两种情况下、MCAN 外设的配置方式相同
问题:
为什么会这样 不触发 MCAN 中断 从中运行应用程序时所用的脚本 0x12000 在跳转引导加载程序后、即使在 0x00000 处编译时使用相同的代码也是如此?
有任何问题吗 额外的矢量表重定位 或 NVIC 配置 在 MSPM0 器件上从非默认闪存地址运行代码时需要?
如有任何指导、我们将不胜感激!