尊敬的 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