内存检测方法

文档序号:6590124阅读:542来源:国知局
专利名称:内存检测方法
技术领域
本发明涉及计算机内存检测技术,具体涉及一种快速、高效、可靠的内存检测算法,尤其涉及可用于通讯领域的嵌入式系统的内存检测方法。
本发明上述技术问题这样解决,构造一种内存检测方法,至少进行地址线走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检测的实现流程图。
对一个地址,通常取测试起始地址,向该内存单元写数据,使一位数据线为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短路,排除后,再次检测,不再报告错误,内存使用正常。从此可以看出,本发明的内存检测方法是快速高效的,对于迅速的检测和排除内存故障有很大的帮助。
权利要求
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)将回读数据与写入数据进行比较,如果读出数值与写入数值不一致,则断定存在数据线连接错误。
全文摘要
一种内存检测方法,包括地址线走1和走0检测、数据线走1和走0检测,其中,地址线走1(0)检测包括在给定范围内,逐个向其中所有一个地址位为1(0)、其余地址位为0(1)单元写入地址值;写完后,逐个回读;将回读数值与写入数值进行比较,如有不一致,则报告错误;数据线走1(0)检测包括选择一个地址;对所有一位数据线为1(0)、其余数据线为0(1)的数据,逐个将当前数据写入所选单元并回读,将回读数据与写入数据比较,如有不一致报告出错。这种内存检测方法,可以迅速完全地确定内存地址线、数据线方面有无故障即确定其正确和有效性,即能够检测出地址线恒0、恒1、短路、数据线恒0、恒1及短路,同时,有很高的效率。
文档编号G06F11/18GK1479207SQ0213675
公开日2004年3月3日 申请日期2002年8月29日 优先权日2002年8月29日
发明者卢春鹏 申请人:深圳市中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1