Hi,TI employee
I have asked this question days before but no answer,so I think maybe I specify the problem not so clearly.Our application need core0 to synchronize all the cores,and we use IPC to accomplish it.But we found that during the debugging,when core0 send IPC for 1 time,some cores got it for twice.
code is following(we have removed code that is irrespective.):
count =0;
while(1)
{
if(coreNum == 0)
{ for(i=1,i<8;i++) CSL_IPC_genGEMInterrupt(i,0); count++}
else
{
do{ result = CSL_IPC_isGEMInterruptAckset(coreNum,0) } while(result==0);
CSL_IPC_clearGEMInterruptSource(coreNum,0); result=0;
printf("core%d receive IPC,index:%d\n",coreNum,count);
count ++;
}
}
and when core0 send ist IPC(we make sure it by breakpoint),core1output:
core1 receive IPC,index:0
core1 receive IPC,index:1
core2,3 is the same,but other cores just get IPC for 1 time.
Then we insert a delay(2500 cycles) between sending IPC to one core and next core:
for(i=1,i<8;i++)
{ CSL_IPC_genGEMInterrupt(i,0); delay; }
then this error disappers.
So we guess that the IPC sended to one core affect other core.You can understand that delay is not a good way to solve this,so we want to know what cause all of this and if we have better way to solve that.
Thank you.