检测内存测试三步法

内存测试  时间:2021-01-12  阅读:()

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 = 0b101010101010101010. . . . 能检测出奇偶位之间的数据错误。如果这个错误被排除每两根数据线组成一组这是理解下一个pattern的关键 再用相同的办法检测每相邻两组之间是否有短路就得到第二个pattern就是

0b110011001100. . . . . .依次类推以4根数据线为一组 8根线为一组相继得到共6个pattern分别是0x aaaaaaaaaaaaaaaa 

0x cccccccccccccccc  0xf0f0f0f0f0f0f0f0

0xff00ff00ff00ff00 0xffff0000ffff0000

0xffffffff00000000。只要相继写入并读出这6个pattern就能验证是否存在数据线交叉短路错误。

4、如何检测数据线与板上其它信号线交叉短路或断路

取以上6个pattern的反码总共12个pattern就能检测到每一位都可以写入和读出0和1。

5、什么是floating buses错误floatingbuses会“欺骗”测试软件如果测试软件写入并很快读出一个值的时候写操作会给数据线上的电容充电总线会短暂的保持它的状态。当测试软件读操作时总线会返回刚写入的值 即使实际上该数据线是断路的。

6、如何检测数据线的floating buses错误

检测floating buses错误的算法不复杂在写入和读回之间再插入一次对不同地址写入不同值的操作。例如 X写入X1位置,Y 写入Y1位置再从X1位置读出X值则表示floating buses错误不存在。

7、地址线的错误

如果地址线存在错误其症状是地址空间中的两个不同位置被映射到同一物理存储位置。更通俗地讲就是写一个位置却“改变”了另一个位置。

8、地址线的错误检测

地址线的错误检测相对简单其算法是

1 、将地址的值作为内容写入该地址处汇编的表示方法是(addr) = addr。即将地址值写到地址对应的空间里这样确保每一个位置的内容不同。

2 、依次将内存基地址的某一根地址线的值翻转flip/toggle得到某个地址从该地址取值如果该值和基地址的值相等则表示某一位地址线有问题。

这个算法的特点是每次只检测一根地址线方法简单有效。

9、存储单元的错误

以上数据线和地址线的检测都是检测布线或工厂生产的错误而存储单元的检测则是真正对DDR内存芯片的检测。 内存芯片的常见错误是bit-stuck简而言之就是让它是0它偏为1让它为1它偏为0检测方法也很简单就是用不同的pattern去写尽可能所有的地址并读回比较。有一些常用的pattern如0x5555, 0xAAAA等。

10、几个简单的检测DDR故障的方法

上面的DDR检测算法虽然全面但是耗时比较长常常需要好几个小时在Uboo t命令行下也有几个简单的命令可以检测常见内存故障如下所示

1 、 mtest addr lenth pattern

这个命令需要注意 DDR在Uboot启动后被映射到了0地址但是uboot的代码和堆、栈空间0x10000000处开始这些空间是不能被刷的否则就挂死了。

2、复制NOR f lash的内容到内存中如cp.b 0x200800000x7fc0

20000然后比较cmp.b 0x20080000 0x7fc0 20000。

3 、下载kernel image到内存中 copy NOR flash或tftp都行然后调用iminfo LOAD_ADDR检测CRC错误。

第一种方法是用特定的pattern去刷DDR的空闲空间第二种和第三种方法可以说Pattern的随机性更大一些。

当然最彻底的检测方法当然是长时间跑Linux系统上面的方法更适用于系统不稳定时定位错误。

内存检测方法程序示例

搬瓦工:香港PCCW机房即将关闭;可免费升级至香港CN2 GIA;2核2G/1Gbps大带宽高端线路,89美元/年

搬瓦工怎么样?这几天收到搬瓦工发来的邮件,告知香港pccw机房(HKHK_1)即将关闭,这也不算是什么出乎意料的事情,反而他不关闭我倒觉得奇怪。因为目前搬瓦工香港cn2 GIA 机房和香港pccw机房价格、配置都一样,可以互相迁移,但是不管是速度还是延迟还是丢包率,搬瓦工香港PCCW机房都比不上香港cn2 gia 机房,所以不知道香港 PCCW 机房存在还有什么意义?关闭也是理所当然的事情。点击进...

LOCVPS洛杉矶CN2线路KVM上线,洛杉矶/香港云地/香港邦联7折

LOCVPS发来了新的洛杉矶CN2线路主机上线通知,基于KVM架构,目前可与香港云地、香港邦联机房XEN架构主机一起适用7折优惠码,优惠后最低美国洛杉矶CN2线路KVM架构2GB内存套餐月付38.5元起。LOCPVS是一家成立较早的国人VPS服务商,目前提供洛杉矶MC、洛杉矶C3、和香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡、德国和荷兰等机房VPS主机,基于KVM或者XEN架构。...

快云科技:香港沙田CN2云服务器低至29元/月起;美国高防弹性云/洛杉矶CUVIP低至33.6元/月起

快云科技怎么样?快云科技是一家成立于2020年的新起国内主机商,资质齐全 持有IDC ICP ISP等正规商家。云服务器网(yuntue.com)小编之前已经介绍过很多快云科技的香港及美国云服务器了,这次再介绍一下新的优惠方案。目前,香港云沙田CN2云服务器低至29元/月起;美国超防弹性云/洛杉矶CUVIP低至33.6元/月起。快云科技的云主机架构采用KVM虚拟化技术,全盘SSD硬盘,RAID10...

内存测试为你推荐
国际域名注册怎样注册全球通用(国际)中文域名?海外主机美国主机与国内主机有哪些区别国内ip代理求一些国内《ip代理》地址大全查询ip怎么查看IP地址美国vps租用VPS服务器租用哪里的好?免费网站空间申请哪个网站可以申请免费的网页空间山东虚拟主机能否在虚拟机与主机之间建立局域网,让主机与虚拟机同时上网?沈阳虚拟主机网站慢想要换一个沈阳的双线机房域名解析域名解析是什么意思啊?花生壳域名如何使用花生壳免费域名
免费cn域名注册 lunarpages pccw 双11抢红包攻略 国外php空间 日本空间 权嘉云 php空间推荐 免费申请个人网站 中国网通测速 天翼云盘 绍兴电信 美国独立日 东莞idc 网站加速软件 新加坡空间 阿里云邮箱申请 睿云 中国电信宽带测速 hdroad 更多