您好,我在分配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*/
}
大家好,最近用mcsdk_2_01_02_06里的ibl进行nand的boot程序加载,我严格按照流程,但是自加载时一直打印DDR ok ,不过到最后会停止打印。我的过程是:首先烧写IBL,然后配置IBL,最后烧写NAND。但是相同的程序,烧写到NOR FLASH中就可以自加载成功。根据网上的有些大牛所说,我进行了如下尝试:
在NAND 自加载时,连上DSP,
- 6678芯片内部本身有boot ROM ,也就是iBL引导代码,可以完成加载前的基本初始化工作,该代码执行完后,bootcomplete 寄存器的值会置1。BOOTCOMPLETE(0x0262013C) 是 0x00000001,说明已经加载了。
- 查询加载后0x80000000有我烧写的代码数据内容,和bin文件一致。但是我看到有些人说这些代码数据应该在0x00800000空间??
- 查询MAGIC_ADDRESS(0x1x87FFFC) 为非空值。值为00803320。
- 查看Device Status Register(0x02620020) 始终是0x0000082b。
- out转bin,直接改的后缀名,烧写之后自加载不成功;采用out转hex,转ccs的dat,再转bin,烧写之后自加载也不成功。下面是转换的Bat应用脚本语言:
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
6. 每一步完成之后,我都断电,重新上电后,进行下一步操作,但是没有自加载成功。
我的硬件平台是:mcsdk_2_01_02_05 和TMDXEVM6678LE Rev1.0。mcsdk_2_01_02_06的也尝试过,还是和之前的一个现象,总是显示DDR OK。现在对于NAND FLASH 的自加载正在查找原因,好长时间了,没有进展呀。但是相同的程序,烧写到NOR FLASH中就可以自加载成功。望各位大侠多多指教,不甚感激。谢谢~~
Allen35065:
你可以按照附件做实验,看看有什么结果
zhonghong zhang:
回复 Allen35065:
谢谢啊,我先试试
zhonghong zhang:
回复 Allen35065:
感觉步骤是一样的,我用的不是POST例程,是i2cnandboot_evmc6678 工程(tools\bootload\example\i2c\nand),一个小的helloword工程,NOR FLASH可以自加载,但是NAND不行,具体现象就如我发的帖子那样,找不出来原因
Wu Feng:
回复 Allen35065:
Allen Yin 你好!
请问一下IBL是否支持自研板的NAND 启动?
在论坛上看到有说开发板上的FPGA代码将GPIO的状态固定成I2C 0x51启动,启动之后在通过Iblinit.c main 调用iblEnterRom()重新进入RBL过程。而在iblEnterRom()函数中有通过SPI读FPGA寄存器的代码,而这些都只适用于开发板,对自研的板子就不适应了。而且在这个函数中还存在对devstat寄存器写的操作,这样就可能在重新进入RBL过程时,bootmode就可能不是设置的GPIO状态。
不知您是否对这个有研究,麻烦帮忙分析下我的思路是否正确,谢谢
Allen35065:
回复 Wu Feng:
6678的话,如果要把IBL移植到自己的板上,需要改IBL的一些驱动并重新编译。
fan li2:
回复 Allen35065:
您好!
我目前在做C6678EVM上的EMIF-Nand Flash多核启动。对于单个核的单个.out文件我已实现了向Flash的烧写(重命名为.bin文件后烧写)并成功加载。
请问对于多核的多个.out文件如何烧写到Nand Flash中?
是否有类似用于NOR Flash的文件合并和格式转换的工具?如果有的话是否可以分享给我,谢谢!!
Wu Feng:
回复 fan li2:
To fan li2
可以认真看看IBL的源代码,先将代码load到flash的不同地址,修改IBL中load代码中NAND read的偏移量,分8次load代码,可以实现8核代码的加载。
至于格式转换的工具,不知TI专家是否能提供一下
wang yu1:
回复 fan li2:
你好 我也在做emif nand 启动 但就是不能成功 请问你能给我分享下操作步骤和经验吗?另外怎么将.out 转成.dat 谢谢
GANG ZHANG:
回复 fan li2:
多核的加载你可以参考mcsdk目录下的MAD程序。
eternity:
回复 fan li2:
您好,请问一下能不能直接EMIF nand flash一次加载呢,而不经过ibl?请问是否可行呢?