TI中文支持网
TI专业的中文技术问题搜集分享网站

C6678 多核

我在TMS320C6678上采用PCIe boot模式加载的多核程序每个核可以正常运行,然后对DSP就行localReset,重新加载程序,发现只有core0可以正常运行新程序,其他core1-7并没有正常运行起来。连接仿真器查看各核的boot magic地址,发现在进行local reset之后,只有core0的boot magic地址的值为0,core3和core4的boot magic地址的值偶尔会是0,其他几个core的的boot magic地址的值都没变化,这是什么原因呢?

Shine:

请问有参考SDK里的pcieboot的例程吗?
C:\ti\mcsdk_2_01_02_06\tools\boot_loader\examples\pcie\
Docs folder: section 9.6 explainsHow DSP local reset example works
Linux code: \linux_host_loader\pciedemo.c#ifdef LOCAL_RESETplease check function dspLocalReset().
DSP code: pcieboot_localreset\src\pcieboot_localreset.c

Bess:

回复 Shine:

是的,就是参考这个例程的

Shine:

回复 Bess:

请问有对程序进行改动吗?

Bess:

回复 Shine:

没有改动

Shine:

回复 Bess:

板子是EVM板还是自己的板子?

Bess:

回复 Shine:

使用创龙的开发板

Shine:

回复 Bess:

请看一下不工作的核停在哪里?在Linux host side,pciedemo.c代码:

for (i = 0; i < 8; i++) {
pushData(localResetCode, i, &bootEntryAddr);
if (setBootAddrIpcgr(i, bootEntryAddr) == 0) {
printk("Core %d is not ready !!! \n", i);
}
}

在boot失败后,用JTAG看一下每个L2 memory里是否有localresetcode?看一下PCIE有没有成功地把代码加载到每个核。然后看一下DSP_BOOT_ADDR (0x2620040+4*n),是否写了start address? 如果是的话,DSP应该会从那里开始执行(_c_int00)。

如果DSP核不能运行程序的话,PC指针指在哪里?可以通过查看map文件来检查跑到哪里了?

Bess:

回复 Shine:

DSP_BOOT_ADDR (0x2620040+4*n) 的值有些是在(_c_int00)的地址,有些是0x20B00001

Bess:

回复 Shine:

谢谢,问题解决了,要在写_c_int00地址的时候再读一下,就正常了,如果不读的话就不正常

赞(0)
未经允许不得转载:TI中文支持网 » C6678 多核
分享到: 更多 (0)