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

C6657双核boot

您好,Ti的专家

      我现在在进行6657双核BOOT的工作,遇到了一些问题不清楚,想咨询一下:

      目前状态:单核 SPI  BOOT完全OK,冷板启动加载正常。双核加载不正确,Debug调试正常,固化程序后不能正常加载起来,核0写了个小程序,主要初始化PLL,DDR3,发送IPC中断,写核1的boot magic地址;核1跑应用程序。

       问题:

       1. IPC中断手册上说IPCGR寄存器第一位写1就触发中断,我写了1,但是通过memory view查看地址0x02620244 最低位是0?

       2. 调试程序我区分了LL2段使用了0x10xxxxxx,0x11xxxxxx来区分全局地址,Bootmagic地址分别是0x108FFFFC和0x118FFFFC。我的理解是:核0 main函数初始化PLL,DDR3,然后向核1的boot maigic地址(0x118FFFFC)写核1程序的_c_int00地址;最后向IPCGR1发送中断,结果不成功。

       map文件查看核1应用程序_c_int00 enter point symbol地址:0x0c05e020

核0 main函数如下:

#define BOOT_MAGIC_ADDRESS 0x8FFFFC // for C6657
#define BOOT_ENTRY_ADDRESS 0x0c05e020 //理解写入int00地址
#define IPC_INTERRUPT_CORE0 0x02620240
/*convert local address to global address for EDMA on multi-core DSP*/
#define GLOBAL_ADDR(addr,corenumber) (unsigned int)addr<0x1000000?\
                        (unsignedint)addr+(0x10000000+corenumber*0x1000000):\
                        (unsignedint)addr
voidmain(void)
{
    unsignedintcoreNumber;
    unsignedint*bootMagicAddr;
    unsignedintbootEntryAddr;
    unsignedint*IPCCore;
              Init6657(); //初始化DSP
    CSL_BootCfgUnlockKicker();
    for(coreNumber=1;coreNumber<2;coreNumber++)
    {
        bootMagicAddr = (unsignedint*)(GLOBAL_ADDR(BOOT_MAGIC_ADDRESS,coreNumber));
        bootEntryAddr = GLOBAL_ADDR(BOOT_ENTRY_ADDRESS,coreNumber);
        *bootMagicAddr = bootEntryAddr;
        CSL_IPC_genGEMInterrupt(coreNumber,0);//start cores..
    }
    CSL_BootCfgLockKicker();
}
Ryan BL:

使用的TI哥的MAD工具?
貌似那套对多核的LL2支持的不是很好,镜像好像都是在主核加载的,这样的话你从核的本地内存数据实际意外覆盖了主核的L2SRAM;
建议完全使用全局地址尝试之,或尝试从核自行加载自己的镜像。

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

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1