Rockchip平台DDR调试排查手段

1、查看串口log
1. 如果串口log是在loader中的DDR初始化部分报错的话一定是DDR问题。
2. 查看loader中DDR初始化部分log中的DDR容量行列bank及颗粒类型位宽信息是否正确。如果信息错误可能引起DDR问题。
3. 如果串口log是系统中的panic log的话,可以多尝试几次看多次panic的地址是否一致,如果一致的话基本不可能是DDR问题,如果不一致的话有可能是DDR问题,也可能是电源问题。
2、看显示是否正常。如果显示异常是DDR问题的概率比较大。
3、做排查试验:
1. arm gpu降频,定频适当抬压,如果有效果的话就不是DDR问题。基本上能确认是电源问题。
2. 关闭DDR变频功能,有效果则DDR变频导致的问题概率比较大。
3. 降低DDR频率到稳妥频率(如200M),如果有效果那很大概率是DDR信号质量有问题。

二、引起DDR问题的几个主要原因
1、电源问题:
1. layout上电容不够,电容摆放位置离芯片太远,电容分布不合理
2. 电源feedback回路没按要求从末端引回到PMU/DC-DC端 3. 敷铜有没有按照RK的layout规则处理导致电源路径太窄
4. LQFP封装的芯片正下方的GND需要堆锡保证良好接地,否则会影响芯片内部电源质量以及散热。
2、信号质量问题
1. 不等长的走线。RK大部分平台是不带各种eye training的, 不等长的走线会直接牺牲DDR 的setup/holdtime。
2. 过窄的线间距。过窄的线间距将会导致严重的串扰问题。
3. T型拓扑结构分支不等长。不等长的分支会恶化信号边沿,使边沿非单调。
4. 信号参考层回路上的不完整。在敷铜时,间隙设置过大导致过孔直接隔断参考层,会导致信号质量下降引起兼容性问题。
3、颗粒问题
1. 白牌颗粒,由于没经过测试甚至一些可能是原厂测试淘汰下来的颗粒,良率上无法保证。
2. 一些特殊渠道的颗粒,可能存在驱动强度偏弱等问题。
3. hynix 4Gb C die DDR3,如H5TQ4G63CFR ,kernel 3.10早期代码需要打补丁才能用。(后期修复了,判断标准是:只要进入kernel能正常就是fix过的,否则就需要补丁)。

三、解决DDR问题的一些手段
解决DDR问题总的办法就是找规律,尝试是否能找到死机的规律,如都在某个频率下死机,休眠唤醒死机的是否是和休眠时间多久有关等。尝试各种方法如定频,尝试不同频率,抬压,改驱动强度等逐个排查可能性缩小问题范围。
1、对于在DDR初始化中报错的问题
1. 如果有"rd addr 0x... = 0x..."的报错基本上是焊接问题。焊接问题可以用“Rockchip平台DDR测试工具”直接找到问题点。
2. 如果报”16bit error!!!“,”W FF != R“的话表明DDR基本的读写都是错误的。这种情况焊接问题概率比较大。
3. 打印"unknow device"说明颗粒基本的读写都不对,无法探测到dram类型。此时应该检查焊接问题。
4. 对于个别容量不是2的n次幂的颗粒,如768MB,1.5GB,3GB 等特殊颗粒有些版本的代码可能没做好兼容工作,可以更新到最新loader,如果还有异常的话可以联系DDR相关工程师分析。
5. 对于DDR loader中报错的问题,大部分会是焊接问题,可以尝试使用ddr测试工具焊接专项选择对应容量的测试项测试分析。
2、查看loader中DDR初始化部分log中的DDR容量行列bank及颗粒类型位宽信息是否正确。如果信息错误可能引起DDR问题。
如下图第一行为DDR版本号,第3行DDR频率,第4行DDR类型,第五行从左到右分别为系统的位宽数,列数,bank数,行数,片选数,颗粒的位宽数和总容量。第7行“OUT"打印出来后表面DDR初始化成功并退出,再下面就是usbplug或者miniloader 打印的log。这中间Die Bus-Width比实际的大不会有问题,但是比实际的小会引起死机。


3、看显示是否正常。
当系统死机时虽然cpu停下来了,但是vop依然会重复着从DDR中取数据并显示在屏幕上。所以死机时可以直接观察显示的情况来初步判断DDR这时候的状态。
1. 如果显示正常的话,说明这时候DDR的是能够正常访问的, 但是并不能说明死机和DDR无关。
“花屏”,有可能是DDR变频的过程中死机了导致DDR处于不可访问状态,这时候可以定频试试。或者可能是电源问题导致DDR控制器逻辑异常。
“重影”,之前遇到类似的情况是由于板子参考层不完整,导致DDR3异常。可尝试提高VCC_DDR电压到1.6V或者将颗粒的dll bypass掉解决。
4、排查是否是电源问题
1. 固定cpu/gpu到一个较低的频率,适当提高arm/logic电压看看是否有改善。有改善的话可能是电源问题。
2. 审核layout看是否电源上存在问题。
3. 测量电源纹波是否存在问题。

你可能感兴趣的:(linux,ubuntu,android)