我们在调试c6670的pcie boot 多核启动,四个核共用一份.out文件,
按照ti例程中实现,通过pcie boot 启动,按照例程中的配置,首先启动核0,核0配置其他核的,magic address,然后发送ipc中断到其他核,但是只有核0可以运行
我们的工程采用的bios,代码段位于ddr中,四核各自的stack分配到各自的l2里面。
有几个现象:
1.核0进入main之后,配置从核的magic address为_c_init_0,以及触发ipc中断,其他核回写magic_address的值,核0打印该地址,该值没有变化,说明其他核没有被触发。
2.核0不做触发其他核的操作时,会做ddr_test,以及其他的协处理器的test,但是执行了如上操作之后,核0会挂死。
3.该部分的代码如下:
if( DNUM == 0 )
{
CSL_BootCfgUnlockKicker();
for(i=1;i<4;i++)
{
DEVICE_REG32_W(BOOT_MAGIC_ADDR(i), (Uint32)&_c_int00);
}
TSC_delay_us(1);
for (i = 1; i < 4; i++)
{
CSL_IPC_genGEMInterrupt(i,0);//start cores..
}
CSL_BootCfgLockKicker();
}else
{
DEVICE_REG32_W(MAGIC_ADDR, BOOT_MAGIC_NUMBER);
}
怀疑是没有触发IPC中断,
有几个地方不是很明白,
1.bios中IPC中断的使用跟裸程序使用方法不一样吗,需要初始化吗,需要bios_start启动之后才能使用吗?
2.IPC触发其他核,不调用注册中断服务程序是否可以直接触发其他核的启动?
3,为什么其他核不执行的情况下,但是会影响到核0的执行?
peter3:
没有人吗