内存测试三步法.pdfVIP

  • 10
  • 0
  • 约1.07万字
  • 约 13页
  • 2023-02-20 发布于上海
  • 举报
. DDR内存子系统常见硬件错误及Uboot中检测流程 在 U-Boot中,Denx(U-Boot的开发商)针对常见的DDR 内存故障进行了严格的检测处理,下图描述了该检测处理过程的 三个步骤:检测数据线、地址线和DDR物理存储部件,主要涉 及这三个步骤的处理过程和方法,对于DDR子系统,是很容易 出故障并且是很难debug检测出来的,而Denx所针对 DDR 内存故障设计的检测方法是非常严谨,值得学习研究的。 . . 下面主要是相关的检测处理思路及问题: . . 1、为什么先检测数据线? 因为如果数据线是断开的,那么一切无从谈起!接下来是检测地 址线,只有数据线和地址线都通过,检测内存的存储单元才有意 义,这样的流程也利于分割定位问题。上面testing sequence 框图将整个检测过程分成三大步,用三个虚线方框表示。 2、数据线的连接错误 数据线的连接可能存在两种错误,一种是被断开,另一种布线或 生产造成互相短路。 3、如何检测数据线的连接错误 Denx 设计的数据线检测算法还是很Tricky 和精秒的,整个处 理流程如下例子:如果是两根数据线,只需要写入并读出一个 pattern=0b01 (0b 开头表示二进制数)就能判断它们是否短 路或断开。很明显,大部分的嵌入式平台不止两根数据线,我们 以64 位地址线为例,pattern = 0 能检测出奇偶位之间的数据错误。如果这个错误被排除,每两根 数据线组成一组(这是理解下一个pattern 的关键),再用相同 的办法,检测每相邻两组之间是否有短路,就得到第二个 . . pattern,就是 0b110011001100 依次类推,以4 根数 据线为一组,8 根线为一组,相继得到共6 个pattern,分别是 0xaaaaaaaaaaaaaaaa,0xcccccccccccccccc, 0xf0f0f0f0f0f0f0f0,0xff00ff00ff00ff00, 0xffff0000ffff0000,0xfffffff只要相继写入并读 出这6 个pattern 就能验证是否存在数据线交叉短路错误。 4、如何检测数据线与板上其它信号线交叉短路或断路 取以上6 个pattern 的反码,总共12 个pattern 就能检测到每 一位都可以写入和读出0 和 1。 5、什么是floating buses 错误 floating buses 会“欺骗”测试软件,如果测试软件写入并很快读 出一个值的时候,写操作会给数据线上的电容充电,总线会短暂 的保持它的状态。当测试软件读操作时,总线会返回刚写入的值, 即使实际上该数据线是断路的。 6、如何检测数据线的floating buses 错误 . . 检测floating buses 错误的算法不复杂,在写入和读回之间再 插入一次对不同地址写入不同值的操作。例如,X 写入X1 位置,Y 写入Y1 位置,再从X1 位置读出X 值则表示floating buses 错 误不存在。 7、地址线的错误 如果地址线存在错误,其症状是地址空间中的两个不同位置被映 射到同一物理存储位置。更通俗地讲,就是写一个位置 “改变” 了另一个位置。 8、地址线的错误

文档评论(0)

1亿VIP精品文档

相关文档