我按照论坛上给的一个6678 IBL boot的一个流程(如下所述),但试了好久都不成功,尝试中遇到一些问题,希望能得到好心的大牛们指导 C6678 boot from PCIe by DM8127(DMDM8127 RC,C6678 EP),想修改IBL,但是烧写IBL不成功,在IBL程序未修改下把原程序编译通过,烧写不成功
烧写过程 (一)将IBL烧入EEPROM中 对I2C进行POR或IBL程序编程:(参见MCSDK的111页)
(1) 将目标板(EVM或用户板)设置在no boot/EMIF16模式,连接Jtag并加电。
(2) 在CCS环境连接目标Core0:采用evmc66xxl.gel配置文件并初始化DDR。(对于2.0.8及这之前版本的MCSDK在初始化程序中使用了DDR)
(3) 调入在CCS环境下的编程工具:program writer \eeprom \evmc66xxl \bin \eepromwriter_evm66xxl.out。
(4) 在CCS下打开内存观察窗口(view->Memory Browser):观察0x0C000000(这是共享MSM内存的首地址)下的地址。
(5) 将IBL程序i2crom_0x51_c6670_le.bin copy到目录:writer\eeprom\evmc66xxl\bin 下,同时调入CCS的内存0x0C000000处。具体方法:在CCS的内存观察窗口中按鼠标右键→调入文件“load memory” →选择文件i2crom_0x51_c6670_le.bin→不需要使用选项:“Use the file header information to set the start address and size of the memory block to be loaded”(32位宽,无交换)→按“next”即可完成。
(6) 设置配置文件:writer\eeprom\evmc66xxl\bin\eepromwriter_input.txt(注意:对这些参数进行修改时,字符的大小写,空格均不要改变原文件中的格式) ◦file_name = i2crom_0x51_c6670_le.bin (在烧录IBL时这个文件名是否需要同时改成App.bin?因而MCSDK文档上是这样的;而在烧录POST时,这两个文件名保持相同的原始文件。这儿需要注意的是,这个等烧录的文件已不是原始的*.out文件了!) ◦bus_addr = 0x51 ◦start_addr = 0 ◦swap_data = 0
(7) 在CCS环境下运行:按F5。但编程正确结束,则console终端中显示“EEPROM programming completed successfully”,否则提示错误信息。
(二)配置IBL
(8)、修改mcsdk_02_01_02_05\tools\boot_loader\ibl\src\make\bin\i2cConfig.gel的内容,将函数setConfig_c6678_main()的语句 ibl.bootModes[1].u.nandBoot.bootFormat = ibl_BOOT_FORMAT_BBLOB; 替换为 ibl.bootModes[1].u.nandBoot.bootFormat = ibl_BOOT_FORMAT_ELF;
(9)、运行程序mcsdk_2_00_04_16\tools\boot_loader\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out (10)、加载文件 i2cConfig.gel然后在CCS的DEBUG界面上点击,Srcipts->EVM c6678 IBL -> setConfig_c6678_main
(11)、几秒钟以后,在console界面上敲击回车键
提示IBL下载成功,但是我的6678设备没有IBL初始化成功,没有做PCIE初始化 8127端lspci 不能识别6678
lucky2:
您好
我同样是显示了IBL下载成功。请问你怎么判断IBL初始化是否成功?
我做6678和PC PCIe通信,PC端的Windriver软件找不到6678这边的设备ID号。不知道是否是IBL初始化没有成功
谢谢
Peishu Yan:
你好 请问问题解决了吗 我也遇到了相同的问题?这是我的联系方式希望可以提供一些资料 多谢多谢!!819590597