在TMS320C6678中,使用IPC进行核间同步。核0轮流给其他7个核发IPC消息,其他核等待消息,全过程是循环的。
现在的问题是在核0发出一轮IPC之后,有的核连续收到了两次IPC信息(或者说,在核0发送一次后,核1接收到一次以后再次接收时消息仍然在,而之前确定已经清掉了消息状态)。
后来,在核0向每个核发IPC后都延迟2500个周期后才向下个核发,这个问题就消失了。因此感觉是核0给某个核发的IPC似乎影响到了其他的核。延迟显然影响了效率。请问这个问题到底是什么原因导致的?有没有更好的解决方案?所使用函数如下:CSL为MCSDK 1_1_2_5版本
发送IPC:CSL_IPC_genGEMInterrupt()
接收IPC:CSL_IPC_IsGEMInterruptAckSet()
清IPC状态:CSL_IPC_ClearGEMInterruptSource()