Dear TI team,
we use the Concerto F28M36P63C2 and got a issue with the IPC-FLAG mechanism.
Implementation description:
- M3 setup a 'Function Call-X' to the C28 via the IPC.
- Then the M3 waits for an Ack ('IPC_FLAG16') when the C28 receive the 'Function Call-X'.
On Ack the M3 knows then the C28 will execute the request and the M3 can go further with operation.
On Ack-TO the M3 knows the C28 may in trouble
- The C28 will receive the 'Function Call-X' and set the relevant IPC-Flag 'IPC_FLAG16'.
Then the C28 will execute the requested case.
Issue description:
In most cases no problem exist and works fine.
Typically the requested 'Function Call-X' is called based on seconds!
For performance reason the 'Function Call-X' is called as fast as possible.
This may work for a certain time and finally the M3-Ack waiting do Timeout
because the Ack for the IPC-Flag is not detected.
!However the C28 did receive the 'Function Call-X', set relevant IPC-Flag and
did execute the requested case. Just the M3 do wait for the Ack of the relevant IPC-Flag and TO.
For better explanation here the Code-Snippet
Coding M3:
// 'uFlag' is set with 'IPC_FLAG16'
// 'id' is the request 'Function Call-X' on C28
/* call fctCall() on C28 with a parameter */
ipcStatus = IPCMtoCFunctionCall(&m3IpcCtrl1,
((uLong*)M3_CTOM_PULLMSG)[C28_FCT1_CALL],
(uLong)id,
ENABLE_BLOCKING);
if ( STATUS_PASS == ipcStatus )
{
/* wait for Ack */
ipcDspWait = 0L;
ipcStatus = IPCCtoMFlagBusy( uFlag );
while ( (M3_IPC_STATUS_PASS != ipcStatus) && (ipcDspWait<M3_IPC_WAIT_MSG_TO) )
{
ipcDspWait++;
ipcStatus = IPCCtoMFlagBusy( uFlag );
}
if ( M3_IPC_STATUS_PASS == ipcStatus )
{
// go further
}
else
{
// TO
}
}
/* always Ack. */
IPCCtoMFlagAcknowledge( uFlag );
....
Coding C28:
void c28IpcFctCall( Uint32 ulData )
{
switch( ulData )
{
case xyz:
...
case 'Function Call-X':
{
... start requested case ...
/* signal we recevied requested case */
IPCCtoMFlagSet( IPC_FLAG16 );
break;
}
} /* end of SWITCH() */
} /* end of c28IpcFctCall() */
Additional Info.
In case of M3-TO, it is for sure that the C28 do receive and complete proper
the requestet 'Function Call-X'.
Also I could not see any Errata regarding the IPC-FLAG mechanism.
My question would be:
What is wrong or for what kind of reason do not see the M3 the IPC-FLAG?
Following setup is in use:
- Code Composer Studio
Version: 6.1.2.00015
- F28M36P63C2
M3 - 125MHz
C28 - 125MHz
Thanks in advance & Regards
WJ