各位好,最近想在6670开发板上尝试IBLNOR加载,按照论坛中的步骤(如下)
1. 将IBL烧入EEPROM中(如果事先已经烧写过,可以不用做)
1、将i2crom_0x51_c6678_le.bin文件从"mcsdk_2_00_05_17\tools\boot_loader\ibl\src\make\bin"拷贝到"mcsdk_2_00_04_16\tools\writer\eeprom\evmc6678l\bin"
2、使用mcsdk_2_00_04_16\tools\writer\eeprom\evmc6678l\bin\eepromwriter_evm6678l.out进行烧写
其中eepromwriter_input.txt的内容为:
file_name = i2crom_0x51_c6678_le.bin
bus_addr = 0x51
start_addr = 0
swap_data = 0
2. 应用程序生成ELF 的 app.out,直接更名为app.bin.
使用mcsdk_2_00_05_17\tools\writer\nor\evmc6678l\bin\norwriter_evm6678l.out 对app.bin进行烧写
其中nor_writer_input.txt文件的内容为
file_name = app.bin
start_addr = 0x80000000
烧写步骤工程readme.txt有介绍
3. 配置IBL
1、运行程序mcsdk_2_00_05_17\tools\boot_loader\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out
2、加载文件 i2cConfig.gel然后在CCS的DEBUG界面上点击,Srcipts->EVM c6678 IBL -> setConfig_c6678_main
3、几秒钟以后,在console界面上敲击回车键.
其中gel文件配置文件的方式BBLOB,另外branchaddress 也按照论坛上的配置0x80000014
1 2 3步骤时候的启动模式
(pin1, pin2, pin3, pin4)
SW3(off, on, on, on),
SW4(on, on, on, on),
SW5(on, on, on, off),
SW6(on, on, on, on)
步骤3完成之后断电重启的启动模式
(pin1, pin2, pin3, pin4)
SW3(off, off, on, off),
SW4(on, on, on, on),
SW5(on, on, on, off),
SW6(on, on, on, on)
按照这个步骤,尝试了几天了,但是进展缓慢,一直不能成功. 尝试的时候,若这三步均执行,断电重启并修改启动模式后,查看memory browser发现各个段没加载到相应的位置,且magic address也没修改为程序的入口地址;若不执行第三步,则断电重启并修改启动模式后,在ccs5上连上仿真器并connect后,发现程序还是没有跑到入口地址或者main函数处,但查看内存,发现各个段已经加载到相应的位置了,且magic address 也被修改为程序的入口地址 。
另外我想请问下我查看IBL的源码,发现里面ibl_init.c和ibl_main.c都有main函数,那么我采用这种方式加载,内部执行的是哪个main函数?
还有若我加载的程序内部有某些段分配在DDR3中,若我采用ibl nor flash这种方式加载,还需要去配置DDR3吗?若需要请问在哪边配置?
问题有点多,还请各位大神指导!
Allen35065:
1. 你的文件格式是否用的ELF?还是BBLOB?建议你先用ELF做,所以第三步中应制定为ELF文件格式;
2. DDR3需要配置,IBL不能帮助你启动DDR3,你需要先做一个DDR3配置的程序,然后从此代码二次启动,C:\ti\mcsdk_2_01_02_06\tools\boot_loader\examples\srio\srioboot_ddrinit有一个例子;
3. 6670EVM上加载是OK的,应该还是操作步骤的问题,你可以先试试C:\ti\mcsdk_2_01_02_06\tools\program_evm理解一下所有的步骤