我按照论坛上给的一个6678 NAND boot的一个流程(如下所述),但试了好久都不成功,尝试中遇到一些问题,希望能得到好心的大牛们指导。
(一)生成应用程序的二进制文件,烧入NAND中。
1、将LedTest.out重新命名为LedTest.bin(有人说直接改为.bin,不需要转换内容)
2、将LedTest.bin文件写入NAND中。
使用mcsdk_2_00_04_16\tools\writer\nand\evmc6678l\bin\nandwriter_evm6678l.out
其中nand_writer_input.txt文件的内容为
file_name = LedTest.bin
start_addr = 16384
(二)将IBL烧入EEPROM中
1、将i2crom_0x51_c6678_le.bin文件从"mcsdk_2_00_04_16\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
3、手动载入文件i2crom_0x51_c6678_le.bin加载到0x80000000
(三)配置IBL
1、修改mcsdk_2_00_04_16\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;
2、运行程序mcsdk_2_00_04_16\tools\boot_loader\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out
3、加载文件 i2cConfig.gel然后在CCS的DEBUG界面上点击,Srcipts->EVM c6678 IBL -> setConfig_c6678_main
4、几秒钟以后,在console界面上敲击回车键
测试是否成功
1、首先修改板子的启动模式
(pin1, pin2, pin3, pin4)
SW3(off, off, on, off),
SW4(on, off, on, on),
SW5(on, on, on, off),
SW6(on, on, on, on)
我有如下的一些问题:
【1】 第(一)和(二)大步都需要手动将.bin的文件载入到0x80000000吗?我读了下源程序,感觉需要手动载入。
【2】 在CCS.5.2中手动载入.bin文件时,在Memory browser的Load Memory功能下,需要选择Type-size,这个选择哪一种呢?有8bits,16bits,32bits,64bits。
【3】 我的程序是通过if(DNUM)来实现多核的不同工作的,如果将这种多核程序(只有一个.out文件)成功下载到NAND中,上电启动后,多核会开始工作吗?还是需要做一些多核启动什么的?
【4】 我的工程后续还需要加入BIOS系统,让他单独在一个核上运行,这会不会对程序下载有一些新的特殊要求?
【5】 EVM6678L有没有一些更简单的程序烧录方法?
希望能得到大家的及时解答。谢谢大家!
Kaka
2013/5/13