主题中讨论的其他器件:C2000WARE
大家好、
我有一个 CM 代码、该代码使用 MCAN 与 CAN 主设备通信。
它工作正常。
我想修改代码、让 MCANIntra1ISR 从 RAM 运行、而不是从闪存运行。
我尝试设置 #pragma CODE_SECTION (MCANIntra1ISR、".TI.ramfunc")。
虽然我可以在映射文件中看到函数已移动,但从未发生中断
我还需要做什么吗?
我需要检查什么?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
我有一个 CM 代码、该代码使用 MCAN 与 CAN 主设备通信。
它工作正常。
我想修改代码、让 MCANIntra1ISR 从 RAM 运行、而不是从闪存运行。
我尝试设置 #pragma CODE_SECTION (MCANIntra1ISR、".TI.ramfunc")。
虽然我可以在映射文件中看到函数已移动,但从未发生中断
我还需要做什么吗?
我需要检查什么?
Inno、
您可以检查几个方面。
首先、您需要检查代码是否具有 memcpy 命令(包含在所有 C2000ware 示例中的 device_init 函数中)。 为了 实现闪存构建配置、所有函数被加载到闪存中、这个命令将 ramfuncs 复制到 RAM 中、然后从 RAM 中执行。
第二、检查 MAP 文件中 MCANIntra1ISR 函数的运行 ADDR。 接下来、在 CCS 中处于调试模式时、检查反汇编视图、并在顶部的搜索栏中搜索函数名称、以确保运行地址包含中断 ISR 代码。
如果您在访问上述检查时遇到任何问题、请告知我们。
谢谢。
Inno、
我尝试对现有示例进行此更改、它工作正常。
#pragma CODE_SECTION(MCANIntr1ISR, ".TI.ramfunc"); // // This is Interrupt Service Routine for MCAN interrupt 1. // static void MCANIntr1ISR(void) { uint32_t intrStatus;
您能否如上所述编辑"mCAN_ex1_loopback"示例并告知我们它是否正常工作?
然后我们可以从那里获取它。
谢谢。