你好,目前使用的Uboot是seed开发板的,我把uboot烧写到自己做的板子串口无输出,自己做的板子在CCS下分别做过DDR,NANDFLASH,串口的测试,一切都是OK,但是就是启动uboot无打印,bootmode:10010,在uboot添加了点灯程序和DDR测试程序(写入一个数据,然后再读出来),发现读写失败,也就是DDR初始化失败,我也对比了CCS下的GEL和Uboot关于DDR部分的代码,一样的,也做过SW_LEVELING,结果如下:

真的不知道哪里有问题,谢谢
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.
你好,
1. 我也对比了CCS下的GEL和Uboot关于DDR部分的代码,一样的,
是代码一样,还是配置的参数都一样?
2. 也做过SW_LEVELING,结果如下
怎么会出现0的情况?你是按照你们DDR布线的长度来确定的初始值么?多次SW leveling出来值不应该有很大的差别。最优值需要更新到uboot里面。
你好,
能否在uboot挂起后(DDR初始化结束,DDR测试失败),连上仿真器(先去除所有的gel),然后读取DDR相关寄存器的值,和在gel初始化DDR后的寄存器值比较,来确认两者的配置是完全一样的?
gel里面配置的各个核的频率,DDR的频率和uboot里面配置的是否也是一样的?
之前读写失败是由于在config_ti816x_sdram_ddr调用了walking_one_test(0x80000000,0x90000000),但是奇怪的是walking_one_test后,参数改变了,不是0x80000000,而且其他的乱数据,所以导致了读写数据不同。
不使用walking_one_test,而是直接 __raw_writel(0x76767676, 0x80000000);读写正常。
uboot挂起后,我用仿真器,读取DDR相关的寄存器和gel初始化后的数据一样。
但是就是无法跳入start_armboot函数,如果把 ldr pc, _start_armboot @ jump to C code改成,bl _start_armboot 就可以进入那个函数,但是进入_start_armboot 后,无法进入_start_armboot 中调用的其他函数,比如board_init函数等
你好,
网络启动尝试过么?可以uboot可以正常运行么?
或者可以使用CCS调试一下uboot,请参考:http://www.ti.com.cn/cn/lit/an/zhca539/zhca539.pdf。
你好 :
我没有用过ccs调试,uboot到时调试过,希望我的经验可以给你提供一点帮助:
(1) ti的arm+dsp的芯片(dm368,dm3730,omap3530)物理地址直接在CS0上的,都是指定为0x8000 0000这个地址。xload和uboot基本都在0x8000 0000 + 512k这个范围活动,你的test程序没有问题,但是会不会吧uboot或者xload的代码给踩到了?
(2)ldr pc 是强制load 地址到pc寄存器实现调用,再者启动部分的汇编的代码应该是位置无关的,因此_start_armboot 这个函数的地址就是链接是内存的实际地址,我认为你说的bl _start_armboot 可以运行,是不行的。因此至于后面的board_init函数等都不会执行到。
希望对你有帮助