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.

[参考译文] TMS320F2.8388万D:调试CM内核时,加载Matlab/Simulink生成的CPU1 *.out文件

Guru**** 2253470 points
Other Parts Discussed in Thread: C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1092973/tms320f28388d-loading-matlab-simulink-generated-cpu1-out-file-when-debugging-cm-core

部件号:TMS320F2.8388万D
主题中讨论的其他部件:C2000WARE

您好,

我正在与F2.8388万D合作,其中CPU1和CPU2的应用是在Matlab/Simulink (C2000支持包)中开发的,CM应用是在CCS (11.1)中使用C代码开发的。

为了进行测试,我首先在CPU1的CCS中创建了一个小应用程序,它只为CM配置GPIO,然后一直闪烁LED。 我创建了调试配置以加载并运行此应用程序和CM应用程序,这很好。

我还在Simulink中创建了一个小型CPU1应用程序(LED闪烁),当在Simulink中使用"构建和部署"时,它在目标上运行正常。

然后在CCS调试配置中,我将CPU1程序更改为Simulink生成的*.out文件。 很遗憾,这不奏效。 启动CPU1后,状态显示"(正在运行-目标上发生重置)",CM状态显示"(正在重置)"。

如何才能实现此功能? 是否还有其他需要更改的调试配置设置? 在CCS中调试M4 CM时,我能够在CPU1和CPU2上加载并运行Simulink应用程序,这对于进一步的开发非常重要。

此致,
Arjan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Arjan,

    我们将在1-2天内为您提供服务。

    此致,

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Vivek,

    我找到了问题的原因。 C2000WARE CM示例应用程序和driverlib_cm都假定CM时钟频率为125 MHz,Aux PLL为时钟源。

    但是,在Simulink CPU1应用(使用用于C2000的嵌入式编码器支持包)的硬件配置中,CM时钟源只能设置为'系统PLL ',然后产生的CM时钟频率为100 MHz。

    在我的CM应用程序中将CM_CLK_FREQ更改为1亿U后,工作正常。 我可以加载Simulink生成的CPU1 *。out文件,也可以在CCS中调试CM应用程序。

    此致,
    Arjan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Arjan,

    您是否有机会在CM上使用EtherCAT? 如果是,您是如何 管理 设置EtherCAT GPIO, 将EtherCAT分配给CM并从CPU1 Simulink发布CM的。

    谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Alexis,

    我不使用EtherCAT,但总的来说Matlab/Simulink使用IPC消息到CPU1来配置GPIO。 如果为CM创建一个使用GPIO并生成C代码的模型,则将看到对MW_IPC_sendCommand()的函数调用。

    例如,以下是在F2.8388万D controlCARD上配置EtherCAT运行LED GPIO的代码:

       F2.8388万D controlCARD */上的/* LED4 (EtherCAT运行)
       gpioConfigCmd = 0x1万 | DEVICE_GPIO_PIN_LED4;
       MW_IPC_sendCommand( IPC_CM_L_CPU1_R,(IPC_FLAG0 | IPC_FLAG31),
                           IPC_ADDR_CORRECT_ENABLE,IPC_FUNC_CALL,
                           (UINT32_t)&cmMsgRam[0],gpioConfigCmd );
       IPC_waitForAck( IPC_CM_L_CPU1_R, IPC_FLAG31);
       IPC_getResponse (IPC_CM_L_CPU1_R);

    您可以在CCS项目中包含C2000支持软件包C代码(c2838xM4Board_RealTime_Support.c,MW_cmIPC.c等),然后就可以使用这些IPC功能。

    希望这能有所帮助!
    此致,
    Arjan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢Arjan,我会试一试。

    但我仍然感到困惑,我看不出有一种简单的方法可以解除CM的重置。 通常,CPU1正在执行此操作(configureAndReleaseCMToWait(void),releaseCMToApplication(void))。 在您的情况下,如果您在调试模式下使用CM,我猜它会手动释放CM。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    预期用户将始终在CM和CPU1应用程序释放CM (和CPU2)未重置之前运行CPU1应用程序。 如果使用CCS,您还可以为CM重置CPU1 Gel文件版本。

    此致,

    Vivek Singh  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Vivek,

    我基本上想知道是否可以在CM上建立EtherCAT连接,在CPU1和2上运行Simulink并使用IPC通过Simulink将数据发送至CM。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有使用过Simulink,所以让我与其他专家核实一下。

    此致,

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢Vivek,如果您希望我创建新帖子,请告诉我。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Alexis,

    如果您可以创建新帖子,那将非常好。 谢谢你。

    此致,

    Vivek Singh