首页 > 技术知识 > 正文

解决 DDR 问题总的办法就是找规律,尝试是否能找到死机的规律,如都在某个频率下死机,休眠唤醒死

机的是否是和休眠时间多久有关等。尝试各种方法如定频,尝试不同频率,抬压,改驱动强度等逐个排

查可能性缩小问题范围。

对于在 DDR 初始化中报错的问题如果有”rd addr 0x… = 0x…”的报错基本上是焊接问题。焊接问题可以用“Rockchip 平台 DDR 测

试工具”直接找到问题点。如果报”16bit error!!!“,”W FF != R“的话表明 DDR 基本的读写都是错误的。这种情况焊接问

题概率比较大。打印”unknow device”说明颗粒基本的读写都不对,无法探测到 dram 类型。此时应该检查焊接

问题。对于个别容量不是 2 的 n 次幂的颗粒,如 768MB,1.5GB,3GB 等特殊颗粒有些版本的代码可能

没做好兼容工作,可以更新到最新 loader,如果还有异常的话可以联系 DDR 相关工程师分

析。对于 DDR loader 中报错的问题,大部分会是焊接问题,可以尝试使用 ddr 测试工具焊接专项

选择对应容量的测试项测试分析。

查看 loader 中 DDR 初始化部分 log 中的 DDR 容量行列 bank 及颗粒类型位宽信息是否正确。如果

信息错误可能引起 DDR 问题。

如下图第一行为 DDR 版本号,第 3 行 DDR 频率,第 4 行 DDR 类型,第五行从左到右分别为系统

的位宽数,列数,bank 数,行数,片选数,颗粒的位宽数和总容量。第 7 行“OUT”打印出来后表面

DDR 初始化成功并退出,再下面就是 usbplug 或者 miniloader 打印的 log。这中间 Die Bus-Width 比

实际的大不会有问题,但是比实际的小会引起死机。

解决 DDR 问题的一些手段-ddr的原理

看显示是否正常。

当系统死机时虽然 cpu 停下来了,但是 vop 依然会重复着从 DDR 中取数据并显示在屏幕上。所以

死机时可以直接观察显示的情况来初步判断 DDR 这时候的状态。

如果显示正常的话,说明这时候 DDR 的是能够正常访问的, 但是并不能说明死机和 DDR 无

关。

如果显示异常。

如下图,我们称为“花屏”,有可能是 DDR 变频的过程中死机了导致 DDR 处于不可访问状态,这时候可以定频试试。或者可能是电源问题导致 DDR 控制器逻辑异常。

排查是否是电源问题

固定 cpu/gpu 到一个较低的频率,适当提高 arm/logic 电压看看是否有改善。有改善的话可能

是电源问题。审核 layout 看是否电源上存在问题。测量电源纹波是否存在问题。排查是否信号质量问题降低 DDR 频率看看是否有明显改善,有改善的话很可能就是信号质量问题。让硬件同事审核 layout 和 gerber 文件,检查走线是否合理,参考层是否完整。适当加强减弱驱强度/odt 强度,看是否有改善。改变 RZQ 的阻值看看是否有改善。遇到过个别 220ball 的 lpddr3 需要将 RZQ 改小或者去掉才

能够恢复正常。对于白牌颗粒

对于白牌颗粒,如果排查过电源,信号质量等都没问题的情况下只能怀疑可能是存储单元有问题,

可以尝试现有遇到过的白牌颗粒的处理方法。尝试关闭 pd_idle,sr_idle 看看是否有效果。对于一些死机时屏幕有“重影”的颗粒可以尝试 bypass DRAM DLL 看是否有效果。一些存储单元有问题的颗粒可以通过 DDR 测试工具测试出来, 目前遇到的比较多的是 DDR

测试工具 March 专项能测出来的概率比较大。

需要注意的是 DDR 测试工具仅仅是作为一个辅助工具,测试工具测试 pass 并不代表颗粒或者

板子稳定性一定没问题

猜你喜欢