内存测试三步法
内存压力件测试方法
内存压力测试是一种评估计算机内存稳定性和可靠性的方法。
以下是进行内存压力测试的步骤:
1. 准备软件:选择一款适合的内存压力测试软件,例如Memtest86+。
这个软件可以在Windows、Linux 和Mac OS 等操作系统上运行。
2. 下载和安装软件:从官方网站或可信的软件仓库下载Memtest86+ 软件,并按照提示进行安装。
3. 运行软件:插入Memtest86+ 启动盘或启动设备,重启计算机。
在BIOS 启动菜单中选择从Memtest86+ 启动,然后按照屏幕上的提示进行操作。
4. 进行测试:在Memtest86+ 软件界面中,选择适合的测试选项(例如标准测试或高级测试),然后点击开始按钮开始测试。
测试过程可能需要一段时间,具体取决于计算机的性能和内存容量。
5. 分析结果:测试完成后,Memtest86+ 会显示测试结果。
检查是否有内存错误或问题,如果有,则可能需要更换有问题的内存条或进行其他修复措施。
请注意,内存压力测试只是一种评估内存稳定性的方法,不能保证完全避免内存问题。
因此,在测试通过后,仍然需要保持定期的硬件维护和备份重要数据,以确保计算机的稳定性和可靠性。
内存测试方法与相关技术
内存测试方法与相关技术内存测试是一项重要的技术,主要用于验证计算机系统的内存硬件是否正常工作。
内存是计算机系统中存储数据和指令的地方,对于系统的性能和稳定性起着至关重要的作用。
因此,为了保证系统的稳定性和可靠性,进行内存测试是必不可少的。
一、内存测试方法:1.覆盖测试:覆盖测试是一种常用的内存测试方法,通过写入和读取不同的数据模式来验证内存硬件的正确性。
例如,可以使用0和1两种不同的数据模式对内存进行测试,然后读取并校验写入的数据,以验证内存的正确性。
2.地址线测试:地址线测试是一种检测内存硬件地址线是否正常连接的方法。
通过向内存写入一系列特殊模式的地址,并读取到相应的数据来验证地址线是否正常工作。
3.数据线测试:数据线测试是一种检测内存硬件数据线是否正常连接的方法。
通过向内存写入一系列特殊模式的数据,并读取到相应的数据来验证数据线是否正常工作。
4.刷新测试:刷新测试是一种验证内存硬件刷新操作是否正常的方法。
内存需要定期进行刷新操作,以保持存储的数据不丢失。
通过在内存中写入数据,并暂停刷新操作的过程中,验证存储的数据是否正常保持。
5.定时测试:定时测试是一种验证内存模块是否能够按照指定时钟频率正常工作的方法。
通过提供一个特定的时钟信号,并观察是否能够正常读取和写入数据来验证内存模块的稳定性。
二、相关技术:1.双通道内存技术:双通道内存技术是指将内存控制器和内存模块分成两个独立的通道,通过同时进行读写操作来提高内存访问速度。
该技术可以在一定程度上提高内存的性能。
2.错误纠正码(ECC)技术:ECC技术是一种用于检测和纠正内存中的错误的技术。
通过引入额外的冗余位来存储校验信息,可以在读取数据时检测并纠正内存中的错误。
3.非易失性内存(NVM)技术:NVM技术是指一种能够在断电后仍然保留数据的内存技术。
与传统的易失性内存(如DRAM)不同,NVM可以持久存储数据,从而提高系统的可靠性和可用性。
4.内存频率加速技术:内存频率加速技术是一种通过提高内存控制器和内存模块的工作频率来提高内存带宽的技术。
内存条故障怎样检测和更换
内存条故障怎样检测和更换电脑在我们的日常生活和工作中扮演着重要的角色,但有时它可能会出现一些故障,其中内存条故障就是比较常见的一种。
当电脑运行缓慢、频繁死机或者无法正常启动时,内存条出现问题的可能性就不能被忽视。
那么,如何检测内存条是否故障,以及在确定故障后如何更换呢?下面我们就来详细探讨一下。
一、内存条故障的检测方法1、观察法首先,我们可以通过观察电脑的运行情况来初步判断内存条是否存在故障。
如果电脑经常出现死机、蓝屏、自动重启,或者在运行程序时非常缓慢,尤其是在多任务处理时,这可能是内存条出问题的信号。
2、系统诊断工具Windows 系统自带了一些诊断工具,可以帮助我们检测硬件问题。
在 Windows 10 中,可以按下“Windows +X”键,选择“Windows PowerShell(管理员)”,输入“mdschedexe”并回车,然后选择“立即重新启动并检查问题(推荐)”。
系统会在重启后进行内存检测,并给出检测结果。
3、内存检测软件除了系统自带的工具,还有一些专门的内存检测软件,如MemTest86+、MemTest Pro 等。
这些软件可以更深入、更全面地检测内存条的性能和稳定性。
下载并安装这些软件后,通常需要制作启动盘,然后从启动盘启动电脑进行检测。
检测过程可能需要较长时间,具体取决于内存条的容量和电脑的性能。
4、替换法如果手头有多余的内存条,可以将其插入电脑,替换原来的内存条。
如果电脑的故障消失,那么基本可以确定原来的内存条存在问题。
反之,如果故障依旧,那么问题可能出在其他硬件上。
二、确定内存条故障后的更换步骤1、准备工作在更换内存条之前,首先要关闭电脑,并拔掉电源插头,以确保安全。
同时,准备好新的内存条,确保其与电脑的主板兼容。
可以通过查看主板说明书或者在主板制造商的网站上查询相关信息来确定兼容性。
2、打开电脑机箱不同类型的机箱打开方式可能有所不同,但通常需要拧下机箱后面的螺丝。
内存条性能怎么测试
内存条性能怎么测试
内存条性能怎么测试
你们知道怎么测试内存条吗?下面是店铺带来内存条性能怎么测试的内容,欢迎阅读!
内存条性能测试方法:
检测内存的问题,把内存条拔出来,用橡皮擦把内存条上的金手指擦干净,再接回去,看电脑是否开起来了。
接下来就是主板与内存之间不兼容的问题,内存参数与主板不符,导致黑屏,建议换一条。
内存也可能导致电脑死机,看看内存插槽是否变的宽松,如果松了用热熔胶涂在内存两边加固。
还有一种是把U盘一键制作启动项启动电脑,开机按Del键进入BIOS设置,选择第二项回车。
按Hard Disk Boot Prlority Press Enter找到启动盘,按F10保存,点击回车。
进入之后选择运行硬盘内存检测扫描工具菜单,接下来再选择内存检测工具就可以了,你就等着看内存扫描结果就行了。
怎样用万能表检修内存条?
怎样用万能表检修内存条?
方法一.可以采用数字万用表或指针万用表,先量测数据引脚一共64个(D0-D63)一般未来保护内存数据脚在D0-D63上面都有一个排阻主要做线路作用,阻值在10欧姆左右,如果用数字万用表时红表笔接地,黑表笔分别接数据引脚这D0-D63正常阻值都是一样,如果量测出有其中一个阻值不正常,代表内存一定有问题,阻值过大可以排阻损坏或者内存颗粒有问题或者芯片空焊。
方法二.可以采用数字万用表或指针万用表,量测地址引脚这需要根据内存的大小来决定地址数量的,同意也有电阻或排阻值在10欧姆左右,如果用数字万用表时红表笔接地,黑表笔分别接地址引脚正常阻值都是一样,如果量测出有其中一个阻值不正常,代表内存一定有问题,阻值过大可以排阻损坏或者内存颗粒有问题或者芯片空焊。
方法三.量测时钟线也是一样,时钟线比较少并且是2根一组,最多一半不会超过6组,每一组阻值都一样。
方法四.通电量测一下内存条电压DDR2电压2.5V 与1.8V, DDR3供电电压为1.5v或1.35V, DDR4电压范围1.2V如果量测时电压过低,大部分都是内存颗粒短路造成。
诊断内存故障的方法
诊断内存故障的方法
内存故障诊断:当怀疑内存问题引起的故障时,可以按照下面的步骤进行诊断排除。
第1步:首先将BIOS恢复到出厂默认设置,然后开机测试。
第2步:如果故障依旧,接着将内存卸下,然后清洁内存及主板上的灰尘,清洁后看故障是否排除。
第3步:如果故障依旧,接着用橡皮擦拭内存的金手指,擦拭后,安装好开机测试。
第4步:如果故障依旧,接着将内存安装到另一*槽中,然后开机测试。
如果故障消失,重新检查原内存*槽的*簧片是否变形。
如果有,调整好即可。
第5步:如果更换内存*槽后,故障依旧,接着用替换法检测内存。
当用一条好的内存安装到主板,故障消失。
则可能是原内存的故障;如果故障依旧,则是主板内存*槽问题。
同时将故障内存安装到另一块好的主板上测试,如果可以正常使用,则内存与主板不兼容;如果在另一块主板上出现相同的故障,则是内存质量差或损坏。
建议暂时关闭所有带*的软件的*,如果故障排除是*引起的,可以少开*或不开*。
电脑内存故障有哪些检测方法
电脑内存故障有哪些检测方法电脑内存故障有哪些检测方法内存故障是电脑使用中较为常见的硬件故障,那么大家知道电脑内存故障有哪些检测方法呢?下面一起来看看!使用任务管理器确认内存性能在Windows?Vista和Windows?7中有监控内存的资源监控功能,可以让用户很好地掌握内存的使用情况。
具体操作步骤:打开任务管理器,单击“性能”选项卡中的“资源监视器”按钮,接着在打开的窗口中选择“内存”选项卡,大家就可以看到当前的内存使用情况。
从中观测出电脑运行中所能识别的正常内存大小,然后与实际安装内存对比,继而判断出故障内存。
如图01所示。
置换卡槽判断出内存故障缘由内存与其他设备一样,容易受到不稳定电压、过热、灰尘等方面的'影响,但在内存故障中,绝大多数问题出如今内存与插槽的接触上。
并且内存相对更容易检测,一般电脑都是4个内存插槽,两条内存插双通道。
当出现故障时可以将内存取下,换一个插槽,先插上一条内存,开机测试一下,假如不行再换另一条内存测试,如此可以确定内存本身是不是能用。
表02所示为内存故障表象和缘由。
内存故障的检测步骤电脑维修店里的工程师检测内存的故障时,都是按照专业步骤来获取信息、分析信息,最后以经验判断出内存故障的根源的。
下面来简单说一下,内存故障的检测步骤。
检测内存步骤1如果能开机,首先应在电脑内部的任务管理器中检测出电脑能识别的有效内存,这一步可以观测出电脑能使用的正常内存大小,多内存通道可判断出电脑故障是否与内存硬件错误相关;然后,观察内存使用率,如果内存识别情况没问题,但使用率比平时高出多倍或满负荷工作状态,那故障原因可能就是电脑遭恶意代码(病毒)破坏,病毒正在大量占用内存资源,这却是与电脑软故障相关,一般使用反病毒软件查杀就能解决。
检测内存步骤2如果不能开机,我们就需要打开电脑机箱,首先观察内存颗粒是否有烧焦痕迹与内存卡槽周围的电容有无冒泡,如果是颗粒损坏与电容损坏,那也只能更换内存或主板电容了,图03(内存颗粒);然后取下内存,观察内存金手指有无生锈和内存卡槽内有无污垢,然后清理金手指与内存卡槽(这时可插上开机试试);最后还要测试下内存卡槽是否有故障,可分两部测试:1、把内存插在其他卡槽测试。
电脑内存测试工具使用方法
电脑内存测试工具使用方法
电脑内存测试工具使用方法
当用户的计算机经常出现蓝屏、死机现象的时候除了排查必要的软硬件问题以外,内存的`健康状态也不可小视,不过检测内存健康状态需要U盘启动盘的帮助,那是如何使用U盘启动盘进行内存测试的呢?请根据教程中的步骤进行处理。
怎么使用U盘启动盘进行内存测试?
1、将制作好的u盘插入到电脑的USB 插口处,重启电脑,按下相应的启动快捷键进入快启动的主菜单界面后选择“运行硬盘内存检测扫描工具菜单”后按回车键确认。
2、在检测工具菜单下利用键盘上的方向键将光标移至“运行Memtest 内存检测”后按下回车键“Enter”键确认即可。
3、当我们按下回车键时系统便会自动进行内存检测,检测的时间大约会在2小时左右,等待时间可能有点长,耐心等待。
内存检测的过程中的相关数值说明:
Pass:表示检测过程中的整体进度;
Test:表示检测当前进度;
WallTime:检测时长,大约会在2小时左右;
Pass:进行内存检测的次数,经过这一次检测后,下次检测时这里的数值将会是“1”,并且每一次的检测都会累计上去。
Error ECC Errs:检测错误的次数和地点将会在此显示出来。
以上步骤便是关于怎么使用U盘启动盘进行内存测试的方法介绍,其重要使用的工具是MemT est,因为检测的时间非常漫长,建议用户在睡前或者时间空闲时再践行。
如何评估和测试内存技术的性能(五)
如何评估和测试内存技术的性能引言:内存技术在计算机领域发挥着至关重要的作用。
对于计算机硬件厂商和软件开发者来说,评估和测试内存技术的性能是确保系统稳定和高效运行的关键。
本文将探讨一些用于评估和测试内存技术性能的方法和指标。
一、内存性能测试方法为了评估内存技术的性能,我们需要使用一些专门的测试方法和工具。
以下是几种常用的内存性能测试方法:1. 吞吐量测试:通过检测内存模块在单位时间内能够传输的数据量,来评估内存技术的吞吐量。
这可以帮助我们了解内存模块的数据传输效率和速度。
2. 延迟测试:延迟是指CPU向内存请求数据并接收到响应所需的时间。
通过测试延迟,可以评估内存技术的响应速度和效率。
常见的测试方法包括读写延迟测试和随机访问延迟测试。
3. 带宽测试:带宽是指内存模块在单位时间内能够传输的最大数据量。
通过带宽测试,可以了解内存技术在大数据传输方面的表现。
常见的测试方法包括顺序读写带宽测试和随机读写带宽测试。
4. 容量测试:容量是指内存模块能够存储的数据量。
通过测试内存模块的容量,可以评估内存技术的存储能力和可靠性。
二、内存性能指标除了测试方法外,我们还需要了解一些常用的内存性能指标,以便更好地评估内存技术的性能。
1. 时钟频率:时钟频率是指内存模块的工作频率,以MHz为单位。
较高的时钟频率通常表示内存模块具有更快的数据传输速度。
2. CAS延迟:CAS延迟是指内存模块在接收到读/写命令后开始响应所需的时间,以时钟周期计算。
较低的CAS延迟通常表示内存模块具有更快的响应速度。
3. 操作带宽:操作带宽是指内存模块在单位时间内完成读取或写入操作的数据量。
较高的操作带宽表示内存模块具有更高的数据传输效率。
4. 芯片容量:芯片容量是指内存模块单个芯片能够存储的数据量。
较高的芯片容量通常表示内存模块具有更高的存储容量。
三、内存性能评估在进行内存性能测试和评估时,可以采用以下方法:1. 对比分析:通过将不同厂商或不同规格的内存模块进行对比测试,了解不同内存技术之间的性能差异。
简单测内存频率的方法
测试计算机内存频率(即内存的时钟速度)通常需要使用特定的软件工具。
以下是一些可以在不同操作系统中使用的通用方法:对于Windows用户:1. 使用Windows内置的内存诊断工具:按下Windows 键,输入Windows内存诊断,然后选择创建检查器。
在创建检查器时,选择高级选项,然后勾选内存频率。
运行诊断,工具将显示内存的频率信息。
2. 使用第三方内存检测软件:例如,使用CPUZ 这款流行的硬件监测软件,它可以显示内存的时钟速度、容量、类型等信息。
下载并安装CPUZ,启动软件后,切换到Memory 标签页,即可看到内存的频率。
对于macOS用户:1. 使用About This Mac:从菜单栏选择About This Mac,然后点击Memory 标签。
在Details 部分,你可以找到内存的规格,其中包括频率。
2. 使用System Report:打开About This Mac,点击System Report 按钮。
在System Report 中,选择Memory 部分,这里也会显示内存的频率。
对于Linux用户:1. 使用lscpu命令:在终端中输入lscpu 命令,然后按Ctrl+O 输出到文件,再按Enter。
在输出文件中查找Memory 部分,其中会包含内存频率信息。
2. 使用cat命令查看内存模块:输入cat /proc/meminfo,然后按Enter。
在输出信息中查找MemTotal 和MemAvailable 行,这些行会提供内存的总容量和可用容量,但不会直接显示频率。
请注意,这些方法提供的信息可能不会直接显示内存的时钟速度,但可以通过对比型号和规格,间接了解到内存的频率。
如果需要更详细的内存规格信息,可以查阅计算机的硬件规格说明书或联系制造商。
用万用表测量内存的方法
用万用表测量内存的方法
一、在主板与内存的数据引脚是64个,D0-D63,为了保护内存的数据位脚,在D0-D63这64个数据位脚都加有一个阻值不在的电阻(10欧)起限流作用。
而测试仪主要的原理是用程序重复测试内存芯片的每个数据位引脚,看有没有击穿或短路的数据位引脚,还有就是芯片的时钟引脚、地址引脚。
所以用万用表测试芯片时也可用测试仪的方法来测,只要红笔对地(1脚),黑笔测量排阴阻的阻值,就是内存芯片数据位的阻值来判断是哪个芯片坏了,正常的话每个数据位阻值相同。
但还是没有测试仪那么直观,用这种方法可测量DDR内存芯片的好坏。
二、用测试仪测量内存芯片方法
根据使用说明书,测量的内存在2A、2B这里,指单组和双组的意思。
但16位的芯片有8个,也相当于是两组,8位的芯片有16个也相当于两组。
2A为第二组,2B为第一组。
内存测试三步法
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,分别是0xaaaaaaaaaaaaaaaa,0xcccccccccccccccc,0xf0f0f0f0f0f0f0f0,0xff00ff00ff00ff00,0xffff0000ffff0000,0xffffffff00000000。
检测Win7系统内存的操作方法
检测Win7系统内存的操作方法
检测Win7系统内存的操作方法
大家都知道,电脑的内存越大,运行速度也就越快,对于电脑的内存问题大家不能小视。
内存问题可使计算机丢失信息或停止工作,所以我们要定期检查计算机的'内存问题。
下面是小编为大家带来的检测Win7系统内存的操作方法,欢迎阅读。
方法一:
1、Win7系统下开启,点击开始——运行,然后输入:c:windowssystem32mdsched.exe 回车;
2、系统会询问你马上重启检测还是等下一次开机时检测;
方法二:
电脑启动自检后按F8(笔记本按Fn+F8),进入高级启动选项---按ESC退出---进入WINDOWS启动管理器—按TAB键选择内存检测工具。
方法三:
电脑启动自检后直接按TAB键选择内存检测工具。
上述就是Win7内存诊断的三种操作方法,大家在检测前请保存好工作信息,以免造成工作信息丢失。
如何评估和测试内存技术的性能(六)
如何评估和测试内存技术的性能在现代计算机系统中,内存技术的性能对计算机的整体性能起着至关重要的作用。
有效评估和测试内存技术的性能,可以帮助开发者和设计师选择最佳的内存方案,以提高计算机系统的处理能力和响应速度。
本文将探讨评估和测试内存技术性能的一些方法和指标,以及应用场景。
一、延迟测试内存的延迟是指从请求内存数据到真正获得数据的时间延迟。
在评估内存性能时,延迟是一个关键指标。
我们可以通过延迟测试来评估内存的响应速度。
常见的延迟测试方法包括:读取内存内容的时间、写入内存内容的时间和随机访问内存的延迟等。
通过这些测试方法,我们可以获得内存存取延迟的数据,并与理论性能进行比较,从而评估内存技术的延迟性能。
二、带宽测试内存的带宽是指数据在单位时间内从内存到处理器的传输速度。
带宽测试可以评估内存技术的数据传输能力。
常用的带宽测试方法包括:顺序读写带宽测试和随机读写带宽测试。
通过这些测试方法,我们可以获得内存的读写带宽,并分析其是否达到设计要求。
带宽测试可以帮助我们评估内存技术的数据传输性能,进一步优化系统性能。
三、可靠性测试内存的可靠性是指内存在长期使用过程中是否能够保持数据的完整性和一致性。
可靠性测试是评估内存技术的另一个重要指标。
在可靠性测试中,我们可以模拟各种应用场景和工作负载,对内存进行读写操作,并检查数据是否出现错误和丢失。
通过可靠性测试,我们可以评估内存技术在各种条件下的稳定性和可靠性,为系统的长期使用提供保障。
四、能耗测试内存的能耗是评估内存技术性能的另一个重要因素。
随着计算机系统的发展,能源效率成为了越来越关键的考量因素。
能耗测试可以帮助我们评估内存技术在不同工作负载下的能源消耗情况。
通过测试和比较不同内存技术的功耗数据,我们可以选择最佳的内存方案,以在实际应用中提高能源利用效率。
五、应用场景对于不同的应用场景,评估和测试内存技术的方法和指标也有所不同。
例如,在高性能计算领域,带宽和延迟是最为关键的指标;而在移动设备领域,能耗和可靠性则较为重要。
内存测试三步法
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,分别是0xaaaaaaaaaaaaaaaa,0xcccccccccccccccc,0xf0f0f0f0f0f0f0f0,0xff00ff00ff00ff00,0xffff0000ffff0000,0xffffffff00000000。
电脑内存是否有问题怎么检测
电脑内存是否有问题怎么检测
内存买回来的时候,其实我们自己得先检测有没有问题,那如何检测呢?下面是店铺为大家介绍电脑内存是否有问题的检测方法,欢迎大家阅读。
电脑内存是否有问题的检测方法
设置为第一启动U盘启动(本人用的是笔记本),不同主板设置启动有所不同。
一般都是开机按del、F1健进入BIOS,boot下面设置。
加载(大白菜U盘启动盘)U盘pe系统后选“运行硬盘内存检测扫描工具菜单”。
点击“运行memtest4.20内存检测”或者“运行memtest5.0内存检测”。
按F1开始检测内存,下面是正常内存是扫描完没有错误出来的。
这是有错误的内存,一般都是开机蓝屏或运行系统卡和死机,出现错误的内存一般都不要再使用,以免造成电脑死机和蓝屏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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,分别是0xaaaaaaaaaaaaaaaa,0xcccccccccccccccc,0xf0f0f0f0f0f0f0f0,0xff00ff00ff00ff00,0xffff0000ffff0000,0xffffffff00000000。
只要相继写入并读出这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、地址线的错误检测地址线的错误检测相对简单,其算法是:1)、将地址的值作为内容写入该地址处,汇编的表示方法是(addr) = addr。
即将地址值写到地址对应的空间里,这样确保每一个位置的内容不同。
2)、依次将内存基地址的某一根地址线的值翻转(flip/toggle)得到某个地址,从该地址取值,如果该值和基地址的值相等,则表示某一位地址线有问题。
这个算法的特点是每次只检测一根地址线,方法简单有效。
9、存储单元的错误以上数据线和地址线的检测都是检测布线或工厂生产的错误,而存储单元的检测则是真正对DDR内存芯片的检测。
内存芯片的常见错误是bit-stuck,简而言之,就是让它是0,它偏为1,让它为1,它偏为0,检测方法也很简单,就是用不同的pattern 去写尽可能所有的地址并读回比较。
有一些常用的pattern如0x5555, 0xAAAA等。
10、几个简单的检测DDR故障的方法上面的DDR检测算法,虽然全面,但是耗时比较长,常常需要好几个小时,在Uboot命令行下也有几个简单的命令可以检测常见内存故障,如下所示:1)、mtest addr lenth pattern这个命令需要注意,DDR在Uboot启动后被映射到了0地址,但是uboot的代码和堆、栈空间0x10000000处开始,这些空间是不能被刷的,否则就挂死了。
2)、复制NOR flash的内容到内存中,如cp.b 0x20080000 0x7fc0 20000,然后比较cmp.b 0x20080000 0x7fc0 20000。
3)、下载kernel image到内存中,copy NOR flash 或tftp 都行,然后调用iminfo LOAD_ADDR 检测CRC错误。
第一种方法是用特定的pattern去刷DDR的空闲空间,第二种和第三种方法可以说Pattern的随机性更大一些。
当然最彻底的检测方法当然是长时间跑Linux系统,上面的方法更适用于系统不稳定时定位错误。
内存检测方法程序示例s t a t i c v o i d m o v e64(u n s i g n e d l o n g l o n g*s r c,u n s i g n e d l o n g l o n g*d e s t){*d e s t=*s r c;}/**T h i s i s64b i t w i d e t e s t p a t t e r n s.N o t e t h a t t h e y r e s i d e i n R O M*(w h i c h p r e s u m a b l y w o r k s)a n d t h e t e s t s w r i t e t h e m t o R A M w h i c h m a y*n o t w o r k.**T h e"o t h e r p a t t e r n"i s w r i t t e n t o d r i v e t h e d a t a b u s t o v a l u e s o t h e r*t h a n t h e t e s t p a t t e r n.T h i s i s f o r d e t e c t i n g f l o a t i n g b u s l i n e s.**/c o n s t s t a t i c u n s i g n ed l o n g l o n g p a t te r n[]={0x a a a a a a a a a a a a a a a a U L L,0x c c c c c c c c c c c c c c c c U L L,0x f0f0f0f0f0f0f0f0U L L,0x f f00f f00f f00f f00U L L,0x f f f f0000f f f f0000U L L,0x f f f f f f f f00000000U L L,0x00000000f f f f f f f f U L L,0x0000f f f f0000f f f f U L L,0x00f f00f f00f f00f f U L L,0x0f0f0f0f0f0f0f0f U L L,0x3333333333333333U L L,0x5555555555555555U L L};c o n s t u n s i g n ed l o n g l o n g o t he r p a t t e r n=0x0123456789a b c d ef U L L;/*数据线检测*/s t a t i c i n t m e m o r y_p o s t_d a t a l i n e(u n s i g n e d l o n g l o n g*p m e m){u n s i g n e d l o n g l o n g t e m p64=0;i n t n u m_p a t t e r n s=s i z e o f(p a t t e r n)/s i z e o f(p a t t e r n[0]);i n t i;u n s i g n e d i n t h i,l o,p a t h i,p a t l o;i n t r e t=0;f o r(i=0;i<n u m_p a t t e r n s;i++){m o v e64((u n s i g n e d l o n g l o n g*)&(p a t t e r n[i]),p m e m++);/**P u t a d i f f e r e n t p a t t e r n o n t h e d a t a l i n e s:o t h e r w i s e t h e y*m a y f l o a t l o n g e n o u g h t o r e a d b a c k w h a t w e w r o t e.*//*预防f l o a t i n g b u s e s错误*/m o v e64((u n s i g n e d l o n g l o n g*)&o t h e r p a t t e r n,p m e m--);m o v e64(p m e m,&t e m p64);#i f d e f I N J E C T_D A T A_E R R O R St e m p64^=0x00008000;#e n d i fi f(t e m p64!=p a t t e r n[i]){p a t h i=(p a t t e r n[i]>>32)&0x f f f f f f f f;p a t l o=p a t t e r n[i]&0x f f f f f f f f;h i=(t e m p64>>32)&0x f f f f f f f f;l o=t e m p64&0x f f f f f f f f;p o s t_l o g("M e m o r y(d a t e l i n e)e r r o r a t%08x,""w r o t e%08x%08x,r e a d%08x%08x!\n",p m e m,p a t h i,p a t l o,h i,l o);r e t=-1;}}r e t u r n r e t;}/*地址线检测*/s t a t i c i n t m e m o r y_p o s t_a d d r l i n e(u l o n g*t e s t a d d r,u l o n g*b a s e,u l o n g s i z e){u l o n g*t a r g e t;u l o n g*e n d;u l o n g r e a d b a c k;u l o n g x o r;i n t r e t=0;e n d=(u l o n g*)((u l o n g)b a s e+s i z e);/*p o i n t e r a r i t h!*/x o r=0;f o r(x o r=s i z e o f(u l o n g);x o r>0;x o r<<=1){/*对测试的地址的某一根地址线的值翻转*/t a r g e t=(u l o n g*)((u l o n g)t e s t a d d r^x o r);i f((t a r g e t>=b a s e)&&(t a r g e t<e n d)){/*由于t a r g e t是t e s t a d d r某一根地址线的值翻转得来故t e s t a d d r!=t a r g e t,下面赋值操作后应有*t e s t a d d r!=*t a r g e t*/*t e s t a d d r=~*t a r g e t;r e a d b a c k=*t a r g e t;#i f d e f I N J E C T_A D D R E S S_E R R O R Si f(x o r==0x00008000){r e a d b a c k=*t e s t a d d r;}#e n d i f/*出现此种情况只有t e s t a d d r==t a r g e t,即某根地址线翻转无效*/i f(r e a d b a c k==*t e s t a d d r){p o s t_l o g("M e m o r y(a d d r e s s l i n e)e r r o r a t%08x<->%08x," "X O R v a l u e%08x!\n",t e s t a d d r,t a r g e t,x o r);r e t=-1;}}}r e t u r n r e t;}s t a t i c i n t m e m o r y_p o s t_t e s t1(u n s i g n e d l o n g s t a r t, u n s i g n e d l o n g s i z e,u n s i g n e d l o n g v a l){u n s i g n e d l o n g i;u l o n g*m e m=(u l o n g*)s t a r t;u l o n g r e a d b a c k;i n t r e t=0;f o r(i=0;i<s i z e/s i z e o f(u l o n g);i++){m e m[i]=v a l;i f(i%1024==0)W A T C H D O G_R E S E T();}f o r(i=0;i<s i z e/s i z e o f(u l o n g)&&r e t==0;i++){r e a d b a c k=m e m[i];i f(r e a d b a c k!=v a l){p o s t_l o g("M e m o r y e r r o r a t%08x,""w r o t e%08x,r e a d%08x!\n",m e m+i,v a l,r e a d b a c k);r e t=-1;b r e a k;}i f(i%1024==0)W A T C H D O G_R E S E T();}r e t u r n r e t;}s t a t i c i n t m e m o r y_p o s t_t e s t2(u n s i g n e d l o n g s t a r t,u n s i g n e d l o n g s i z e) {u n s i g n e d l o n g i;u l o n g*m e m=(u l o n g*)s t a r t;u l o n g r e a d b a c k;i n t r e t=0;f o r(i=0;i<s i z e/s i z e o f(u l o n g);i++){m e m[i]=1<<(i%32);i f(i%1024==0)W A T C H D O G_R E S E T();}f o r(i=0;i<s i z e/s i z e o f(u l o n g)&&r e t==0;i++){r e a d b a c k=m e m[i];i f(r e a d b a c k!=(1<<(i%32))){p o s t_l o g("M e m o r y e r r o r a t%08x,""w r o t e%08x,r e a d%08x!\n",m e m+i,1<<(i%32),r e a d b a c k);r e t=-1;b r e a k;}i f(i%1024==0)W A T C H D O G_R E S E T();}r e t u r n r e t;}s t a t i c i n t m e m o r y_p o s t_t e s t3(u n s i g n e d l o n g s t a r t,u n s i g n e d l o n g s i z e) {u n s i g n e d l o n g i;u l o n g*m e m=(u l o n g*)s t a r t;u l o n g r e a d b a c k;i n t r e t=0;f o r(i=0;i<s i z e/s i z e o f(u l o n g);i++){m e m[i]=i;i f(i%1024==0)W A T C H D O G_R E S E T();}f o r(i=0;i<s i z e/s i z e o f(u l o n g)&&r e t==0;i++){r e a d b a c k=m e m[i];i f(r e a d b a c k!=i){p o s t_l o g("M e m o r y e r r o r a t%08x,""w r o t e%08x,r e a d%08x!\n",m e m+i,i,r e a d b a c k);r e t=-1;b r e a k;}i f(i%1024==0)W A T C H D O G_R E S E T();}r e t u r n r e t;}s t a t i c i n t m e m o r y_p o s t_t e s t4(u n s i g n e d l o n g s t a r t,u n s i g n e d l o n g s i z e) {u n s i g n e d l o n g i;u l o n g*m e m=(u l o n g*)s t a r t;u l o n g r e a d b a c k;i n t r e t=0;f o r(i=0;i<s i z e/s i z e o f(u l o n g);i++){m e m[i]=~i;i f(i%1024==0)W A T C H D O G_R E S E T();}f o r(i=0;i<s i z e/s i z e o f(u l o n g)&&r e t==0;i++){r e a d b a c k=m e m[i];i f(r e a d b a c k!=~i){p o s t_l o g("M e m o r y e r r o r a t%08x,""w r o t e%08x,r e a d%08x!\n",m e m+i,~i,r e a d b a c k);r e t=-1;b r e a k;}i f(i%1024==0)W A T C H D O G_R E S E T();}r e t u r n r e t;}s t a t i c i n t m e m o r y_p o s t_t e s t s(u n s i g n e d l o n g s t a r t,u n s i g n e d l o n g s i z e) {i n t r e t=0;i f(r e t==0)r e t=m e m o r y_p o s t_d a t a l i n e((u n s i g n e d l o n g l o n g*)s t a r t);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_a d d r l i n e((u l o n g*)s t a r t,(u l o n g*)s t a r t,s i z e);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_a d d r l i n e((u l o n g*)(s t a r t+s i z e-8), (u l o n g*)s t a r t,s i z e);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_t e s t1(s t a r t,s i z e,0x00000000);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_t e s t1(s t a r t,s i z e,0x f f f f f f f f);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_t e s t1(s t a r t,s i z e,0x55555555);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_t e s t1(s t a r t,s i z e,0x a a a a a a a a);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_t e s t2(s t a r t,s i z e);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_t e s t3(s t a r t,s i z e);W A T C H D O G_R E S E T();i f(r e t==0)r e t=m e m o r y_p o s t_t e s t4(s t a r t,s i z e);W A T C H D O G_R E S E T();r e t u r n r e t;}。