大家好,
我的工程中IPC的配置为
Ipc.procSync = Ipc.ProcSync_ALL;
MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2", "CORE3"]);
for (var i = 0; i < MultiProc.numProcessors; i++) {
Ipc.setEntryMeta({
remoteProcId: i,
setupNotify: true,
setupMessageQ: false,
});
}
每个CORE的代码都运行IPC_Start();
然后依次加载4个CORE的程序,从CORE0到CORE3。
遇到的问题是:CORE3的SYS/BIOS任务能够正常运行,但是CORE0~2的SYS/BIOS任务跑不起来,如下图
CORE0~CORE2都死循环在singlecore_osal.c的下面的代码第7行处了
PtrOsal_cppiCsEnter (Void)
{
/* Get the hardware semaphore.
*
* Acquire Multi core CPPI synchronization lock
*/
while ((CSL_semAcquireDirect (CPPI_HW_SEM)) == 0);
/* Disable all interrupts and OS scheduler.
*
* Acquire Multi threaded / process synchronization lock.
*/
coreKey [CSL_chipReadReg (CSL_CHIP_DNUM)] = Hwi_disable();
return NULL;
}
感觉是IPC_Start();没有完成4个核之间的 processor synchronization。
*********************************************************************************************************
但是如果我改代码为如下
MultiProc.setConfig(null, ["CORE0", "CORE1");
然后只加载CORE0和CORE1的代码。步骤为:
1.先加载CORE0代码。CORE0卡在IPC_Start();
2.然后再加载CORE1代码,CORE1 SYS/BIOS跑起来了。
3.接着CORE0的SYS/BIOS也跑起来了,一切正常。
*********************************************************************************************************
就是当我打算调试4个核心的时候,问题就出来了。
调3个核也有这样的问题
*********************************************************************************************************
望大家给予帮助!!多谢!!
