This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TCI6487 EmacBoot启动问题



6487的3个核都运行SYS/BIOS,用ccs加载out文件正常,但是打包成bin文件通过Emac加载,core0可以正常启动,其他两个核PC在0x800000,指令为IDLE

请教一下,我的代码缺少了什么,怎么让其他两个核出IDLE?

有没有相关调试经验的,麻烦指导一下,谢谢~~

  • 这个是因为core1和core2的base address(如0x11800000和0x12800000)的值是0.

    core0发现其余core的base address为0时,就会将IDLE写到其余两个core的base address位置,然后将其余两个core唤起,这就造成了你看到的状态。

  • 怎么解决呢?

    之前编的版本无法启动,挂上仿真器看L2的起始地址没有跳转到_c_int00的代码,查了些资料将vecs段放到了0x10800000,0x11800000和0x12800000,

    但是这个跳转指令前确实有三个NOP,所以就造成了现在两个核进入IDLE了。

    具体需要怎么解决?

    非常感谢~~

  • 你在把core1和core2的out文件制作为boot table的时候需要加上 -e _c_int00的选项,保证你的_c_int00的地址在你制作的btbl文件的最前面。

    当然,每个core都有_c_int00的函数,肯定不是NOP和0.

  • hex6x转换时是加了-e _c_int00选项的,制作的btbl文件最前面的是cinit段,我尝试过哪个段在前面和sections中的顺序也没有关系,按照什么顺序排列的我不太清楚?

    而L2地址最前面是vecs段,vecs段最前有是3个Nop,然后才会跳转到_c_int00。