你好:
最近调试TMS320C6678的I2C引导启动,板子是自己做的,由于FPGA端映射的原因,需要从I2C的0x50bus引导启动,目前的现象是RBL已经成功将ROM中的IBL加载到缓存,而且在coreo的L2缓存的最后0xD23F bytes找到了the initial configuration of the boot process(具体来说在0X1087FFFF-0XD23F+0X8C0看到了我的Boot Parameter table),但是IBL并未执行,因为我在IBLiniti的main函数和IBLmain的main函数从开头到结尾每隔几步增加内存赋值操作,结果这些操作都没起作用,观察core register 的PC,其位置一直在基地址0x20B00000–0x20B1FFFF的boot rom空间内。观察0x0262002的DEVSTAT,其值为0x0000 000B,而且0x0262013C的BOOTCOMPLETE的对应值为1。
我的0x50的IBL是用MinGW IBL_build生成的,生成时,我的操作是按照Build Instructions将针对EVM6678的
make evm_c6678_i2c ENDIAN=little I2C_BUS_ADDR=0x51 改为
make evm_c6678_i2c ENDIAN=little I2C_BUS_ADDR=0x50直接生成。
另外,我在TMDXEVM6678L的开发板上也试过,现象一样,我们自己的板子和TMDXEVM6678L的开发板I2C引导启动这部分的电路设计及芯片是一样的,而且我自己生成的0x51的IBL是可以引导启动的。
目前很迷惑,根据现象,我是否在生成0x50的IBL是缺少了什么操作修改?还是其他什么地方做错了呢?
谢谢!
dennis wu:
首先查看BOOT_MAGIC_ADDRESS(0x0087fffc)是否为0。若为0,则RBL不会跳转到LL2继续执行IBL。