This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] C6678多核 IPC 通信已完成、但无法清除 IPCAR[5~7]

Guru**** 2561930 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/614886/c6678-multicores-ipc-communication-finished-but-ipcar-5-7-could-not-be-cleared

您好、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