我们自己做的的DM8127板子上用的内存是三星K4B2G1646Q-BCK0,DDR3部分时序已经按照TI提供的工具DM814x_DDR_Controller_Register_Configuration_spreadsheet_v1.0.xsl参考DDR3的内存手册计算配置了,SW leveling 也用DDR3_SlaveRatio_ByteWiseSearch_TI814x工具用仿真器测试做了相应的修改。
其中DM8127的ODT部分做了几个实验
1 DM8127的DDRPHYCR寄存器的(RD_LOCAL_ODT位)发现DM8127能正常跑起来但是可能出现不稳定的问题。
2 RD_LOCAL_ODT 配置成 2 (50欧)时内核直接跑飞。
3 RD_LOCAL_ODT 配置成 3 (100欧)时程序能启动但是跑的不太稳定。
按照DM8127的推荐的配置 RD_LOCAL_ODT 配置成2(50欧)才能正确的,为什么我们的板子会出现这个问题? 现在不知道是硬件板子PCB的问题还是我们的DDR3的配置的问题,这个问题困扰了我们很久TI的FAE能否给些建议帮我们确认问题
Aen Jone:
DM8127上DDR3 ODT如何配置?
比如上图中的DDR的驱动强度我们应该如何调试?
Eason Wang:
试试用这个.out 来验证一下DDR稳定性?
你是否有尝试过用降频的办法来看看稳定性有没有改善
Aen Jone:
回复 Eason Wang:
感谢 支持,我们做了实验把DDR的主频从533 降到 DDR 400 ,发现RD_LOCAL_ODT 配置成2(50欧)能稳定的运行。
Aen Jone:
回复 Eason Wang:
DDR3配置成533 ODT设置成2(50欧姆)我用仿真器测试你8037.BB_5F00_021_5F00_DDR3_5F00_TEST.out 打印如下:
[CortexA8] Test Suite version number is 1.0.[CortexA8] Build Date = Sep 14 2011 : Time = 10:56:06.[CortexA8] 00 Testing ddr3Test…[CortexA8] ddr3_test: TODO – Disable the cache here[CortexA8] Carrying out Incremental pattern test for DDR[0].[CortexA8] Carrying out Incremental pattern test for DDR[1].[CortexA8] PASS[CortexA8] [CortexA8] ***ALL Tests Done***
这个是不是说明DDR3 本身跑的是稳定的?
Eason Wang:
回复 Aen Jone:
所以我可以理解为,你的系统在533M DDR测试能够通过的情况下仍然有稳定性问题?
这个DDR测试可以说明DDR在该test pattern下是稳定的,实际运行情况下的DDR读写操作,比这个测试要复杂一些。
Aen Jone:
回复 Eason Wang:
我们也参考了其他公司 DM8127 上用这型号的DDR3的配置除了PCB 板子对sw leveling的影响,我觉得uboot这DDR3时序配置应该是一样的 (特别是ODT)实际中情况是我们的板子跑的很不稳定。
那么我们应该如何去测试内存得到最稳定的配置参数或者定位这个问题是硬件问题导致的?
Aen Jone:
回复 Aen Jone:
我想知道 DM8127 DDRPHYCR这个寄存器
IDLE_LOCAL_ODT 设置成2(50欧) 和设置成 3(100欧) 有什么区别对DDR的运行有什么影响?
Eason Wang:
回复 Aen Jone:
这个ODT是对信号质量有影响,你可以测量一下信号看看是否能对上。
ODT的选择一般就是50,如果你做PCB的时候单端信号阻抗匹配在50的话。
Aen Jone:
回复 Eason Wang:
我们阻抗选得是50欧的。信号看看是否能对上能不能说的具体点? 方便我们硬件工程师配合我们测试