非破坏性的内存在线测试方法

文档序号:6515122阅读:378来源:国知局
非破坏性的内存在线测试方法
【专利摘要】本发明公开了一种非破坏性的内存在线测试方法;包括以下步骤:确定对一个内存做一次完整检测所需要的时间上限;把内存检测分布到任务主程序每个周期运行的空闲时间去执行,每个周期会检测内存的一部分,这些周期累计检测完内存的时间不能超过上述规定的时间;把单个周期内内存检测的部分再细化颗粒度,分成多个时间片执行,保证对中断或生命信号的响应时间;备份所测的内存片,再对该内存片采用破坏性测试方法,然后恢复被校验的内存片。本发明的有益效果在于实现了对大容量内存的安全检测问题,解决了在高实时性安全系统中,处于内存检查情况下,对中断响应的延时问题;使用本身属于破坏性的方法应用于非破坏性的内存在线检测中,既提高了内存故障检测覆盖率又不破坏内存的关键静态数据。
【专利说明】非破坏性的内存在线测试方法
【技术领域】
[0001]本发明属于软件算法领域,用于在线检测内存执行功能的正确性。
【背景技术】
[0002]在工业控制系统和安全信号系统(应用于航空电子、铁路信号、核电等行业)中,易失性存储器功能安全是所有安全组件中非常关键的一个,由于这类存储器可以随意存储和修改,灵活性很高,极大地改善了程序的执行效率,但同时给系统带来很大的安全隐患,在安全领域常常需要对内存做周期性检查,确保及时发现内存错误,启动故障管理机制,及时采取安全措施以避免更为严重的事故发生。
[0003]内存故障模式比较明确,可以分为三类(固定故障,耦合故障,保持信息故障)安全领域对于内存在线检测一直是业界的难点,通常的做法如下:
[0004]1.破坏性测试方法
[0005]简单测试法:交替写入0x55和Qxkk,并把数据读回,确认内存区是否正常。这种方法测试速度快,但对于耦合故障较难检测到。
[0006]走步测试法:遍历每个单元,判断每一个单元能否写入O和1,并确认任一单元写入O或I时是否造成其它任意单元的状态改变,以及检查译码器寻址是否正确.这种方法测试效率较低,对于大容量内存,测试时间非常长。
[0007]2.非破坏性测试方法
[0008]快速取反校验法:首先从存储字节单元i中读出一个字节,将其取反,然后将该反码写回到存储单元i之中,并同时存入CPU的一个寄存器中.此后再从存储单元i中读出这个反码数据,并同存于寄存器中的反码作比较.最后重复上面的过程,以恢复原来的数据.这种方法对于检查取数速率故障和存储位固定型故障有效,但查找耦合故障无效。
[0009]错误检查和纠正ECC(Error Check Correction)方法:如果所选择CPU上的内存控制器带有ECC功能,可利用ECC算法来检测内存的错误。该方法优点是检测速度极快,不影响正常的程序运行。缺点一在于需要额外的内存做支持,缺点二在于只能检测双比特错误,超过2个比特无法检出。

【发明内容】

[0010]本发明所要解决的技术问题是提供一种非破坏性的内存在线测试方法,它可以实现对大容量内存的安全检测,解决在高实时性安全系统中,处于内存检查情况下,对中断响应的延时问题;既提高内存故障检测覆盖率又不破坏内存的关键静态数据。
[0011]为了解决以上技术问题,本发明提供了一种非破坏性的内存在线测试方法;包括以下步骤:确定对一个内存做一次完整检测所需要的时间上限;把内存检测分布到任务主程序每个周期运行的空闲时间去执行,每个周期会检测内存的一部分,这些周期累计检测完内存的时间不能超过上述规定的时间;把单个周期内内存检测的部分再细化颗粒度,分成多个时间片执行,保证对中断或生命信号的响应时间;备份所测的内存片,再对该内存片采用破坏性测试方法,然后恢复被校验的内存片。
[0012]本发明的有益效果在于:实现了对大容量内存的安全检测问题,解决了在高实时性安全系统中,处于内存检查情况下,对中断响应的延时问题;使用本身属于破坏性的方法应用于非破坏性的内存在线检测中,既提高了内存故障检测覆盖率又不破坏内存的关键静态数据。
[0013]依次执行上述步骤,直到所有内存片轮流执行完毕。
[0014]备份所测的内存片,再对该内存片采用破坏性测试方法March进行测试。
[0015]结合内存失效率,确定对一个内存做一次完整检测所需要的时间上限,在这个规定的时间内必须完成内存的完整检测;
[0016]把单个周期内内存检测的部分再细化颗粒度,分成多个时间片执行,该时间片根据实际的内存大小确定。
【专利附图】

