CN1479207A - 内存检测方法 - Google Patents
内存检测方法 Download PDFInfo
- Publication number
- CN1479207A CN1479207A CNA021367523A CN02136752A CN1479207A CN 1479207 A CN1479207 A CN 1479207A CN A021367523 A CNA021367523 A CN A021367523A CN 02136752 A CN02136752 A CN 02136752A CN 1479207 A CN1479207 A CN 1479207A
- Authority
- CN
- China
- Prior art keywords
- address
- data
- write
- retaking
- year
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种内存检测方法,包括地址线走1和走0检测、数据线走1和走0检测,其中,地址线走1(0)检测包括:在给定范围内,逐个向其中所有一个地址位为1(0)、其余地址位为0(1)单元写入地址值;写完后,逐个回读;将回读数值与写入数值进行比较,如有不一致,则报告错误;数据线走1(0)检测包括:选择一个地址;对所有一位数据线为1(0)、其余数据线为0(1)的数据,逐个将当前数据写入所选单元并回读,将回读数据与写入数据比较,如有不一致报告出错。这种内存检测方法,可以迅速完全地确定内存地址线、数据线方面有无故障即确定其正确和有效性,即能够检测出地址线恒0、恒1、短路、数据线恒0、恒1及短路,同时,有很高的效率。
Description
技术领域
本发明涉及计算机内存检测技术,具体涉及一种快速、高效、可靠的内存检测算法,尤其涉及可用于通讯领域的嵌入式***的内存检测方法。
背景技术
嵌入式***中经常需要用到各种内存如SDRAM,SSRAM。对内存进行检测,确定内存完好可用是设计调试该类***所必须的。现有技术使用内存检测方法一般是通过对内存写特殊数值如0x5555,0xAAAA然后回读比较,来检查内存是否正确。但是,这种方法能检测出的错误非常有限,一般只能检测出数据线是否有恒0、恒1或相邻两位数据线的短路。它无法检测出非相邻位数据线的短路和地址线的恒0、恒1和短路的问题。因为5的二进制是0b0101,A的二进制是0b1010,这种方法对相连数据线设置不同值也就是输出不同电平,如果数据线存在恒0、恒1或者相邻两位数据线短路,则回读的值必然与所写的数值不一致,从而发现芯片的连接错误。但是,如果是检查非相邻的数据线比如D0和D2是否短路,则写55AA就不合适了,因为55AA中D0和D2始终是相同的,就必须写别的值使得D0和D2电平不同。考虑到所有可能的情况,要检测出全部的数据线的恒0、恒1或者短路等问题,工作量很大。另外,这种方法还有一个致命的缺陷,它无法检测出地址线的恒0、恒1和短路的问题。因为它每次都是对单个地址进行写——回读——比较,如果地址线有问题,那么因为写和读是对同一个错误的地址操作,检测者就无法发觉。例如地址线A15为恒0,则写地址0x0000与写地址0x8000是一样的,实际上都是写的0x0000,但是由于这两个地址在空间上相隔很远,检测者根本无法注意到写其中一个地址时,另一个地址的值也跟着变了。同样,如果地址线存在恒1或者短路的情况,这种方法也无法检测。因此这种检测方法效率低且不可靠。如果用户要完全确定所检测的内存是否可用,就需要一种全新的方法。
发明内容
本发明要解决的技术问题为克服现有内存检测方法中存在的低效率、检测不可靠的缺点,解决嵌入式***设置和调试中存在的如何快速、完全的确定内存可用性的问题。
本发明上述技术问题这样解决,构造一种内存检测方法,至少进行地址线走1检测、地址线走0检测、数据线走1检测和数据线走0检测中的一种或一种以上的检测。
其中,所述地址线走1检测包括以下步骤:a1)在给定地址范围内,逐个向其中所有一个地址位为1、其余地址位为0的内存单元,写入该地址值;a2)写完后,对上述内存单元逐个回读;a3)将回读数值与写入数值进行比较,如果有回读数值与写入数值不一致,则表示存在地址线连接错误。
其中,所述地址线走0检测包括以下步骤:b1)在给定地址范围内,逐个向其中所有一个地址位为0、其余地址位为1的内存单元,写入该地址值;b2)写完后,逐个回读;b3)将读回数据与写入数据进行比较,如果有读出数值与写入数值不一致,则表示存在地址线连接错误。
其中,所述数据线走1检测包括以下步骤:c1)选择一个地址;c2)对所有一位数据线为1、其余数据线为0的数据,逐个执行步骤c3)-c5);c3)将当前数据写入所选内存单元;c4)从所选内存单元回读数据;c5)将回读数据与写入数据进行比较,如果读出数值与写入数值不一致,则断定存在数据线连接错误。
其中,所述数据线走0检测包括以下步骤:d1)选择一个地址;d2)对所有一位数据线为0、其余数据线为1的数据,逐个执行步骤d3)-d5);d3)将当前数据写入所选内存单元;d4)从所选内存单元回读数据;d5)将回读数据与写入数据进行比较,如果读出数值与写入数值不一致,则断定存在数据线连接错误。
实施本发明提供的内存检测方法,可以迅速完全地确定内存地址线、数据线方面有无故障即确定其正确和有效性,本发明的内存检测方法能够检测出的故障问题包括地址线恒0、恒1、短路、数据线恒0、恒1及短路。同时,本发明方法有很高的检测效率。例如,对前面的16位地址线16位数据线的情况,只需要写读内存16*4=64次。如对2M(2^21),32位内存,只需要写读内存((21-1)*2+32*2)=104次。
附图说明
图1是本发明方法中地址线走1检测的实现流程图;
图2是本发明方法中地址线走0检测的实现流程图;
图3是本发明方法中数据线走1检测的实现流程图;
图4是本发明方法中数据线走0检测的实现流程图;
图5是利用本发明方法四个部分进行内存中数据线走0检测的实现流程图。
具体实施方式
本发明提出的内存检测方法包括四个部分,分别说明如下:(一)地址线走1检测:
在给定地址范围内,对一个地址位为1、其余地址位为0的地址,写入该地址值。全部写完后,从内存中逐个回读,与写入值比较,如果有某一个读出值与原先写入值不一样,则表示存在地址线连接错误。(二)地址线走0检测:
在给定地址范围内,对一个地址位为0、其余地址位为1的地址,写入该地址值。全部写完后,从内存中逐个回读,与写入值比较,如果读出值与写入值不一样,则表示存在地址线连接错误。(三)数据线走1检测:
对一个地址,通常取测试起始地址,向该内存单元写数据,使一位数据线为1,其余为0。每写一个值,回读,比较,如果读出值与写入值不一样,则表示存在数据线连接错误。(四)数据线走0检测:
对一个地址,通常取测试起始地址,向该内存单元写数据,使一位数据线为0,其余为1。每写一个值,回读,比较,如果读出值与写入值不一样,则表示存在数据线连接错误。
下面详细说明本发明方法的上述四个部分是如何检测出地址线和数据线的错误的。为简单起见,假设一个芯片,16位数据线D0-D15,16位地址线A0-A15。作双字节寻址时,A0始终为0,可变地址线A1-A15。则进行数据线走1时,16个地址为0x0000,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000。进行数据线走0时,16个地址为0xfffe,0xfffc,0xfffa,0xfff6,0xffee,0xffde,0xffbe,0xff7e,0xfefe,0xfdfe,0xfbfe,0xf7fe,0xeffe,0xdffe,0xbffe,0x7ffe。如果存在地址线恒0的现象,例如A7为恒0,则进行数据线走1时,写数据单元0x0080,其实是写到了0x0000,即地址0x0000的值变成了0x0080,与原先写入值0x0000不符合,发现错误。进行数据线走0时,读数据单元0xfffe其实读出的是0xff7e的值,与原先写入值0xfffe不符合,发现错误。如果存在地址线恒1的情况也一样。如果是短路的情况,例如A7和A9短路,则走1时,地址0x0200与0x0080回读出来的值是一样的,走0时,地址0xff7e与0xfdfe回读出来的值是一样的。这样,就可以判断出错误。同时采用走1和走0,不仅可以判断出有没有错误,而且可以判断出错误的类型。
对数据线进行走1与走0测试的原理与前面的写0x55AA是一致的,只不过采用走1和走0可以检测出所有可能的情况,如恒0,恒1和短路。在走1时,每次对一位数据线置1,其余位置0,遍历所有数据线。比如上面的例子,16位数据线,需要写的数据为0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000。在走0时,每次对一位数据线置0,其余位置1,遍历所有数据线。比如上面的例子,16位数据线,需要写的数据为0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f,0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff。如果存在短路如D7和D9短路则走1时写0x0080和0x0200时读回的值与写入的值就不一样了,走0时写0xff7f和0xfdff时读出与写入的时就不一样了,从而可以判断出错误。如果存在恒0或恒1的情况也一样。同时进行走1和走0测试不仅可以查出错误,还能知道错误类型。
从上可见,对地址线和数据线的写-读-比较的过程是不一样的。对地址线是先全部写完再回读比较,对数据线则是写一个值,回读一个值。这一点需要注意。
图1-5中详细说明了本发明各个部分的实现流程以及综合各个方面进行内存检测的过程。
如图1所示,进行地址线走1检测,首先要根据检测内存的大小和数据宽度,确定有效地址线位Ax->Ay,向基址地址数据单元写地址值,从最低地址Ax开始走1,Ai=Ax;设置地址Ai为高、其余地址位为低电平,即Addr=基地址+(1(<Ai>;在该地址指向的内存单元写地址值即,*Addr=Addr;将地址线往高移位,即Ai=Ai+1;判断超过要检测的最高地址吗,如不是,则进行下一个地址的检测,如是,则读基地址对应内存的数值,如不等于地址值,报告错误。具体包括以下步骤:从最低地址Ax开始走1,Ai=Ax,设置地址Ai为高,其余地址为低即Addr=基地址+(1<<Ai>;从该地址指向的内存单元读取数据,即Data=*Addr,如果读出数据不等于地址值,即如果Data<>Addr,则报告错误,否则地址线向高移位,即Ai=Ai+1,判断是否超过要检测的最高地址,如不是,则返回其余单元的数据读出和比较,如是则结束检测。图2-5的进一步说明此处省略。
本发明的内存检测方法可以用于各种需要进行内存检测的场合,尤其适用于嵌入式***中***存储芯片的检测,检测的存储芯片类型包括SSRAM,SDRAM,FLASH等。当然对各种不同的芯片其读写过程是不一样的,这需要使用者自己编写不同的读写函数。对于不同的存储芯片,需要注意其特性。
在一个实验性的以太网交换机的开发过程中,交换芯片需要使用SSRAM作为以太网地址的存储表。在调试过程中,实验性地使用以上检测方法,即编写了一个内存检测程序来检测外接SSRAM的可用性。该段内存被映射到PCI的存储空间,通过PCI的输入输出函数进行读写。基地址为0x81200000,地址空间2M,在检测过程中,报告错误:
address walking 1…error found at 0x81200000 expected0x81200000,got 0x81300000;
address walking 0…error found at 0x813ffffc expected 0x813ffffc,got 0x812ffffc;
分析错误报告的内容,发现是地址线A20和A21短路,排除后,再次检测,不再报告错误,内存使用正常。从此可以看出,本发明的内存检测方法是快速高效的,对于迅速的检测和排除内存故障有很大的帮助。
Claims (5)
1、一种内存检测方法,其特征在于,至少进行地址线走1检测、地址线走0检测、数据线走1检测和数据线走0检测中的一种检测。
2、根据权利要求1所述内存检测方法,其特征在于,所述地址线走1检测包括以下步骤:a1)在给定地址范围内,逐个向其中所有一个地址位为1、其余地址位为0的内存单元,写入该地址值;a2)写完后,对上述内存单元逐个回读;a3)将回读数值与写入数值进行比较,如果有回读数值与写入数值不一致,则表示存在地址线连接错误。
3、根据权利要求1所述内存检测方法,其特征在于,所述地址线走0检测包括以下步骤:b1)在给定地址范围内,逐个向其中所有一个地址位为0、其余地址位为1的内存单元,写入该地址值;b2)写完后,逐个回读;b3)将读回数据与写入数据进行比较,如果有读出数值与写入数值不一致,则表示存在地址线连接错误。
4、根据权利要求1所述内存检测方法,其特征在于,所述数据线走1检测包括以下步骤:c1)选择一个地址;c2)对所有一位数据线为1、其余数据线为0的数据,逐个执行步骤c3)-c5);c3)将当前数据写入所选内存单元;c4)从所选内存单元回读数据;c5)将回读数据与写入数据进行比较,如果读出数值与写入数值不一致,则断定存在数据线连接错误。
5、根据权利要求1所述内存检测方法,其特征在于,所述数据线走0检测包括以下:d1)选择一个地址;d2)对所有一位数据线为0、其余数据线为1的数据,逐个执行步骤d3)-d5);d3)将当前数据写入所选内存单元;d4)从所选内存单元回读数据;d5)将回读数据与写入数据进行比较,如果读出数值与写入数值不一致,则断定存在数据线连接错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021367523A CN100388223C (zh) | 2002-08-29 | 2002-08-29 | 内存检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021367523A CN100388223C (zh) | 2002-08-29 | 2002-08-29 | 内存检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1479207A true CN1479207A (zh) | 2004-03-03 |
CN100388223C CN100388223C (zh) | 2008-05-14 |
Family
ID=34146643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021367523A Expired - Lifetime CN100388223C (zh) | 2002-08-29 | 2002-08-29 | 内存检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100388223C (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361092C (zh) * | 2005-06-24 | 2008-01-09 | 华为技术有限公司 | 一种芯片接口检测装置及方法 |
CN100386739C (zh) * | 2005-07-05 | 2008-05-07 | 英业达股份有限公司 | 计算机内存检测方法 |
CN100451985C (zh) * | 2005-12-30 | 2009-01-14 | 英业达股份有限公司 | 内存模块安装状态检测方法及*** |
CN101819546A (zh) * | 2010-03-25 | 2010-09-01 | 浪潮电子信息产业股份有限公司 | 一种安全服务器内存镜像和内存故障的检测方法 |
WO2011124185A2 (zh) * | 2011-05-16 | 2011-10-13 | 华为技术有限公司 | 内存检测方法和内存检测装置 |
CN102222025A (zh) * | 2011-06-17 | 2011-10-19 | 华为数字技术有限公司 | 一种消除内存故障的方法及装置 |
CN102495770A (zh) * | 2011-11-24 | 2012-06-13 | 曙光信息产业股份有限公司 | 一种用于计算机内存故障分析的方法及*** |
CN102798816A (zh) * | 2011-05-26 | 2012-11-28 | 上海复旦微电子集团股份有限公司 | 一种用于检测存储器译码电路的测试图形的生成方法 |
CN105630644A (zh) * | 2015-12-18 | 2016-06-01 | 无锡飞翎电子有限公司 | 洗衣机中微控制单元的内存检测方法及*** |
CN105760263A (zh) * | 2016-01-27 | 2016-07-13 | 杭州昆海信息技术有限公司 | 一种地址线故障检测的方法和装置 |
CN108447524A (zh) * | 2018-03-21 | 2018-08-24 | 清能德创电气技术(北京)有限公司 | 一种用于检测外部存储器接口故障的方法 |
CN110647436A (zh) * | 2018-06-26 | 2020-01-03 | 北京自动化控制设备研究所 | 一种ddr2/ddr3存储器的快速检测方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689466A (en) * | 1995-04-07 | 1997-11-18 | National Semiconductor Corporation | Built in self test (BIST) for multiple RAMs |
CN100392613C (zh) * | 1999-05-14 | 2008-06-04 | 英业达股份有限公司 | 通信接口卡槽的测试装置及方法 |
CN1145972C (zh) * | 2000-03-30 | 2004-04-14 | 华为技术有限公司 | 随机存储器的自动检测方法及其检测电路 |
-
2002
- 2002-08-29 CN CNB021367523A patent/CN100388223C/zh not_active Expired - Lifetime
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361092C (zh) * | 2005-06-24 | 2008-01-09 | 华为技术有限公司 | 一种芯片接口检测装置及方法 |
CN100386739C (zh) * | 2005-07-05 | 2008-05-07 | 英业达股份有限公司 | 计算机内存检测方法 |
CN100451985C (zh) * | 2005-12-30 | 2009-01-14 | 英业达股份有限公司 | 内存模块安装状态检测方法及*** |
CN101819546B (zh) * | 2010-03-25 | 2012-07-04 | 浪潮电子信息产业股份有限公司 | 一种安全服务器内存镜像和内存故障的检测方法 |
CN101819546A (zh) * | 2010-03-25 | 2010-09-01 | 浪潮电子信息产业股份有限公司 | 一种安全服务器内存镜像和内存故障的检测方法 |
CN102893263B (zh) * | 2011-05-16 | 2016-12-07 | 华为技术有限公司 | 内存检测方法和内存检测装置 |
WO2011124185A3 (zh) * | 2011-05-16 | 2012-04-19 | 华为技术有限公司 | 内存检测方法和内存检测装置 |
WO2011124185A2 (zh) * | 2011-05-16 | 2011-10-13 | 华为技术有限公司 | 内存检测方法和内存检测装置 |
CN102893263A (zh) * | 2011-05-16 | 2013-01-23 | 华为技术有限公司 | 内存检测方法和内存检测装置 |
CN102798816A (zh) * | 2011-05-26 | 2012-11-28 | 上海复旦微电子集团股份有限公司 | 一种用于检测存储器译码电路的测试图形的生成方法 |
CN102798816B (zh) * | 2011-05-26 | 2014-11-05 | 上海复旦微电子集团股份有限公司 | 一种用于检测存储器译码电路的测试图形的生成方法 |
CN102222025A (zh) * | 2011-06-17 | 2011-10-19 | 华为数字技术有限公司 | 一种消除内存故障的方法及装置 |
CN102495770B (zh) * | 2011-11-24 | 2014-01-01 | 曙光信息产业股份有限公司 | 一种用于计算机内存故障分析的方法及*** |
CN102495770A (zh) * | 2011-11-24 | 2012-06-13 | 曙光信息产业股份有限公司 | 一种用于计算机内存故障分析的方法及*** |
CN105630644A (zh) * | 2015-12-18 | 2016-06-01 | 无锡飞翎电子有限公司 | 洗衣机中微控制单元的内存检测方法及*** |
CN105630644B (zh) * | 2015-12-18 | 2019-05-21 | 无锡飞翎电子有限公司 | 洗衣机中微控制单元的内存检测方法及*** |
CN105760263A (zh) * | 2016-01-27 | 2016-07-13 | 杭州昆海信息技术有限公司 | 一种地址线故障检测的方法和装置 |
CN105760263B (zh) * | 2016-01-27 | 2019-08-06 | 新华三信息技术有限公司 | 一种地址线故障检测的方法和装置 |
CN108447524A (zh) * | 2018-03-21 | 2018-08-24 | 清能德创电气技术(北京)有限公司 | 一种用于检测外部存储器接口故障的方法 |
CN110647436A (zh) * | 2018-06-26 | 2020-01-03 | 北京自动化控制设备研究所 | 一种ddr2/ddr3存储器的快速检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100388223C (zh) | 2008-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101996689B (zh) | 存储器错误处理方法 | |
CN100388223C (zh) | 内存检测方法 | |
US9047252B1 (en) | Method and apparatus for detecting a row or a column of a memory to repair without reporting all corresponding defective memory cells | |
CN101369240B (zh) | 用于在信息处理***中管理存储错误的***和方法 | |
US6336176B1 (en) | Memory configuration data protection | |
CN1831786A (zh) | 闪速存储器数据完整性保护方法 | |
CN103703447B (zh) | Mram场的干扰检测和恢复 | |
CN1703755A (zh) | 用于自测和修复存储模块的***和方法 | |
US4912710A (en) | Self-checking random access memory | |
CN101499323B (zh) | 存储模块 | |
US20040088614A1 (en) | Management system for defective memory | |
CN112542199A (zh) | 检测flash存储出错的方法、电路、存储介质和终端 | |
CN100517254C (zh) | 数据线测试方法 | |
CN103257905B (zh) | 一种嵌入式计算机***内存数据校验电路及方法 | |
CN102339648A (zh) | 一种检错/纠错校验模块的检测方法及装置 | |
CN103165194A (zh) | 快速检测大容量NOR Flash的方法及装置 | |
CN113504876A (zh) | 数据写入方法及装置、数据读取方法及装置、电子设备 | |
CN116612803B (zh) | 一种闪存的测试方法、***、装置及存储介质 | |
TWI668566B (zh) | 記憶體檢測系統、記憶體檢測方法以及用於記憶體檢測的錯誤映射表建立方法 | |
CN1310132C (zh) | 用寄存器文件中的冗余字代替故障字的方法和计算机*** | |
CN103778968A (zh) | 结合多张快闪记忆卡的固态硬盘的检测装置及其方法 | |
CN101853198A (zh) | 地址总线的检测方法、设备和*** | |
CN101494089A (zh) | 半导体器件主位线失效的检测方法和检测*** | |
CN109726040B (zh) | 具有容错机制的小容量otprom存储器及其容错控制方法 | |
CN100392613C (zh) | 通信接口卡槽的测试装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20080514 |
|
CX01 | Expiry of patent term |