我想达到的目标是这样的:core0进行任务分派工作,给core1-6分派不同的任务,待core1-6都完成后,启动core7进行任务汇总。
其中,任务分派和汇总过程中需要进行核间数据的传递。
有下面几个问题:
1、程序是否共享?
-----》几个核是运行同样的源代码,源代码中通过DNUM来区分不同部分;
-----》每个核编写不同的工程。
-----》这两种方式特点如何,适用于怎样的方式呢,我不知道该如何选择
2、如果多核运行同一程序(放在MSMC上),通过DNUM来区分不同部分的话,那么程序中的变量(局部、全局)多核是否共享,能否直接访问,这种方式可行性如何,有何特点?
3、core之间通信方式如何?
-----》核间通信有很多种方法,该如何选择?
4、core0通过IPC这种方式发中断给core1-6,中断处理函数如下,上电第一次6个核能全部响应,但是均提示Invalid CIO command (48)...
再次执行后都只有部分核能有响应。(我说的响应指的是console里会有信息输出)
void ipc_handler(void* handler)
{
volatile uint32_t read_ipcgr;
uint32_t CoreNum;
CoreNum = CSL_chipReadReg(CSL_CHIP_DNUM);
printf("Core number : %d",CoreNum);
read_ipcgr = ((CSL_BootcfgRegs*)CSL_BOOT_CFG_REGS)->IPCGR[CoreNum];
if(1 == CoreNum)
{
printf("in ...\n");
}
else if(2 == CoreNum)
{
printf("in ...\n");
}
else if(3 == CoreNum)
{
printf("in ...\n");
}
else if(4 == CoreNum)
{
printf("in ...\n");
}
else if(5 == CoreNum)
{
printf("in ...\n");
}
else if(6 == CoreNum)
{
printf("in ...\n");
}
else if(7 == CoreNum)
{
printf("in ...\n");
}
((CSL_BootcfgRegs*)CSL_BOOT_CFG_REGS)->IPCAR[CoreNum] = read_ipcgr;
}
这种方式是否可行?core0发中断有什么时间要求,core1-6的处理函数有什么时间要求?为什么我的程序中无法正常响应?
谢谢了。