【附图说明】
[0017]下面结合附图和【具体实施方式】对本发明作进一步详细说明。
[0018]图1是本发明所述方法的示意图。
【具体实施方式】
[0019]本发明公开了一种在安全关键系统中检测内存RAM工作状况的方法。本算法可被任务主程序每周期空闲时间调度一次,或分散到多个周期的空闲时间完整执行一次,用于检测RAM是否发生了硬件故障。本发明针对RAM的功能故障模式,采用非破坏数据的方式对内存做了完整在线测试,此方法特别适合安全关键系统中对于RAM的功能监控,具有良好的安全性和实践性。可应用于铁路电子,航空航天,核电系统等安全关键领域中对于内存功能的状态监控。基于以上几点,本发明对上述算法做了更高层次的算法改进,克服了以上方法一些缺点,达到在线覆盖内存功能故障的目的。
[0020]本发明提供一种非破坏性的内存在线测试方法,该算法能够应用于包括但并不局限于安全信号系统、工业控制系统等领域。
[0021]如图1所示,本发明整个算法可以分四个阶段:
[0022]第一阶段是确定对一个RAM做一次完整检测所需要的时间上限,比如24小时,这是根据安全系统的需要,结合RAM的内存失效率(内存制造商提供数据),计算所得的时间,在这个规定的时间内必须完成RAM的完整检测;
[0023]第二阶段是把内存检测分布到任务主程序每个周期运行的空闲时间去执行,每个周期会检测内存的一部分,这些周期累计检测完内存的时间不能超过阶段一所规定的时间。
[0024]阶段三:把单个周期内内存检测的部分再细化颗粒度,分成多个时间片执行,保证对中断或生命信号的响应时间。
[0025]阶段四:备份所测的内存片,再对该内存片采用覆盖率高的破坏性测试方法,比如March等。然后恢复被校验的内存片。依次执行,直到所有内存片轮流执行完毕。
[0026]这个片段可大可小,可根据实际的内存大小来确定。颗粒度不宜过小,否者影响破坏性方法对于耦合故障检测的效果。[0027]本发明的优点是:
[0028]1.实现了对大容量内存的安全检测问题,解决了在高实时性安全系统中,处于内存检查情况下,对中断响应的延时问题。
[0029]2.使用本身属于破坏性的March方法应用于非破坏性的内存在线检测中。既提高了内存故障检测覆盖率又不破坏内存的关键静态数据。
[0030]本发明并不限于上文讨论的实施方式。以上对【具体实施方式】的描述旨在于为了描述和说明本发明涉及的技术方案。基于本发明启示的显而易见的变换或替代也应当被认为落入本发明的保护范围。以上的【具体实施方式】用来揭示本发明的最佳实施方法,以使得本领域的普通技术人员能够应用本发明的多种实施方式以及多种替代方式来达到本发明的目的。
【权利要求】
1.一种非破坏性的内存在线测试方法;其特征在于,包括以下步骤:确定对一个内存做一次完整检测所需要的时间上限; 把内存检测分布到任务主程序每个周期运行的空闲时间去执行,每个周期会检测内存的一部分,这些周期累计检测完内存的时间不能超过上述规定的时间; 把单个周期内内存检测的部分再细化颗粒度,分成多个时间片执行,保证对中断或生命信号的响应时间; 备份所测的内存片,再对该内存片采用破坏性测试方法,然后恢复被校验的内存片。
2.如权利要求1所述的非破坏性的内存在线测试方法;其特征在于,依次执行上述步骤,直到所有内存片轮流执行完毕。
3.如权利要求2所述的非破坏性的内存在线测试方法;其特征在于,备份所测的内存片,再对该内存片采用破坏性测试方法March进行测试。
4.如权利要求3所述的非破坏性的内存在线测试方法;其特征在于,结合内存失效率,确定对一个内存做一次完整检测所需要的时间上限,在这个规定的时间内必须完成内存的完整检测。
5.如权利要求4所述的非破坏性的内存在线测试方法;其特征在于,把单个周期内内存检测的部分再细化颗粒度,分成多个时间片执行,该时间片根据实际的内存大小确定。
【文档编号】G06F11/22GK103514071SQ201310473227
【公开日】2014年1月15日 申请日期:2013年10月11日 优先权日:2013年10月11日
【发明者】袁跃峰, 张小林, 林先贤 申请人:上海富欣智能交通控制有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1