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

TMS320C6657: 第二个核起不来

Part Number:TMS320C6657

c6657 core1加载失败问题咨询

我查看了好多帖子都有这个问题,按照他们的解决办法都试过了,第二个核依然加载不起来,带BIOS操作系统。

C6657 EMIF BOOT加载时遇到core0程序正常执行,core1程序执行异常的情况,带BIOS操作系统。具体情况如下:

1、BOOT程序、core0、core1应用程序存储在EMIF-NOR Flash中,在core0上先运行BOOT程序,将core0、core1应用程序加载到DDR3,然后指针跳转至core0 _c_int00运行正常,core1程序被加载成功、设置magic address、IPCGR寄存器0x0x02620244设置为1,但实际发现core1的程序未执行。
2、通过仿真器单独加载core1应用程序main执行正常,可以排除core1应用程序本身异常导致加载失败的情况。
3、通过仿真器调试BOOT程序发现core1程序已正确加载到DDR3中、且core1 boot magic address(0x118FFFFC)已写入_c_int00地址,同时在0x02620244寄存器写入1,通知core1执行,boot加载逻辑应该没问题。
4、仿真器连接core1程序,发现pc指针指向0x20B00650,处于bootrom idle阶段,表现像是没有响应IPC中断,未跳转至_c_int00执行。
5、boot程序和真正的core0,core1程序空间是没有交叉覆盖的。boot程序段用的是共享内存,core0,core1用的是DDR3空间。而且程序段都是用的全局地址。
6、加载不起来是否和BIOS系统有关,是否和CFG文件配置有关。CFG文件中没有调用IPC,因为只要一加入IPC相关的声明,DSP程序就会跑飞。
从以上分析,大致可以判定,boot程序(已在其他板卡c6657上试用加载从核成功)、core1应用程序本身应该没有问题。到底什么原因导致从核加载后继续在bootrom阶段,还请帮忙分析下,谢谢。
Nancy Wang:

和bios系统没有关系流程都差不多,试过裸机下的吗?

请将cmd文件和cfg文件贴出来看一下。

,

wapdasta:

您好,我刚才用另一个6678的芯片测试,也是从核启动不了,指针停留在0x20b00xxx开始的位置。

cmd和cfg提供不了。

我是主做6678芯片的,觉得6678的代码应该没问题。想问一下从核启动和硬件配置有关系吗。

例如:CORESEL「0,1,2,3」NMI,Lreset等

,

Nancy Wang:

主核主要通过写IPCGR来唤醒从核,跟硬件配置应该没有关系。

wapdasta 说:我是主做6678芯片的,觉得6678的代码应该没问题

请问也是从emif启动吗?论坛上有一些成功的案例分享,可以先试一下裸机下能不能成功。

https://www.ti.com/lit/an/spracn2/spracn2.pdf

https://e2echina.ti.com/support/processors/f/processors-forum/8065/evm6678le-i2c-nor-flash-boot-spi-flash-boot

,

wapdasta:

您好,裸机程序下看到从核是能启动,指针指向正确。

区别在于裸机程序中有如下函数:

也就是说裸机程序是开启了NMI,全局中断,然后再用IPC唤醒从核。

然后我在BIOS系统程序下,把这个函数加入到core0唤醒core1之前。烧写进板卡,也能看到从核是起来的。但是加入这个函数后,core0的bios系统是运行不起来的。所以这个函数应该是和BIOS中的HWI中断等函数冲突。

所以该怎么设置。

,

Nancy Wang:

请将具体的文件路径贴出来看一下。

另外core0运行不起来,从核应该起不来吧。

,

wapdasta:

1,目前定位是core1收不到core0发的IPC中断,所以导致CORE1 唤醒不起来。

2,CSL库自带的NMI,全局中断初始化函数,是加入在core0 main函数里的,唤醒core1函数之前,这时候BIOS还未运行。这样的话,core1就能被唤醒。但是这会导致CORE0 bios线程运行不起来。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6657: 第二个核起不来
分享到: 更多 (0)