TI中文支持网
TI专业的中文技术问题搜集分享网站

uboot停在continuing with ddr3,不往下执行

我这边焊接了50片am3352的板子,有40多片都是可以正常执行起来。但其中有四五个板子,就停在了continuing with ddr3。个人感觉是DDR出了问题,但是又不太确定。想问下,有没有办法可以验证一下?我之前看到有个帖子http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/51326.aspx提到SW leveling,但是不清楚具体是什么?  

以下是我的启动信息:

U-Boot SPL 2011.09 (Apr 30 2014 – 10:53:36)
Texas Instruments Revision detection unimplemented
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
read_eeprom() failure. continuing with ddr3

一直停在这里,就不往下执行了。

Steven Liu1:

从你的log看上去,貌似是卡在了DDR3这块上面。你可以参考:AM335x的DDR3软硬件设计以及相关资源 

DDR3 software leveling,这步是在你整版都做好、焊接完拿回来后做的。software leveling 就是一个算法程序,其作用就是针对你当前的板子布线,优化当前的 DDR3 的时序配置。这个程序的输入的是 DDR3 初始 PHY 配置(将当前的布线长度值输入到 Ratio Seed Spreadsheet 中获得),输出的是优化后的 PHY 配置。一般来说,这个算法的执行,TI 官方的做法是在 CCS 中,通过仿真器(XDS100v2 或者 560v2)链接板子,通过初始化 GEL 文件先行初始化你的板子。初始化完成后,通过 CCS 加载该算法程序,输入初值后运行获得。这里有个工作就是修改 GEL 文件使其适用于你当前的板子,里面包含了 DDR3 的 EMIF 配置和 PHY 配置两部分,这个修改过程可以参考“浅析 GEL 文件在 ARM 初始化时的作用和修改"。最终把得到的结果重新填入到 GEL 文件的 PHY 配置部分,或者是操作系统的对应配置文件中就可以了。这样 DDR3 使用的时序就是最优化的时序了。

插一句:如果是DDR3的话,是必须要做SOFTWARE leveling的。

Lee Jiejia:

回复 Steven Liu1:

原来SOFTWARE leveling是只适用于DDR3的,但是我板子上的是DDR2。关于DDR2的,有没有什么办法可以测试一下是否可以正常通信?

Lee Jiejia:

回复 Steven Liu1:

我这边的板子没有把JTAG线给引出来,所以我直接在uboot里面去读取0x80000000的数。发现这几块出问题的板子读出来的数据跟写进去的不一样。而那些可以成功启动的板子,写进去和读出来的数据是一样的。出现这种情况,是不是DDR或者CPU坏了?

Diankang Chang:

回复 Steven Liu1:

Steven Liu

你的是DDR2的话,为啥打印信息里面会出现“continuing with ddr3”?

你用的配置是DDR2的还是DDR3的呢?

从DDR配置的角度来说,还是一样要做EMIF的配置和DDR2 PHY的配置。只是不需要做software leveling。

参考:http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips#DDR_PHY_Registers

最简单的测试办法是使用仿真器通过JTAG去连板子,然后在CCS的memory browser中去读写0x80000000地址区域内的内容,如果读写都正常的话,就说明配置没问题了。

赞(0)
未经允许不得转载:TI中文支持网 » uboot停在continuing with ddr3,不往下执行
分享到: 更多 (0)