目前,我能做到,采取NAND方式,在JTAG运行boot.out情况下,将放置于NANDFLASH 0xa0000(我的NANDFLASH 0x80000是坏块,因此将程序烧写在0xa0000,并且修改了boot中的IMAGE_OFFSET)上的应用程序copy到Memory map地址0x80000000,这时候程序是能正常运行的。
但是,我如果将刚才运行boot.out对应的bin文件烧录到NANDFLASH的0x0时,设置NAND启动(10010),板子断电重启后,应用程序是无法跑出来的。
boot_ti.bin的开头是10 85 00 00 00 04 2F 40,就是该boot大小是0x8510,放置于Memory map的地址是0x402F0400。
我看了好几遍Starterware UserGuid,找不出问题所在啊。
Yaoming Qin:
案子通过其他方式可以起来吗
zhanyi fang:
回复 Yaoming Qin:
其他方式可以的,就是这个NANDFLASH不行哦,而且我JTAG仿真的时候把boot程序拷贝到内部那个特定地址的RAM中运行了,应该说除了gel上可能做的初始化,仿真操作和直接从NANDFLASH启动一样了吧!!!
zhanyi fang:
回复 zhanyi fang:
这帖子又沉了,哎
kooking:
请问是什么平台,这个u-boot之前有没有ubl/mlo呢,理论上,u-boot执行起来后,至少会打印第一行,u-boot的版本信息和烧写日期。
有两个方法可以测试下,一是通过其它方式boot成功后,mount上nand,进行读写测试;二就是更换nand flash芯片
zhanyi fang:
回复 kooking:
这是跑裸机啊,是用Starterware的啊,不是uboot
Yaoming Qin:
回复 zhanyi fang:
1. 检查跳线方式
2. 检查你的bootloader是否是根据nand 启动方式编译的
longdm long:
回复 zhanyi fang:
boot里面的的程序都没有运行还是只有应用程序没有运行呢?
如果 boot里头的程序没有运行,你不会吧 boot_ti.bin写到里头了吧?
如果boot里头程序运行了,应该检查下boot里头是否正确的初始化 DDR和nand flash….
zhanyi fang:
回复 longdm long:
是boot_ti.bin先写到NANDFLASH 0X0处啊,然后应用程序写到0xa0000,在boot中修改跳转向量到应用程序0xa0000处啊,难道不只是这样的吗?现在是boot都没起来啊
zhanyi fang:
回复 Yaoming Qin:
是跳线接到从NANDFLASH启动的,然后也是用nandflash方式编译boot的
longdm long:
回复 zhanyi fang:
这样做是不对的,boot_ti.bin里面的头八个字节是大小和起始地址,不是运行的代码。
芯片加载之后跳转到这里不是运行代码,是无法运行的。
应该是将boot.bin 写进里头。
TI中文支持网