您好、TI 专家、
我在使用6678多核的项目中遇到了一个有线问题。 只有当我在 EVM6678LE 电路板上运行项目时、问题才会发生、但 CCS v5.1仿真器中从未出现过。
我的测试程序执行以下工作、
a.core0设置 IPCGR[1]~IPCGR[7]、按顺序生成 IPC 中断。
b.core1~core7在 ISR founcion 中进行一些计算。
c.计算完成后、core1~core7会执行
READ_ipcgr =*(volatile UINT32 *) iIPCGRInfo[CoreNum];
*(volatile uint32_t *) iIPCARInfo[CoreNum]= read_ipcgr;//清除相关源信息
D.core0将使用以下代码检查所有 IPCAR
uint8_t FinishFlagCnt;
执行{
FinishFlagCnt = 0;
uint32_t read_ipcar = 0;
对于(i = 0;i<7;i++)
{
read_ipcar =*(volatile uint32_t *) iIPCARInfo[(i+1)];
//printf ("*(volatile uint32_t *) iIPCARInfo[(i+1)]=%x\n"、*(volatile uint32_t *) iIPCARInfo[(i+1)]);
如果(0 = Read_ipcar)
FinishFlagCnt ++;
}
}while (FinishFlagCnt!= 7);
因此、wierd 问题会发生、在仿真器中、所有 IPCAR 都可以通过 core1 ~ core7清除。 但在 EVM6678LE 中、接收 IPC 中断的最后4个内核无法清除其 IPCAR、因此 core0将永久执行该 DO。
为方便您查找问题、我附加了测试程序。 在我的实验中没有发现任何扭曲或错误。
感谢您的 reply.e2e.ti.com/.../3771.IPC_5F00_Demo_5F00_6678_5F00_Multicores_5F00_0801.rar