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.
各位专家好,最近用mcsdk_2_01_02_06里的ibl进行nand的boot程序加载,我用的是ibl里的通过I2C加载nand的例程(\mcsdk_2_01_02_06\tools\boot_loader\examples\i2c\nand\evmc6678l),加载过程完全按照ibl的烧写即配置顺序,程序的烧写也是按照nand的烧写过程,加载完毕,把开关博导相应的位置
NAND Boot:
Set the dip switches (pin1, pin2, pin3, pin4) to:
SW3(off, off, on, off),
SW4(on, off, on, on),
SW5(on, on, on, off),
SW6(on, on, on, on)
复位后电脑串口终端一直不停输出DDR OK,不知道这是什么原因,我又烧写了一个可以再CCS上运行的LED点灯程序,也不能正常点灯,请问这是什么原因啊!谢谢了!
谢谢您的解答,Andy Yin1,我也是按照你给我的这个txt上的步骤来的,只是烧写IBL,配置IBL和烧写NAND我都是一次完成的,没有重启evm板,回去再试试,谢谢了!
您好,不知道您的自加载现在成功了吗?
我现在刚刚做6678的nand flash boot,我严格按照流程,每步都是正确的,但是自加载时也是一直打印DDR ok 不过到最后会停止,到现在还是不知道是什么原因。我的MCSDK是2.01.02.05版本的。您说的烧写IBL,配置IBL和烧写NAND,每一步完成之后,我都断电,重新上电后,进行下一步操作,但是还是没有自加载成功。非常麻烦,向您请教。
您好,我在分配CMD的时候,设置如下:特意避开了IBL的运行空间0x00800000 to 0x0081BDFF.
-heap 0x1000
-stack 0x2000
MEMORY
{ /* Local L2, 0.5~1MB*/
VECTORS: o = 0x00820000 l = 0x00000200 /*o = 0x00800000 l = 0x00000200 set memory protection attribitue as execution only*/
LL2_CODE: o = 0x00820200 l = 0x0000FE00 /*o = 0x00800200 l = 0x0000FE00 set memory protection attribitue as execution only*/
LL2_R_DATA: o = 0x00830000 l = 0x00008000 /* o = 0x00810000 l = 0x00008000 set memory protection attribitue as read only*/
LL2_RW_DATA: o = 0x00838000 l = 0x00047FFF /* o = 0x00818000 l = 0x00068000 set memory protection attribitue as read/write*/
/* Shared L2 2~4MB*/
SL2: o = 0x0C000000 l = 0x00180000
SL2_RW_DATA: o = 0x18000000 l = 0x00200000 /*remapped SL2, set memory protection attribitue as read/write*/
/* External DDR3, upto 2GB per core */
DDR3_CODE: o = 0x80000000 l = 0x01000000 /*set memory protection attribitue as execution only*/
DDR3_R_DATA: o = 0x81000000 l = 0x01000000 /*set memory protection attribitue as read only*/
DDR3_RW_DATA: o = 0x82000000 l = 0x06000000 /*set memory protection attribitue as read/write*/
}
结果还是和以前一样,一直输出DDR OK,输出很多个DDR OK之后,停止。但是相同的程序,烧写到NOR FLASH中就可以自加载成功。
在此程序中,我确认的地方还有,在NAND 自加载时,连上DSP,
set IBL_UTIL=C:\ti\mcsdk_2_01_02_05\tools\boot_loader\ibl\src\util
hex6x makefile.rmd
pause
%IBL_UTIL%\btoccs\b2ccs image.hex image.dat
pause
%IBL_UTIL%\btoccs\ccs2bin image.dat image.bin
pause
我的硬件平台是:mcsdk_2_01_02_05 和TMDXEVM6678LE Rev1.0。mcsdk_2_01_02_06的也尝试过,还是和之前的一个现象,总是显示DDR OK。现在对于NAND FLASH 的自加载正在查找原因,好长时间了,没有进展呀。但是相同的程序,烧写到NOR FLASH中就可以自加载成功。谢谢~~
你好,
配置IBL时
i2cConfig.gel中的关于evm6678部分的,不知你做了这个吗
ibl.bootModes[1].u.nandBoot.bootFormat = ibl_BOOT_FORMAT_BBLOB;
改为
ibl.bootModes[1].u.nandBoot.bootFormat = ibl_BOOT_FORMAT_ELF;
.out直接重命名为.bin即可
您好 ibl的配置里改了nandBoot.bootFormat = ibl_BOOT_FORMAT_ELF,看到了I2C write complete 文件格式转换时,我两种方式都试过,一种是直接重命名改为.bin另一种用转换工具,但是两种方法都不成功
你好,那你先把所有的段放到L2里试试,我也不太清楚ibl有没有做DDR的初始化,DDR参数表用于初始化DDR的,比如spi 启动,DDR参数表和烧写镜像可以一块合成一个.dat文件,程序加载时会根据参数表配置对DDR初始化,这里似乎用不到参数表
您好 我刚才用i2cnandboot_evmc6678 工程(tools\bootload\example\i2c\nand)里面的out文件烧写试了一下 nand自加载不成功,nor可以成功,好像和DDR3没有关系,因为那个工程的cmd工程的地址映射没有用到,sections里面没有映射,只是在memory里面有定义空间大小 org len
你好,终于找到原因了,BBLOB替换成ELF时,在gel文件里面有多个地方均需要替换,之前没有发现。现在单核能够boot成功了。请问,对于多核的自加载我应该怎么实现呢?之前没有做过程序加载相关的东西,对这个没有概念。
hi jack 您好,最近我一直在做IBL NAND Flash的多核自加载,前段时间把单核core 0 的跑通了,但是多核一直不知道怎么办?不知道您是否有过类似的开发经验,有没有例程之类的可以参考一下?
你可以试下把多核镜像通过工具转成table格式再转成.bin格式,烧下这个bin文件看看。另外你可以使用MAD工具将多核镜像生成.bin文件试试。你可以查看生成的.bin文件格式,对于单核生成的.bin文件格式为:第一个32位表示cint00,随后 段0的长度,段0的地址,段0的数据,段1的长度,段1的地址,段1的数据.....IBL应该做了单核段的搬移和跳转到cint00执行。但我不太清楚IBL是否做了多核的镜像段的搬移和跳转到相应核的cint00。如果IBL只支持单核,你需要在烧入NAND的程序中利用cor0去做其他核程序段的搬移,然后跳转到相应核的cint00去执行。这样你启动了cor0,其他核也会接着启动。
zhonghong zhang 于 2014-4-24 10:47 发表了以下帖子 :
你好,终于找到原因了,BBLOB替换成ELF时,在gel文件里面有多个地方均需要替换,之前没有发现。现在单核能够boot成功了。请问,对于多核的自加��我应该怎么实现呢?之前没有做过程序加载相关的东西,对这个没有概念。
你好,请问你这里指的多个地方需要替换,是只哪些地方? gel文件里有多种DSP型号的配置,6678有哪些要配置?谢谢