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.

[参考译文] F28M36P63C2:Concerto IPC-Flag

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/566851/f28m36p63c2-concerto-ipc-flag

器件型号:F28M36P63C2

尊敬的 TI 团队:

我们使用 Concerto F28M36P63C2、但遇到了 IPC 标志机制问题。

实现说明:
 M3通过 IPC 设置一个'Function Call-X'到 C28。
 -然后、当 C28接收到'Function Call-X'时、M3等待 Ack ('IPC_FLAG16')。
       在 Ack 上、M3知道 C28将执行请求、M3可以继续操作。
       在 Ack-to M3上、知道 C28可能有问题
 - C28将接收'Function Call-X'并设置相关的 IPC-Flag 'IPC_FLAG16'。
   然后 C28将执行请求的案例。

问题描述:
在大多数情况下不存在问题、工作正常。
通常、请求的"函数调用-X"基于秒数进行调用!
出于性能原因、调用'Function Call-X'的速度应尽可能快。
这可能在特定时间内有效、最后是 M3-Ack 等待执行超时
因为未检测到 IPC-Flag 的 Ack。
!但是 C28确实接收到'Function Call-X',设置相关 IPC-Flag 和
执行了请求的案例。 只有 M3会等待相关 IPC-Flag 的 Ack 并执行到。

要在此处获得更好的说明、请使用代码片段

编码 M3:

   //使用'IPC_FLAG16'设置'uFlag'
   //'id'   是 C28上的请求'Function Call-X'
   
   /*使用参数*/调用 C28上的 fctCall()
   ipcStatus = IPCMtoCFunctionCall (&m3IpcCtrl1、
                       (((Ulong*) M3_CTOM_PULLMSG)[C28_FCT1_CALL]、
                       (Ulong) id、
                       enable_blocking);
   if (status_pass == ipcStatus)
   {
       /*等待 Ack */
       ipcDspWait = 0L;
       ipcStatus = IPCCtoMFlagBusy( uFlag );
       while ((M3_IPC_STATUS_PASS!= ipcStatus <M3_IPC_WAIT_MSG_TO) ))&&(ipcD
       {
           ipcDspWait++;
           ipcStatus = IPCCtoMFlagBusy( uFlag );
       }
       if (M3_IPC_STATUS_PASS == ipcStatus)
       {
           //继续
       }
       其他
       {
           //至
       }
   }
   /*始终确认。 *
   IPCCtoMFlagAcknowledge ( uFlag );
   …


编码 C28:

   void c28IpcFctCall( uint32 ulData )
   {
       switch( ulData )
       {
           xyz 案例:
                (笑声)
           案例"函数调用-X":
           {
               (笑声) 启动请求的案例...
               /*我们接收到请求的案例*/
               IPCCtoMFLAGSet ( IPC_FLAG16 );
               中断;
           }
       }/*开关结束()*/
   }/* c28IpcFctCall()的末尾*/


其他信息
对于 M3-to、C28确实接收并正确完成
请求者'Function Call-X'。
此外、我无法看到任何有关 IPC 标志机制的勘误表。


我的问题是:
什么是错误的、或者由于什么原因未看到 M3 IPC 标志?

以下设置正在使用中:

- Code Composer Studio
 版本:6.1.2.00015
- F28M36P63C2
 M3 - 125MHz
 C28 - 125MHz


提前感谢您、此致
WJ

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

    您好!

    IPC 标志和 ACK 机制没有已知问题、因此您不会在勘误文档中看到它。 我建议仔细检查代码以确保 IPC 序列正确。

    此致、

    Vivek Singh  

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

    您好、Vivek、

    感谢您的反馈。

    由于 IPC 标志机制非常简单(同步 M3和 C28进程)、
    因此、我不知道您意味着什么类型的"正确 IPC 序列"(对 IPC 标志机制重新分级)。

    IPC-Flag 机制得到了很好的说明(图5-16)、并在《数据手册》中进行了介绍。

    请您给我更多/其他参考。

    谢谢。

    此致
    WJ

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

    根据 IPC 序列、我是指当标志从一个 CPU 进行设置并从其他 CPU 进行 ACK 应答时、反之亦然。 正如您所说的、这些是简单的标志设置/清除机制、没有已知的问题。 您提到过、只有有时这种情况不起作用。 工作案例和非工作案例有何具体差异?

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

    您好、Vivek、

    正如您所确认的、这是一个简单的"标志设置/清除机制"、这正是我造成混淆的原因。

    工作用例和非工作用例之间的 SW-Flow 没有明显的区别。


    我尝试解决的一个问题是在 C28中添加以下代码以确保设置该标志:

    C28代码片段:

               案例"函数调用-X":
               {
                   (笑声) 启动请求的案例...
                   /*我们接收到请求的案例*/
    #if 0
                   IPCCtoMFLAGSet ( IPC_FLAG16 );
    其他
                   while (CtoMIPCRegs.CTOMIPFLG.bit.IPC16!= 1)
                       CtoMIPCRs.CTOMIPSET.bit.IPC16 = 1;
    #endif
                   中断;
               }

    !但结果相同。

    其他问题。
    如果 C28设置相关标志(此处为 IPC16)、则该部分编码在 ISR (PieVectTable.MTOCIPC_INT1)内运行。
    可能会同时运行对 IPC-Memory 的其他访问(只读/写内存位置)。
    C28-SW 和 M3-SW 会在 ISR 之外定期更新 IPC-Memory 位置。
    用于检测相关 IPC-Flag 的 M3-SW 也会在 ISR 外部正常运行。

    IPC 内存 R/W 和 R/W IPC 标志等其他活动期间是否存在任何限制?


    谢谢、此致


    WJ

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

    您好!

    [引用]在 IPC 内存 R/W 和 R/W IPC-Flag 等其他活动期间是否存在任何限制? [/报价]

    否、没有已知限制。 两者都是独立的。 我仍然认为 C28和 M3代码之间的握手处于某种竞争状态、因此导致了此问题。   

    Vivek Singh  

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

    您好、Vivek、

    供参考、我选择了不同的方法来解决此问题。

    感谢您的支持。

    此致
    WJ