各位专家,请教一个C66x多核裸跑同时加载问题:
目前使用KE2VM-HK开发板,SOC为662AK12。ARM侧跑在Linux上,DSP上电处于idle状态。ARM侧起一个进程加载8个DSP核的程序,DSP程序都加载至L2上,操作过程如下:
第一步: 下载程序前,设置寄存器如下:
while(PTSTAT(x) != 0);
PDCTL(x) = 1;
// de-assert DSP local reset
MDCTL(y) &= 0xFFFFFFE0;
MDCTL(y) = P_MDCTL_RESETISO_ENABLE | P_MDCTL_LRST_DEASSERT | P_MDCTL_NEXT_ENABLE;
P_PTCMD |= (1<<x);
while(PTSTAT(x) != 0);
第二步:读取程序文件,写入各自DSP的L2中
// 代码略
第三步:下载程序后,设置寄存器如下:
DSP_BOOT_MAGIC(core_no) = dsp_cinit_addr;
while(PTSTAT(x) != 0);
PDCTL(x) = 1;
// de-assert DSP local reset
MDCTL(y) &= 0xFFFFFFE0;
MDCTL(y) = P_MDCTL_RESETISO_ENABLE | P_MDCTL_LRST_DEASSERT | P_MDCTL_NEXT_ENABLE;
P_PTCMD |= (1<<x);
while(PTSTAT(x) != 0);
第四步:设置寄存器给IPC
P_BOOTCFG_KICK0 = 0x83E70B13;
P_BOOTCFG_KICK1 = 0x95A4F1E0;
P_BOOTCFG_DSP_IPCGR0 = 0x11;
P_BOOTCFG_DSP_IPCGR1 = 0x11;
P_BOOTCFG_DSP_IPCGR2 = 0x11;
P_BOOTCFG_DSP_IPCGR3 = 0x11;
P_BOOTCFG_DSP_IPCGR4 = 0x11;
P_BOOTCFG_DSP_IPCGR5 = 0x11;
P_BOOTCFG_DSP_IPCGR6 = 0x11;
P_BOOTCFG_DSP_IPCGR7 = 0x11;
P_BOOTCFG_KICK0 = 0;
P_BOOTCFG_KICK1 = 0;
如上操作后,通过DSP程序往内存写数据验证是否正确跑,结果发现0、2、4、6在跑,1、3、5、7初始化成功,但没有中断响应,ARM侧的操作有没有可能操作方法不对?
烦请各位专家帮忙看下。

