最近在调试DM6437向DDR2写入数据,发现一个奇怪的问题:向0x8000000+128M内存中写入数据,当数据值小于0x84000000时写入数据正确,但是当写入数据值大于0x84000000时,数据不正确。这是为啥呢???求解释啊!
Gary Wu:
前64M正确,64M之后就有问题,可以查下以下地方:
(1)DDR2 config:主要查行,列数配置是否与你使用的DDR2匹配;
(2)如(1)中正确,检查地址线的硬件,是否焊接或其他问题。可用几块板对比测试。
li li10:
回复 Gary Wu:
你好,我仔细比对了两个板子(一个工作正常,一个DDR写入错误),DDR芯片一样的。应该不存在配置问题的。经过不断摸索,发现以下情况:向在0x80000000+128M中不同的9个地址处写入数据,都有出错。结果如下:
write 0xF99FFFFC0x80FFFFFC=e99ffffc0x81FFFFFC=e99ffffc0x82FFFFFC=fd9ffffc0x83FFFFFC=fd9ffffc0x84000000=fd9ffffc0x84000004=fd9ffffc0x85000004=fd9ffffc0x86000004=fd9ffffc0x87000004=e99ffffc
write 0x99FF99FF0x80FFFFFC=89ff99ff0x81FFFFFC=89ff99ff0x82FFFFFC=89ff99ff0x83FFFFFC=89ff99ff0x84000000=9dff99ff0x84000004=89ff99ff0x85000004=9dff99ff
可以看到有两根数据线D26、D28数据位错误导致写入数据错误。现在板子都已经做出来了,请问如何解决这个问题呢?