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.

C6657 SPI Boot 异常



         现在500kb小程序通过工具转换成dat有182kb,是可以通过SPI方式启动了,但是2.5Mb使用modify后的工具生成的dat文件有800kb,烧进去RBL是成功载入了,Magic Address也被填充了正确的_c_init00地址,但是程序就是跑不对,停在0x0BF716EC或是0x005D73C4这种未知的地方。

        另外说明一下:b2i2c.exe是通过修改b2i2c.c中161行的重新编译以支持较大的文件;romparse.exe是通过修改romparse.h中76行的重新编译以支持较大的文件。都是通过MINGW32工具来编译的,b2i2c.exe直接执行make操作生成的,romparse.exe于romparse层执行make TARGET=c66x I2C_BUS_ADDR=0x50操作生成的,如下图所示:

现在怀疑是DDR初始化问题,因为以前采用的是I2C IBL二级引导启动的,SPI boot如何初始化DDR就是不是很明白了,有经验的前辈,请指点一二,万分感激。

  • 今天尝试在main()开始进行while(1)控制,发现core0似乎还没有跑到应用程序空间,好像还是ddr初始化问题,郁闷

  • 第一种方法: RBL在boot前可以先初始化DDR,但没有DDR Leveling功能。
    The RBL also provides an ability for the user to configure the DDR EMIF before loading the image into the external memory during the boot process using a DDR structure.
    http://www.ti.com/lit/ug/sprugy5c/sprugy5c.pdf

    DDR3 configuration table见下面的帖子。
    http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/p/111118/307810.aspx#307810

    第二种方法:用二次bootloader, 先加载一个初始化DDR的小程序,再去加载应用程序。

  • hi,Shine Zhang

    我采用了第一种方法RBL根据DDR configuration table来初始化DDR,目前已经成功完成了单核SPI Boot。现在尝试双核SPI Boot,双核用的是不同的project,我的操作方式如下:

    1. 新project编译生成core1.out(无需DDR Init);

    2. 在原单核成功SPI Boot的工程main()中加入下列代码并重新编译出core0.out;

    //write _c_int00 address to core 1 boot magic address
    *(uint32_t *)(0x118FFFFC) = 0x1184ee60;//core1.out _c_int00 address
    //send a IPC to core 1 to boot up
    *IPCGR1 = (*IPCGR1 | 0x00000001);//#define IPCGR1 ((unsigned int*)(0x02620244))

    3. 在将core0.out通过批处理生成.dat的操作中加入下列 高亮操作,并生成了新的.dat文件

    hex6x simple1.rmd
    hex6x simple2.rmd
    mergebtbl simple1.btbl simple2.btbl simple.btbl

    b2i2c simple.btbl simple.btbl.i2c

    b2ccs simple.btbl.i2c simple.i2c.ccs

    romparse nysh.spi.map

    modify i2crom.ccs ../targetConfigs/flash/c6657_project_dyt.dat

    4. 通过nor writer烧写了新.dat文件启动后,通过jtag load symbol发现,core0正常启动,core1停在0x20Bxxxxx中未被激活,但是0x118FFFFC地址已被写入了core1的_c_int00 address,而IPCGR依旧全0,不知道是否被清空。

    最后的结果就是core0起来,core1停在RBL中无响应,附件带上.rmd,.spi.map,.cmd文件。静待佳音,希望得到您的帮助,万分感激。

    Multi Core SPI Boot.7z
  • 你好,我遇到与你类似的core1程序加载失败停在bootrom情况,导致core1程序加载失败。请问你的问题解决了吗?