工具/软件:Code Composer Studio
大家好、TI 专家、
我遇到了一个问题、即 CCS v5.1仿真器和 EVM6678LE 板在清除 IPCAR 寄存器方面的表现不同。
我的测试项目执行以下工作、
a.core0按顺序设置 IPCGR[1]~IPCGR[7]、在 core1~core7中生成中断。
b.在中断服务中、每个内核执行一些 sin (x)计算。
c.在中断结束时,每个内核使用以下代码设置自己的 IPCAR
READ_ipcgr =*(volatile UINT32 *) iIPCGRInfo[CoreNum];
*(volatile uint32_t *) iIPCARInfo[CoreNum]= read_ipcgr;//清除相关源信息
D.core0读取 IPCAR[1]~IPCAR[7]、查找其他内核是否完成
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);
测试项目非常简单、并且在 CCS v5.5.0.00077调光器中正确运行。 但是、当它在 EVM6678LE 上运行时、接收 IPC 中断的最后3个或4个内核始终无法清除相应的 IPCAR。 因此该 core0不能跳出该 do while。
请帮我找到原因吗?e2e.ti.com/.../IPC_5F00_Demo_5F00_6678_5F00_Multicores_5F00_0801.rar
为方便您重新出现问题、随附了我的测试项目。
感谢你的答复。