CN110659150A - 微控制单元内存的检测方法以及相关装置 - Google Patents

微控制单元内存的检测方法以及相关装置 Download PDF

Info

Publication number
CN110659150A
CN110659150A CN201910959105.2A CN201910959105A CN110659150A CN 110659150 A CN110659150 A CN 110659150A CN 201910959105 A CN201910959105 A CN 201910959105A CN 110659150 A CN110659150 A CN 110659150A
Authority
CN
China
Prior art keywords
data
memory
unit
memory cell
write
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
Application number
CN201910959105.2A
Other languages
English (en)
Other versions
CN110659150B (zh
Inventor
黄思友
刘尚林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHENZHEN CHIPSBANK TECHNOLOGY Co Ltd
Original Assignee
SHENZHEN CHIPSBANK TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHENZHEN CHIPSBANK TECHNOLOGY Co Ltd filed Critical SHENZHEN CHIPSBANK TECHNOLOGY Co Ltd
Priority to CN201910959105.2A priority Critical patent/CN110659150B/zh
Publication of CN110659150A publication Critical patent/CN110659150A/zh
Application granted granted Critical
Publication of CN110659150B publication Critical patent/CN110659150B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

本申请实施例公开了一种微控制单元内存的检测方法以及相关装置,可以实现对微控制单元每个内存单元的二进制位的状态切换,测试结果更加准确。本申请实施例方法包括:确定微控制单元内存中的第一内存单元,向第一内存单元写入第一数据,读取第一内存单元的第一写入数据,判断第一写入数据是否为第一数据,若第一写入数据是第一数据,则向第一内存单元写入第二数据,第二数据与第一数据互为互补随机数,读取第一内存单元的第二写入数据,判断第二写入数据是否为第二数据,若第二写入数据是第二数据,则确定第一内存单元正常,若第二写入数据不是第二数据,则确定第一内存单元异常,若第一写入数据不是第一数据,则确定第一内存单元异常。

Description

微控制单元内存的检测方法以及相关装置
技术领域
本申请实施例涉及内存检测领域,特别涉及微控制单元内存的检测方法以及相关装置。
背景技术
微控制单元(microcontroller unit,MCU),又称单片微型计算机或者单片机,是把中央处理器(central processing unit,CPU)的频率与规格做适当缩减,并将内存、计数器、模数转换等周边接口都整合在单一芯片上,形成芯片级的计算机。在MCU中,内存也叫随机存取存储器(random access memory,RAM),也叫主存,是与CPU直接交换数据的内部存储器,内存有许许多多的内存单元构成,一个内存单元一般可以存储一个字节的数据,一个内存单元一般由八个二进制位组成,每个二进制位有两种状态0或1。内存是与CPU直接交换数据的内部存储器,它可以随时读写,而且速度很快,通常作为CPU中运行程序的临时数据存储媒介、或与硬盘等外部存储器交换的数据的临时数据存储媒介。内存的数据存储在内存单元中,内存单元中的数据被正确存储决定了CPU运算与控制的正确,为了有效监控并及时发现有错误的内存单元,避免CPU运算与控制的错误,需要对内存单元的状态进行有效的测试监控。现有技术中,对内存单元主要进行静态测试和/或动态测试,静态测试方法用于检测启动时内存单元是否有错误,动态测试用于在内存单元工作过程中定时启动检测内存是否有错误,以便于CPU运算与控制的正确。
现有技术中,静态测试具体为,当微控制单元启动时,对微控制单元全部内存单元进行一次写入数据再读取数据,对比内存单元读取的数据与写的数据是否正确,若正确,则确定该内存单元是正常,若不正确,则确定该内存单元异常,当全部内存单元都是正常时,确定该微控制单元内存正常。动态测试具体为,在微控制单元工作时,对微控制单元特定内存单元进行一次写入数据再读取数据,对比这些特定位置的内存单元的写读数据是否正确,若正确,则确定该内存单元是正常,若不正确,则确定该内存单元异常,当全部特定位置的内存单元都是正常时,则确定该微控制单元内存正常,完成一次动态测试执行,等待下一次动态测试的定时触发。
现有技术中的静态测试方法和动态测试方法存在的缺陷是:这种测试方法即使确定该内存单元读出的数据是写入的数据,也不能确保该数据所在的内存单元对应的全部二进制位都发生状态切换,检测不够全面,导致测试结果可能不准确。比如,对内存为8位的微控制单元的某个内存单元写入数据00000001,读出该内存单元的数据是00000001,在现有技术的测试中会确定该内存单元是正常,但是当该内存单元的原始数据中8位二进制数值有一位或多位与写入数据00000001的数值一致时,测试输入的数据并没有令存储该数据的内存单元的二进制位发生状态切换,即可能存在部分或者全部二进制位实际上未经过状态切换,也就是说现有技术的检测方法不能确保每一个内存单元二进制位的状态都发生切换,导致测试结果可能不准确。
发明内容
本申请实施例提供了一种微控制单元内存的检测方法以及相关装置,可以实现对微控制单元每个内存单元的二进制位的状态切换,测试结果更加准确。
本申请实施例第一方面提供一种微控制单元内存的检测方法,包括:
当微控制单元启动时,确定微控制单元内存中的第一内存单元;
向所述第一内存单元写入第一数据;
读取所述第一内存单元的第一写入数据;
判断所述第一写入数据是否为所述第一数据;
若所述第一写入数据是所述第一数据,则向所述第一内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数,读取所述第一内存单元的第二写入数据,判断所述第二写入数据是否为所述第二数据,若所述第二写入数据是所述第二数据,则确定所述第一内存单元正常,若所述第二写入数据不是所述第二数据,则确定所述第一内存单元异常;
若所述第一写入数据不是所述第一数据,则确定所述第一内存单元异常。
本申请实施例第二方面提供一种微控制单元内存的检测方法,包括:
当微控制单元工作时,确定微控制单元内存中的第二内存单元;
将所述第二内存单元的第二内存数据保存;
向所述第二内存单元写入第一数据;
读取所述第二内存单元的第一写入数据;
判断所述第一写入数据是否为所述第一数据;
若所述第一写入数据是所述第一数据,则向所述第二内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数,读取所述第二内存单元的第二写入数据,判断所述第二写入数据是否为所述第二数据,若所述第二写入数据是所述第二数据,则确定所述第二内存单元正常,向所述第二内存单元恢复所述保存的第二内存数据,若所述第二写入数据不是所述第二数据,则确定所述第二内存单元异常;
若所述第一写入数据不是所述第一数据,则确定所述第二内存单元异常。
可选地,在所述将所述第二内存单元的第二内存数据保存之前,该方法还包括:
确定微控制单元内存中空闲的第三内存单元;
向所述第三内存单元写入第一数据;
读取所述第三内存单元的第一写入数据;
判断所述第一写入数据是否为所述第一数据;
若所述第一写入数据是所述第一数据,则向所述第三内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数,读取所述第三内存单元的第二写入数据,判断所述第二写入数据是否为所述第二数据,若所述第二写入数据是所述第二数据,则确定所述第三内存单元正常,将所述第三内存单元作为第一缓冲器,所述第一缓冲器用于保存所述第二内存数据,触发将所述第二内存单元的第二内存数据保存的步骤,若所述第二写入数据不是所述第二数据,则确定所述第三内存单元异常;
若所述第一写入数据不是所述第一数据,则确定所述第三内存单元异常。
本申请实施例第三方面提供一种微控制单元内存的检测方法,包括:
当微控制单元启动时,确定微控制单元内存中的第四内存单元和第五内存单元;
向所述第四内存单元和所述第五内存单元分别写入第一数据和第二数据,所述第二数据与所述第一数据互为互补随机数;
读取所述第四内存单元和所述第五内存单元的第一写入数据;
判断所述第四内存单元的第一写入数据是否为所述第一数据以及所述第五内存单元的第一写入数据是否为所述第二数据;
若所述第四内存单元的第一写入数据是所述第一数据以及所述第五内存单元的第一写入数据是所述第二数据,则向所述第四内存单元写入所述第二数据以及向所述第五内存单元写入所述第一数据,读取所述第四内存单元以及所述第五内存单元的第二写入数据,判断所述第四内存单元的第二写入数据是否为所述第二数据以及所述第五内存单元的第二写入数据是否为所述第一数据,若所述第四内存单元的第二写入数据是所述第二数据以及所述第五内存单元的第二写入数据是所述第一数据,则确定所述第四内存单元和所述第五内存单元正常,若所述第四内存单元的数据不是所述第二数据和/或所述第五内存单元的数据不是所述第一数据,则确定所述第四内存单元和/或所述第五内存单元异常;
若所述第四内存单元的第一写入数据不是所述第一数据和/或所述第五内存单元的第一写入数据不是所述第二数据,则确定所述第四内存单元和/或所述第五内存单元异常。
本申请实施例第四方面提供一种微控制单元内存的检测方法,包括:
当微控制单元工作时,确定微控制单元内存中的第六内存单元和第七内存单元;
将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存;
向所述第六内存单元和所述第七内存单元分别写入第一数据和第二数据,所述第一数据与第二数据互为互补随机数;
读取所述第六内存单元和所述第七内存单元的第一写入数据;
判断所述第六内存单元的第一写入数据是否为所述第一数据以及所述第七内存单元的第一写入数据是否为所述第二数据;
若所述第六内存单元的第一写入数据是所述第一数据以及所述第七内存单元的第一写入数据是所述第二数据,则向所述第六内存单元写入第二数据以及向所述第七内存单元写入第一数据,读取所述第六内存单元和所述第七内存单元的第二写入数据,判断所述第六内存单元的第二写入数据是否为所述第二数据以及所述第七内存单元的第二写入数据是否为所述第一数据,若所述第六内存单元的第二写入数据是所述第二数据以及所述第七内存单元的第二写入数据是所述第一数据,则确定所述第六内存单元和所述第七内存单元正常,向所述第六内存单元恢复保存的所述第六内存数据以及向所述第七内存单元恢复保存的所述第七内存数据,若所述第六内存单元的第二写入数据不是所述第二数据和/或所述第七内存单元的第二写入数据不是第一数据,则确定所述第六内存单元和/或第七内存单元异常;
若所述第六内存单元的第一写入数据不是所述第一数据和/或所述第七内存单元的第一写入数据不是所述第二数据,则确定所述第六内存单元和/或第七内存单元异常。
可选地,在将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存之前,该方法还包括:
确定微控制单元内存中空闲的第十内存单元和空闲的第十一内存单元;
向所述第十内存单元和所述第十一内存单元分别写入第一数据和第二数据,所述第二数据与第一数据互为互补随机数;
读取所述第十内存单元和所述第十一内存单元的第一写入数据;
判断所述第十内存单元的第一写入数据是否为所述第一数据和所述第十一内存单元的第一写入数据是否为所述第二数据;
若所述第十内存单元的第一写入数据是所述第一数据和所述第十一内存单元的第一写入数据是所述第二数据,则向所述第十内存单元写入所述第二数据以及所述第十一内存单元写入所述第一数据,读取所述第十内存单元和所述第十一单元的第二写入数据,判断所述第十内存单元的第二写入数据是否为所述第二数据和所述第十一内存单元的第二写入数据是否为所述第一数据,若所述第十内存单元的第二写入数据是所述第二数据以及所述第十一内存单元的第二写入数据是所述第一数据,则确定所述第十内存单元正常和所述第十一内存单元正常,将所述第十内存单元作为第二缓冲器以及将所述第十一内存单元作为第三缓冲器,所述第二缓冲器用于保存所述第六内存数据以及所述第三缓冲器用于保存所述第七内存数据,触发将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存的步骤,若所述第十内存单元的第二写入数据不是所述第二数据和/或所述第十一内存单元的第二写入数据不是所述第一数据,则确定所述第十内存单元或所述第十一内存单元异常;
若所述第十内存单元的第一写入数据不是所述第一数据和/或所述第十一内存单元的第一写入数据不是所述第二数据,则确定所述第十内存单元或所述第十一内存单元异常。
可选地,所述第四内存单元和所述第五内存单元的内存地址是连续的,或所述第六内存单元和所述第七内存单元的内存地址是连续的。
可选地,在向所述第六内存单元恢复保存的所述第六内存数据以及向所述第七内存单元恢复保存的所述第七内存数据之后,该方法还包括:
获取第六内存单元的第六地址和第七内存单元的第七地址;
对所述第六地址加二,得到第八地址;
对所述第七地址加二,得到第九地址;
获取所述微控制单元内存的最大地址;
判断所述第八地址或所述第九地址是否大于或者等于所述最大地址;
若所述第八地址或所述第九地址大于或者等于所述最大地址,则确定所述微控制单元内存正常,确定完成所述微控制单元内存的检测;
若所述第八地址或所述第九地址小于所述最大地址,则获取所述第八地址的第八内存单元和所述第九地址的第九内存单元;
将所述第八内存单元作为第六内存单元和将所述第九内存单元作为第七内存单元;
返回执行将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存的步骤。
可选地,当微控制单元的内存为8位时,则第一数据等于0x55,第二数据等于0xAA、或当微控制单元的内存为16位时,则第一数据等于0x5555,第二数据等于0xAAAA。
可选地,所述微控制单元内存是集成到片上系统内部的内存或在片上系统拓展的内存。
本申请实施例第五方面提供一种微控制单元内存的检测装置,包括:
确定单元,用于当微控制单元启动时,确定微控制单元内存中的第一内存单元;
写入单元,用于向所述第一内存单元写入第一数据;
读取单元,用于读取所述第一内存单元的第一写入数据;
判断单元,用于判断所述第一写入数据是否为所述第一数据;
写入单元,还用于若所述第一写入数据是所述第一数据,则向所述第一内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数;
读取单元,还用于读取所述第一内存单元的第二写入数据;
判断单元,还用于判断所述第二写入数据是否为所述第二数据;
确定单元,还用于若所述第二写入数据是所述第二数据,则确定所述第一内存单元正常,还用于若所述第二写入数据不是所述第二数据,则确定所述第一内存单元异常,还用于若所述第一写入数据不是所述第一数据,则确定所述第一内存单元异常。
本申请实施例第六方面提供一种微控制单元内存的检测装置,包括:
确定单元,用于当微控制单元工作时,确定微控制单元内存中的第二内存单元;
保存单元,用于将所述第二内存单元的第二内存数据保存;
写入单元,用于向所述第二内存单元写入第一数据;
读取单元,用于读取所述第二内存单元的第一写入数据;
判断单元,用于判断所述第一写入数据是否为所述第一数据;
写入单元,还用于若所述第一写入数据是所述第一数据,则向所述第二内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数;
读取单元,还用于读取所述第二内存单元的第二写入数据;
判断单元,还用于判断所述第二写入数据是否为所述第二数据;
确定单元,还用于若所述第二写入数据是所述第二数据,则确定所述第二内存单元正常;
恢复单元,用于向所述第二内存单元恢复所述保存的第二内存数据;
确定单元,还用于若所述第二写入数据不是所述第二数据,则确定所述第二内存单元异常;
确定单元,还用于若所述第一写入数据不是所述第一数据,则确定所述第二内存单元异常。
可选地,所述微控制单元内存的检测装置还包括:
确定单元,还用于确定微控制单元内存中空闲的第三内存单元;
写入单元,还用于向所述第三内存单元写入第一数据;
读取单元,还用于读取所述第三内存单元的第一写入数据;
判断单元,还用于判断所述第一写入数据是否为所述第一数据;
写入单元,还用于若所述第一写入数据是所述第一数据,则向所述第三内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数;
读取单元,还用于读取所述第三内存单元的第二写入数据;
判断单元,还用于判断所述第二写入数据是否为所述第二数据;
确定单元,还用于若所述第二写入数据是所述第二数据,则确定所述第三内存单元正常;
作为单元,用于将所述第三内存单元作为第一缓冲器,所述第一缓冲器用于保存所述第二内存数据;
触发单元,用于触发将所述第二内存单元的第二内存数据保存的步骤;
确定单元,还用于若所述第二写入数据不是所述第二数据,则确定所述第三内存单元异常;
确定单元,还用于若所述第一写入数据不是所述第一数据,则确定所述第三内存单元异常。
本申请实施例第七方面提供一种微控制单元内存的检测装置,包括:
确定单元,用于当微控制单元启动时,确定微控制单元内存中的第四内存单元和第五内存单元;
写入单元,用于向所述第四内存单元和所述第五内存单元分别写入第一数据和第二数据,所述第二数据与所述第一数据互为互补随机数;
读取单元,用于读取所述第四内存单元和所述第五内存单元的第一写入数据;
判断单元,用于判断所述第四内存单元的第一写入数据是否为所述第一数据以及所述第五内存单元的第一写入数据是否为所述第二数据;
写入单元,还用于若所述第四内存单元的第一写入数据是所述第一数据以及所述第五内存单元的第一写入数据是所述第二数据,则向所述第四内存单元写入所述第二数据以及向所述第五内存单元写入所述第一数据;
读取单元,还用于读取所述第四内存单元以及所述第五内存单元的第二写入数据;
判断单元,还用于判断所述第四内存单元的第二写入数据是否为所述第二数据和所述第五内存单元的第二写入数据是否为所述第一数据;
确定单元,还用于若所述第四内存单元的第二写入数据是所述第二数据以及所述第五内存单元的第二写入数据是所述第一数据,则确定所述第四内存单元和/或所述第五内存单元正常;
确定单元,还用于若所述第四内存单元的数据不是所述第二数据和/或所述第五内存单元的数据不是所述第一数据,则确定所述第四内存单元和/或所述第五内存单元异常;
确定单元,还用于若所述第四内存单元的第一写入数据不是所述第一数据和/或所述第五内存单元的第一写入数据不是所述第二数据,则确定所述第四内存单元和/或所述第五内存单元异常。
本申请实施例第八方面提供一种微控制单元内存的检测装置,包括:
确定单元,用于当微控制单元工作时,确定微控制单元内存中的第六内存单元和第七内存单元;
保存单元,用于将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存;
写入单元,用于向所述第六内存单元和所述第七内存单元分别写入第一数据和第二数据,所述第一数据与第二数据互为互补随机数;
读取单元,用于读取所述第六内存单元和所述第七内存单元的第一写入数据;
判断单元,用于判断所述第六内存单元的第一写入数据是否为所述第一数据以及所述第七内存单元的第一写入数据是否为所述第二数据;
写入单元,还用于若所述第六内存单元的第一写入数据是所述第一数据以及所述第七内存单元的第一写入数据是所述第二数据,则向所述第六内存单元和所述第七内存单元分别写入第二数据和第一数据;
读取单元,还用于读取所述第六内存单元和所述第七内存单元的第二写入数据;
判断单元,还用于判断所述第六内存单元的第二写入数据是否为所述第二数据以及所述第七内存单元的第二写入数据是否为所述第一数据;
确定单元,用于若所述第六内存单元的第二写入数据是所述第二数据以及所述第七内存单元的第二写入数据是所述第一数据,确定所述第六内存单元和所述第七内存单元正常;
恢复单元,用于向所述第六内存单元和所述第七内存单元分别恢复保存的所述第六内存数据和所述第七内存数据;
确定单元,还用于若所述第六内存单元的第二写入数据不是所述第二数据和/或所述第七内存单元的第二写入数据不是第一数据,则确定所述第六内存单元和/或第七内存单元异常;
确定单元,还用于若所述第六内存单元的第一写入数据不是所述第一数据和/或所述第七内存单元的第一写入数据不是所述第二数据,则确定所述第六内存单元和/或第七内存单元异常。
可选地,所述微控制单元内存的检测装置还包括:
确定单元,还用于确定微控制单元内存中空闲的第十内存单元和空闲的第十一内存单元;
写入单元,还用于向所述第十内存单元和所述第十一内存单元分别写入第一数据和第二数据,所述第二数据与第一数据互为互补随机数;
读取单元,还用于读取所述第十内存单元和所述第十一内存单元的第一写入数据;
判断单元,还用于判断所述第十内存单元的第一写入数据是否为所述第一数据和所述第十一内存单元的第一写入数据是否为所述第二数据;
写入单元,还用于若所述第十内存单元的第一写入数据是所述第一数据和所述第十一内存单元的第一写入数据是所述第二数据,向所述第十内存单元和所述第十一内存单元分别写入所述第二数据和所述第一数据;
读取单元,还用于读取所述第十内存单元和所述第十一单元的第二写入数据;
判断单元,还用于判断所述第十内存单元的第二写入数据是否为所述第二数据和所述第十一内存单元的第二写入数据是否为所述第一数据;
确定单元,还用于若所述第十内存单元的第二写入数据是所述第二数据且所述第十一内存单元的第二写入数据是所述第一数据,则确定所述第十内存单元正常以及所述第十一内存单元正常;
作为单元,用于将所述第十内存单元作为第二缓冲器以及将所述第十一内存单元作为第三缓冲器,所述第二缓冲器用于保存所述第六内存数据以及所述第三缓冲器用于保存所述第七内存数据;
触发单元,用于触发将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存的步骤;
确定单元,还用于若所述第十内存单元的第二写入数据不是所述第二数据和/或所述第十一内存单元的第二写入数据不是所述第一数据,则确定所述第十内存单元或所述第十一内存单元异常;
确定单元,还用于若所述第十内存单元的第一写入数据不是所述第一数据和/或所述第十一内存单元的第一写入数据不是所述第二数据,则确定所述第十内存单元或所述第十一内存单元异常。
可选地,所述微控制单元内存的检测装置还包括:
获取单元,用于获取第六内存单元的第六地址和第七内存单元的第七地址;
加法单元,用于对所述第六地址加二,得到第八地址;
加法单元,还用于对所述第七地址加二,得到第九地址;
获取单元,还用于获取所述微控制单元内存的最大地址;
判断单元,还用于判断所述第八地址或所述第九地址是否大于或者等于所述最大地址;
确定单元,还用于若所述第八地址或所述第九地址大于或者等于所述最大地址,则确定所述微控制单元内存正常,确定完成所述微控制单元内存的检测;
获取单元,还用于若所述第八地址或所述第九地址小于所述最大地址,则获取所述第八地址的第八内存单元和所述第九地址的第九内存单元;
作为单元,还用于将所述第八内存单元作为第六内存单元和将所述第九内存单元作为第七内存单元;
触发单元,用于触发执行将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存的步骤。
可选地,一种微控制单元内存的检测装置,确定单元所确定的所述第四内存单元和所述第五内存单元的内存地址是连续的,或确定单元所确定的所述第六内存单元和所述第七内存单元的内存地址是连续的。
可选地,一种微控制单元内存的检测装置,当微控制单元的内存为8位时,则写入单元所写入的第一数据等于0x55,第二数据等于0xAA、或当微控制单元的内存为16位时,则写入单元所写入的第一数据等于0x5555,第二数据等于0xAAAA。
可选地,一种微控制单元内存的检测装置,所检测的微控制单元内存是集成到片上系统内部的内存或在片上系统拓展的内存。
本申请实施例第九方面提供一种微控制单元内存的检测装置,包括:
处理器、存储器、总线、输入输出设备;
所述处理器与所述存储器、输入输出设备相连;
所述总线分别连接所述处理器、存储器以及输入输出设备相连;
所述处理器执行如权利要求1至10中任一项所述的方法。
本申请实施例第十方面提供一种计算机存储介质,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行如权利要求1至10中任一项所述的方法。
本申请实施例第十一方面提供一种计算机程序产品,其特征在于,所述计算机程序产品在计算机上执行时,使得所述计算机执行如权利要求1至10中任一项所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,对内存单元的存储单元进行静态测试和/或动态测试的时候,写入内存单元的数据采用互为互补随机数的两个数据,先后分两次写入在内存单元中,分别读取这两次该内存单元先后写入的数据,判断读取的数据与写入的数据是否一致,若一致,则确定该内存单元正常。互为互补随机数的两个数据分两次写入同一内存单元可以保证存储该互为互补随机数的二进制位都会发生状态切换,可以实现对微控制单元每个内存单元的二进制位的精确测试,测试结果更加准确。
附图说明
图1为本申请实施例中微控制单元内存的检测方法的一个流程示意图;
图2为本申请实施例中微控制单元内存的检测方法的另一个流程示意图;
图3为本申请实施例中微控制单元内存的检测方法的另一个流程示意图;
图4为本申请实施例中微控制单元内存的检测方法的另一个流程示意图;
图5为本申请实施例中微控制单元内存的检测方法的另一个流程示意图;
图6为本申请实施例中微控制单元内存的检测方法的另一个流程示意图;
图7为本申请实施例中微控制单元内存的检测装置的一个结构示意图;
图8为本申请实施例中微控制单元内存的检测装置的另一个结构示意图;
图9为本申请实施例中微控制单元内存的检测装置的另一个结构示意图;
图10为本申请实施例中微控制单元内存的检测装置的另一个结构示意图;
图11为本申请实施例中微控制单元内存的检测装置的另一个结构示意图。
具体实施方式
本申请实施例提供了一种微控制单元内存的检测方法以及相关装置可以实现对微控制单元每个内存单元的二进制位的精确测试,测试结果更加准确。
本申请实施例中,微控制单元内存的检测方法可以是针对具有易失性特性的内存,比如集成到片上系统内部的内存(internal ramdom access memory,IRAM)或在片上系统拓展的内存(on-chip expanded ramdom access memory,XRAM)等。
本申请实施例中,微控制单元内存检测方法的执行主体可以是微控制单元的处理器,也可以是外接的能实现对微控制单元内存进行写读操作的设备,比如外接电脑等,具体在此不做限定。
本申请实施例中的第一数据与第二数据是随机的互为互补数,简称互补随机数,例如,当微控制单元内存是8位时,第一数据可以是0x55(即二进制为01010101),第二数据是0xAA(即二进制为10101010)或者第一数据可以是0x77(即二进制为01110111),第二数据是0x88(即二进制为10001000),也可以是其他可以满足第一数据加第二数据等于0xFF(即二进制为11111111)的数据;又比如当微控制单元内存是16位时,第一数据可以是0x5555(即二进制为0101010101010101),第二数据是0xAAAA(即二进制为1010101010101010)或者第一数据可以是0x7777(即二进制为0111011101110111),第二数据是0x8888(即二进制为1000100010001000),也可以是其他可以满足第一数据加第二数据等于0xFFFF(即二进制为1111111111111111)的第一数据和第二数据,即第一数据与第二数据在是互补的、随机的数据,对内存单元写入随机的数据将有几率发现内存单元的设计或制造缺陷,因为可能某个内存单元在存储某个数据的时候会出现错误,第二写入数据可以令已经存在第一写入数据的内存单元的所有二进制位发生转态切换,在实际应用中,微控制单元的内存还可以是32位或者64位等。本申请实施例中第一写入数据是指一次测试周期内,微控制单元内存的内存单元被本检测方法第一次写入数据后保存的数据,第二写入数据是指一次测试周期内,微控制单元内存的内存单元被本检测方法第二次写入数据后保存的数据。本申请实施例中对微控制单元内存的位数,以及第一数据与第二数据的具体数值不做限定,需要注意的是,本微控制单元内存的检测方法可以选择从内存地址为0开始,即内存最开始的地方执行检测,也可以不从地址为0的地方执行检测,可以检测到微控制单元内存的最大地址处结束检测,也可以是检测到预设地址处结束检测,在此不做限定。另外,在被本申请微控制单元内存的检测方法检测得出内存单元异常的时候,可以执行对微控制单元重启或关机的操作。
本申请实施例中,微控制单元内存的检测方法按测试时内存处于的不同状态可以分为静态测试和动态测试。所谓静态测试指在微控制单元内存的电压或电流值达到预定的启动值时,即微控制单元内存刚刚上电时;所谓动态测试指在微控制单元内存处于工作状态的时候对内存进行检测,处于工作状态的微控制单元内存的内存单元有可能保存有重要数据。按测试微控制单元内存时每次读写内存单元数量的不同,可以分为单个内存单元测试和多个内存单元测试,对于多个内存单元测试,本申请实施例仅以两个内存单元测试为例进行说明,下边将分别进行详细说明。
请参考图1,本申请实施例中微控制单元内存的检测方法的单个内存单元静态测试的一个实施例,包括:
101、当微控制单元启动时,确定微控制单元内存中的第一内存单元;
当微控制单元的电压或电流值达到预定的启动值时,即是在微控制单元刚刚启动的时候对微控制单元进行静态测试,可以先确定微控制单元内存中的第一内存单元,该第一内存单元可以是微控制单元内存中的任何一个内存单元。
102、向第一内存单元写入第一数据;
当步骤101微控制单元内存中的第一内存单元被确定之后,就可以对该第一内存单元进行测试的一个步骤,即向该第一内存单元写入第一数据。
103、读取第一内存单元的第一写入数据;
在步骤102向第一内存单元写入第一数据之后,可以对第一内存单元的数据进行读取。需要说明的是,为了便于与其他步骤中读取的写入数据进行区分,可以将读取的步骤102中的写入数据称为第一写入数据。
104、判断第一写入数据是否为第一数据,若是,执行步骤105,若否,则执行步骤109;
在步骤103读取得到第一写入数据之后,可以将该第一写入数据与第一数据进行对比,判断该第一内存单元保存的数据是否为本检测方法写入的数据,即第一写入数据是否为第一数据。
105、向第一内存单元写入第二数据,第二数据与第一数据互为互补随机数;
若步骤104中确定第一写入数据是第一数据,则可以向第一内存单元写入第二数据,该第二数据将替换第一数据,由于这个第二数据是第一数据的互补随机数,可以令已保存有第一数据的第一内存单元的所有二进制位发生转态切换。
106、读取第一内存单元的第二写入数据;
在步骤105向第一内存单元写入第二数据之后,可以对第一内存单元的数据进行读取。需要说明的是,为了便于与其他步骤中读取的写入数据进行区分,可以将读取的步骤105中的写入数据称为第二写入数据。
107、判断第二写入数据是否第二数据,若是,则执行步骤108,若否,则执行步骤109;
在步骤106读取得到第二写入数据之后,可以将该第二写入数据与第二数据进行对比,判断该第一内存单元保存的数据是否为写入的数据,即第二写入数据是否为第二数据。
108、确定第一内存单元正常;
若步骤107中的第二写入数据是第二数据,则确定控制单元内存的第一内存单元正常。
109、确定第一内存单元异常。
若步骤104的第一写入数据不是第一数据,或步骤107的第二写入数据不是第二数据,则确定微控制单元内存的第一内存单元异常。
本申请实施例中,对内存单元的存储单元进行单个内存单元静态测试时候,写入内存单元的数据采用互为互补随机数的两个数据,先后两次写入内存单元中,分别读取这两次该内存单元先后写入的数据,判断读取的数据与写入的数据是否一致,若一致,则确定该内存单元正常。互为互补随机数的两个数据分两次写入同一内存单元可以保证存储该互为互补随机数的二进制位都会发生状态切换,可以实现对微控制单元每个内存单元的二进制位的精确测试,测试结果更加准确。
本申请的微控制单元内存的检测方法的单个内存单元动态测试的一个实施例,具体请参考图2,包括:
201、当微控制单元工作时,确定微控制单元内存中的第二内存单元;
当微控制单元处于工作状态时,即微控制单元在运行用户程序的时候,可以先确定微控制单元内存中的第二内存单元,该第二内存单元是动态测试中的一个测试对象,可以是微控制单元内存中的任何一个内存单元。
202、将第二内存单元的第二内存数据保存;
当步骤201中确定了第二内存单元为本次动态测试中的一个测试对象,由于第二内存单元可能保存有重要数据,需要将第二内存单元的第二内存数据进行保存,并可以生成该保存数据与运行用户程序之间的对应关系,以便于用户程序可以将保存的数据正常使用。
203、向第二内存单元写入第一数据;
204、读取第二内存单元第一写入数据;
205、判断第一写入数据是否为第一数据,若是,则执行步骤206,若否,则执行步骤211;
206、向第二内存单元写入第二数据,第二数据与第一数据互为互补随机数;
207、读取第二内存单元的第二写入数据;
208、判断第二写入数据是否为第二数据,若是,则执行步骤209,若否,则执行步骤211;
209、确定第二内存单元正常;
以上步骤203至步骤209的执行如图1中步骤102至步骤108类似,在此不再赘述。
210、向第二内存单元恢复保存的第二内存数据;
当步骤209中确定第二内存单元正常之后,可以向第二内存单元恢复步骤202保存的第二内存数据,并取消该保存数据与运行用户程序之间的对应关系,以便于用户程序恢复对第二内存单元的正常使用。
211、确定第二内存单元异常。
本步骤执行如图1中步骤109类似,在此不再赘述。
本申请实施例中,对内存单元的存储单元进行单个内存单元动态测试时候,先对待测试的内存单元进行数据保存,写入内存单元的数据采用互为互补随机数的两个数据,先后两次写入内存单元中,分别读取这两次该内存单元先后写入的数据,判断读取的数据与写入的数据是否一致,若一致,则确定该内存单元正常,再把保存的内存单元数据向该内存单元进行恢复。互为互补随机数的两个数据分两次写入同一内存单元可以保证存储该互为互补随机数的二进制位都会发生状态切换,可以实现对微控制单元每个内存单元的二进制位的精确测试,测试结果更加准确。
本申实施例中的微控制单元内存的检测方法的单个内存单元动态测试的另一个实施例,具体参考图3,包括:
301、当微控制单元工作时,确定微控制单元内存中的第二内存单元;
本步骤执行如图2中步骤201类似,在此不再赘述。
302、确定微控制单元内存中空闲的第三内存单元;
当步骤301中第二内存单元被确定为动态测试的一个测试对象时,即意味着动态测试中的第二内存单元的第二内存数据将需要被保存,即需要找一个可以存储第二内存数据的地方,此时可以选择确定微控制单元内存中空闲的第三内存单元,空闲的第三单元是指微控制单元内存中不参与用户程序运行的内存单元。
303、向第三内存单元写入第一数据;
304、读取第三内单元的第一写入数据;
305、判断第一写入数据是否为第一数据,若是执行步骤306,若否,则执行步骤320;
306、向第三内存单元写入第二数据,第二数据与第一数据互为互补随机数;
307、读取第三内存单元的第二写入数据;
308、判断第二写入数据是否为第二数据,若是,则执行步骤309,若否,则执行步骤320;
以上步骤303至步骤308的执行与图1步骤102至步骤107类似,在此不再赘述。
309、将第三内存单元作为第一缓冲器,第一缓冲器用于保存第二内存数据;
当步骤308中确定第二写入数据是第二数据之后,则可以确定第三内存单元正常,可以将第三内存单元作为第一缓冲器,用于保存第二内存单元的第二内存数据,触发步骤310。
本申请实施例中,缓冲器的选择是微控制单元内存的内存单元,采用互补随机数检测该内存单元,以确保该内存单元正常,同时也是对微控制单元内存的检测。
310、将第二内存单元的第二内存数据保存至第一缓冲器;
当步骤301中确定了第二内存单元为本次动态测试中的一个测试对象,由于第二内存单元可能保存有重要数据,需要将第二内存单元的第二内存数据进行保存,这个需要保存的第二内存数据可以保存在步骤309中确定的第一缓冲器中,并可以生成该保存数据与运行用户程序之间的对应关系,以便于用户程序可以对所保存的数据正常使用。
311、向第二内存单元写入第一数据;
312、读取第二内存单元第一写入数据;
313、判断第一写入数据是否为第一数据,若是,则执行步骤314,若否,则执行步骤319;
314、向第二内存单元写入第二数据;
315、读取第二内存单元的第二写入数据;
316、判断第二写入数据是否为第二数据,若是,则执行步骤317,若否,则执行步骤319;
317、确定第二内存单元正常;
318、向第二内存单元恢复保存的第二内存数据;
319、确定第二内存单元异常;
以上步骤311至步骤319的执行与图2步骤203至步骤211类似,在此不再赘述。
320、确定第三内存单元异常。
本步骤执行如图1中步骤109类似,在此不再赘述。
本申请实施例中,对内存单元的存储单元进行单个内存单元动态测试时候,为了对待测试的内存单元进行数据保存,可以在微控制单元中寻找空闲的内存单元作为缓冲器,用该缓冲器保存待测试的内存单元的数据,可以对候选缓冲器的空闲内存单元使用本申请的方法进行检测,即写入空闲内存单元的数据采用互为互补随机数的两个数据,先后两次写入空闲内存单元中,分别读取这两次该空闲内存单元先后写入的数据,判断读取的数据与写入的数据是否一致,若一致,则确定该空闲内存单元正常,使用该空闲内存单元作为缓冲器。对待测试的内存单元进行数据保存到缓冲器,当待测试的内存单元检测正常之后,再把保存在缓冲器的内存单元数据向该内存单元进行恢复。互为互补随机数的两个数据分两次写入同一内存单元可以保证存储该互为互补随机数的二进制位都会发生状态切换,可以实现对微控制单元每个内存单元的二进制位的精确测试,测试结果更加准确。
本申请的微控制单元内存的检测方法的静态测试也可以同时对多个内存单元进行测试,下边以同时对两个内存单元进行静态测试为例进行说明,本申请的微控制单元内存的检测方法的静态测试另一实施例,请参考图4,包括:
401、当微控制单元启动时,确定微控制单元内存中的第四内存单元和第五内存单元;
当微控制单元的电压或电流值达到预定的启动值时,即是在微控制单元刚刚启动的时候对微控制单元进行静态测试,可以先确定微控制单元内存中的第四内存单元和第五内存单元,该第四内存单元和第五内存单元可以是微控制单元内存中的任何两个内存单元。
402、向第四内存单元写入第一数据和第五内存单元写入第二数据,第一数据与第二数据互为互补随机数;
当步骤401微控制单元内存中的第四内存单元和第五内存单元被确定之后,就可以对该第四内存单元和第五内存单元进行测试的一个步骤,即向该第四内存单元写入第一数据,以及向该第五内存单元写入第二数据,第二数据与第一数据互为互补随机数。
403、读取第四内存单元和第五内存单元的第一写入数据;
在步骤402向该第四内存单元写入第一数据,以及向该第五内存单元写入第二数据之后,可以对第四内存单元和第五内存单元的第一写入数据进行读取。需要说明的是,为了便于与其他步骤中读取的写入数据进行区分,可以将读取的步骤402中的写入数据称为第一写入数据。
404、判断第四内存单元的第一写入数据是否为第一数据以及第五内存单元的第一写入数据是否为第二数据,若第四内存单元的第一写入数据是第一数据以及第五内存单元的第一写入数据是第二数据,则执行步骤405,若第四内存单元的第一写入数据不是第一数据和/或第五内存单元的第一写入数据不是第二数据,则执行步骤409;
在步骤403读取第四内存单元和第五内存单元的第一写入数据之后,可以将第四内存单元的第一写入数据与第四内存单元写入的第一数据进行对比,以及将第五内存单元的第一写入数据与该第五内存单元写入的第二数据进行对比,判断该第四内存单元保存的第一写入数据是否为写入的第一数据,以及第五内存单元保存的第一写入数据是否为写入的第二数据。
405、向第四内存单元写入第二数据以及第五内存单元写入第一数据;
若步骤404中确定第四内存单元的第一写入数据是第一数据,则向第四内存单元写入第二数据,该第四内存单元中第二数据将替换第一数据,由于这个第二数据是第一数据的互补随机数,可以令已保存有第一数据的第四内存单元的所有二进制位发生转态切换;若第五内存单元的第一写入数据是第二数据,则向第五内存单元写入第一数据,该第五内存单元中第一数据将替换第二数据,由于这个第一数据是第二数据的互补随机数,可以令已保存有第二数据的第五内存单元的所有二进制位发生转态切换。
406、读取第四内存单元和第五内存单元的第二写入数据;
在步骤405中第四内存单元和第五内存单元都写入第二写入数据之后,则读取第四内存单元和第五内存单元的第二写入数据。需要说明的是,为了便于与其他步骤中读取的写入数据进行区分,可以将读取的步骤405中的写入数据称为第二写入数据。
407、判断第四内存单元的第二写入数据是否为第二数据以及第五内存单元的第二写入数据是否为第一数据,若第四内存单元的第二写入数据是第二数据以及第五内存单元的第二写入数据是第一数据,则执行步骤408,若第四内存单元的第二写入数据不是第二数据和/或第五内存单元的第二写入数据不是第一数据,则执行步骤409;
在步骤406读取第四内存单元以及第五内存单元的第二写入数据之后,可以将第四内存单元以及第五内存单元的第二写入数据分别与第二数据和第一数据对比,判断第四内存单元以及第五内存单元的保存数据是否为写入数据,即第四内存单元的第二写入数据是否为第二数据,第五内存单元的第二写入数据是否为第一数据。
408、确定第四内存单元以及第五内存单元正常;
若步骤407中确定第四内存单元的第二写入数据是第二数据以及第五内存单元的第二内存单元的第二写入数据是第一数据,则确定第四内存单元以及第五内存单元正常。
409、确定第四内存单元和/或第五内存单元异常;
若步骤404中确定第四内存单元的第一写入数据不是第一数据和/或第五内存单元的第一写入数据不是第二数据,则确定第四内存单元和/或第五内存单元异常;若步骤407中确定第四内存单元的第二写入数据不是第二数据和/或第五内存单元的第二写入数据不是第一数据,则确定第四内存单元和/或第五内存单元异常。
本申请实施例中对两个内存单元同时进行测试可以有效避免写读数据总线的自我干扰,比如,通过同一根写读数据线对同一个内存单元写读同一个数据时,由于写入数据和读取数据的速度很快,数据线写入数据和读取数据的时间间隔非常小,无法得知数据总线的写入数据是否已经写入内存单元,有可能读取的数据正是刚刚在数据线内传输的写入数据,并非内存单元中读取的数据,这样的测试就不准确。而采用两个内存单元同时进行测试,并对这个两个内存单元输入的是不同的数据,先对两个内存单元分别输入,然后对先输入的内存单元先读取,后输入的内存单元后读取,这样就可以避免写入和读取时数据总线都是同一个数据,这样的测试就更加准确。本申请实施例仅以两个内存单元同时测试进行说明,在实际应用中,可以同时已对多个内存单元进行测试,该测试方法与本方法类似,在此不再赘述。
本申请实施例中第四内存单元与第五内存单元的优选是连续地址的两个内存单元,连续的内存单元可以减少内存单元的读写时间,提高测试速度和效率。本申请实施例中对微控制单元内存的静态测试方法仅以一个内存单元或两个内存单元为例进行说明,可以理解的是,在实际应用中,可以同时或者有顺序地对全部或部分内存单元进行测试,具体在此不做限定。本申请实施例的静态测试方法可以是对微控制单元的部分内存进行测试,也可以对微控制单元的全部内存进行测试,该测试方法的开始地址可以是从地址0开始,也可以是不从地址0开始,具体在此不做限定。
本申请的微控制单元内存的检测方法的动态测试也可以同时对多个内存单元进行测试,下边以同时对两个内存单元进行动态测试为例进行说明,本申请的微控制单元内存的检测方法的动态测试另一实施例,请参考图5,包括:
501、当微控制单元工作时,确定微控制单元内存中的第六内存单元和第七内存单元;
当微控制单元处于工作状态时,即微控制单元在运行用户程序的时候,可以先确定微控制单元内存中的第六内存单元和第七内存单元,该第六内存单元和第七内存单元是动态测试中的两个测试对象,该第六内存单元和第七内存单元可以是微控制单元内存中的任何两个内存单元。
502、将第六内存单元的第六内存数据和第七内存单元的第七内存数据保存;
当步骤501中确定第六内存单元和第七内存单元为本次动态测试的一个测试对象,由于第六内存单元和第七内存单元有可能保存有重要数据,需要对第六内存单元的第六内存数据和第七内存单元的第七内存数据进行保存,并可以生成该第六内存数据和第七内存数据与运行用户程序之间的对应关系,以便于用户程序可以将保存的第六内存数据和第七内存数据正常使用。
503、向第六内存单元写入第一数据和第七内存单元写入第二数据,第一数据与第二数据互为互补随机数;
504、读取第六内存单元和第七内存单元的第一写入数据;
505、判断第六内存单元的第一写入数据是否为第一数据以及第七内存单元的第一写入数据是否为第二数据,若第六内存单元的第一写入数据是第一数据以及第七内存单元的第一写入数据是第二数据,则执行步骤506,若第六内存单元的第一写入数据不是第一数据和/或第七内存单元的第一写入数据不是第二数据,则执行步骤511;
506、向第六内存单元写入第二数据和第七内存单元写入第一数据;
507、读取第六内存单元和第七内存单元的第二写入数据;
508、判断第六内存单元的第二写入数据是否为第二数据以及第七内存单元的第二写入数据是否为第一数据,若第六内存单元的第二写入数据是第二数据以及第七内存单元的第二写入数据是第一数据,则执行步骤509,若第六内存单元的第二写入数据不是第二数据和/或第七内存单元的第二写入数据不是第一数据,则执行步骤511;
509、确定第六内存单元和第七内存单元正常;
以上步骤503至步骤509的执行如图4中的步骤402至步骤408类似,在此不再赘述。
510、向第六内存单元恢复保存的第六内存数据和第七内存恢复保存的第七内存数据;
当步骤509确定第六内存单元以及第七内存单元正常之后,可以向第六内存单元恢复步骤502保存的第六内存数据和第七内存元恢复步骤502保存的第七内存数据;
511、确定第六内存单元和/或第七内存单元异常。
本步骤执行如图4中的步骤409类似,在此不再赘述。
本申请实施例中,对同时进行两个内存单元动态测试时候,先对待测试的两个微控制单元的内存单元进行数据保存,写入两个待测内存单元的数据均采用互为互补随机数的两个数据,分别写入每一个内存单元中,读取每一个内存单元这两次该内存单元先后写入的数据,判断读取的数据与写入的数据是否一致,若一致,则再次写入原来数据的互补随机数,读取这两次每一个内存单元先后写入的数据,判断读取的数据与写入的数据是否一致,若一致,确定该这两个内存单元正常,再把保存的内存单元数据向该内存单元进行恢复。互为互补随机数的两个数据分两次写入同一内存单元可以保证存储该互为互补随机数的二进制位都会发生状态切换,可以实现对微控制单元每个内存单元的二进制位的精确测试,测试结果更加准确。
本申请实施例中对两个内存单元同时进行测试可以有效避免写读数据总线的自我干扰,比如,通过同一根写读数据线对同一个内存单元写读同一个数据时,由于写入数据和读取数据的速度很快,数据线写入数据和读取数据的时间间隔非常小,无法得知数据总线的写入数据是否已经写入内存单元,有可能读取的数据正是刚刚在数据线内传输的写入数据,并非内存单元中读取的数据,这样的测试就不准确。而采用两个内存单元同时进行测试,并对这个两个内存单元输入的是不同的数据,先对两个内存单元分别输入,然后对先输入的内存单元先读取,后输入的内存单元后读取,这样就可以避免写入和读取时数据总线都是同一个数据,这样的测试就更加准确。本申请实施例仅以两个内存单元同时测试进行说明,在实际应用中,可以同时已对多个内存单元进行测试,该测试方法与本方法类似,在此不再赘述。
本申实施例中的微控制单元内存的检测方法的两个内存单元动态测试的另一个实施例,具体参考图6,包括:
601、当微控制单元工作时,确定微控制单元内存中的第六内存单元和第七内存单元;
本步骤执行如图5中步骤501类似,在此不再赘述。
602、确定微控制单元内存中空闲的第十内存单元和空闲的第十一内存单元;
当步骤601中第六内存单元和第七内存单元被确定为动态测试的两个测试对象时,即意味着动态测试中的第六内存单元的第六内存数据和第七内存单元的第七内存数据将需要被保存,即需要找两个可以存储第六内存数据和第七内存数据的地方,此时可以选择确定微控制单元内存中空闲的第十内存单元和空闲的第十一内存单元,空闲的第十内存单元和空闲的第十一内存单元是指微控制单元内存中不参与用户程序运行的内存单元。
603、向第十内存单元写入第一数据和第十一内存单元写入第二数据,第二数据和第一数据互为互补随机数;
604、读取第十内存单元和第十一内存单元的第一写入数据;
605、判断第十内存单元的第一写入数据是否为第一数据和第十一内存单元的第一写入数据是否为第二数据,若第十内存单元的第一写入数据是第一数据和第十一内存单元的第一写入数据是第二数据,则执行步骤606,若第十内存单元的第一写入数据不是第一数据和/或第十一内存单元的第一写入数据不是第二数据,则执行步骤627;
606、向第十内存单元写入第二数据和第十一内存单元写入第一数据;
607、读取第十内存单元和第十一内存单元的第二写入数据;
608、判断第十内存单元的第二写入数据是否为第二数据以及第十一内存单元的第二写入数据是否为第一数据,若第十内存单元的第二写入数据是第二数据以及第十一内存单元的第二写入数据是第一数据,则执行步骤609,若第十内存单元的第二写入数据不是第二数据以及第十一内存单元的第二写入数据不是第一数据,则执行步骤627;
以上步骤603至步骤608的执行与图4步骤402至步骤407类似,在此不再赘述。
609、将第十内存单元作为第二缓冲器以及将第十一内存单元作为第三缓冲器,第二缓冲器用于保存第六内存数据以及第三缓冲器用于保存第七内存数据;
当步骤608中确定第十内存单元的第二写入数据是第二数据以及第十一内存单元的第二写入数据是第一数据之后,则可以确定第十内存单元和第十一内存单元正常,可以将第十内存单元作为第二缓冲器以及将第十一内存单元作为第三缓冲器,第二缓冲器用于保存第六内存数据以及第三缓冲器用于保存第七内存数据。
本申请实施例中,缓冲器的选择是微控制单元内存的内存单元,采用互补随机数检测第十内存单元和第十一内存单元,以确保第十内存单元和第十一内存单元正常,同时也是对微控制单元内存的检测。
610、将第六内存单元的第六内存数据盒第七内存单元的第七内存数据保存;
当步骤601中确定第十内存单元和第十一内存单元为本次动态测试中的两个测试对象,由于第十内存单元和第十一内存单元可能保存有重要数据,需要将第六内存单元的第六内存数据和第七内存单元的第七内存数据进行保存,这个需要保存的第六内存数据可以保存在步骤609中确定的第二缓冲器以及第七内存数据可以保存在步骤609中确定的第三缓冲器中,并可以生成第六内存数据和第七内存数据与运行用户程序之间的对应关系,以便于用户程序可以将第六内存数据和第七内存数据正常使用。
611、向第六内存单元写入第一数据和第七内存单元写入第二数据;
612、读取第六内存单元和第七内存单元的第一写入数据;
613、判断第六内存单元的第一写入数据是否为第一数据以及第七内存单元的第一写入数据是否为第二数据,若第六内存单元的第一写入数据是第一数据以及第七内存单元的第一写入数据是第二数据,则执行步骤614,若第六内存单元的第一写入数据不是第一数据以及第七内存单元的第一写入数据不是第二数据,则执行步骤626;
614、向第六内存单元写入第二数据和第七内存单元写入第一数据;
615、读取第六内存单元和第七内存单元的第二写入数据;
616、判断第六内存单元的第二写入数据是否为第二数据以及第七内存单元的第二写入数据是否为第一数据,若第六内存单元的第二写入数据是第二数据以及第七内存单元的第二写入数据是第一数据,则执行步骤617,若第六内存单元的第二写入数据不是第二数据以及第七内存单元的第二写入数据不是第一数据,则执行步骤626;
617、确定第六内存单元和第七内存单元正常;
618、向第六内存单元恢复保存的第六内存数据和第七内存单元恢复保存的第七内存数据;
以上步骤611至步骤618的执行与图5中步骤503至步骤510类似,在此不再赘述。
619、获取第六内存单元的第六地址和第七内存单元的第七内存地址;
在步骤618之后,当第六内存单元的第六地址和第七内存单元的第七地址是连续的时候,可以获取第六内存单元的第六地址和第七内存单元的第七内存地址。
620、对第六地址加二,得到第八地址;对第七地址加二,得到第九地址;
在步骤619得到第六地址和第七地址之后,可以对对第六地址加二,得到第八地址;对第七地址加二,得到第九地址,第八地址和第九地址正好是第六地址和第七地址的顺序相邻的后两个内存单元,此步骤旨在寻找相邻的后两个内存单元的地址。
621、获取微控制单元内存的最大地址;
为了步骤622中把第八地址与最大地址相比,或第九地址与最大地址相比,需要获取微控制单元内存的最大地址,微控制单元内存的最大地址表示该微控制单元内存最后顺序的一个内存单元的地址。
622、判断第八地址或第九地址是否大于或者等于最大地址,若第八地址或第九地址大于或者等于最大地址,则执行步骤623,若第八地址和第九地址小于最大地址,则执行步骤624;
在步骤620中得到第八地址与第九地址,以及步骤621中得到最大地址之后,将第八地址与最大地址相比,或第九地址与最大地址相比,目的在于判断第八地址或第九地址是否已经是微控制单元内存的最后顺序的内存单元的地址。
623、确定微控制单元内存正常,确定完成微控制单元内存的检测;
在步骤622中确定第八地址或第九地址大于或者等于最大地址,由于第八地址和第九地址是连续的,只要有一个地址大于最大地址就表明本检测方法已经是检测到微控制单元内存的最后顺序的内存单元地址的内存单元,且检测到的微控制单元内存都未发现异常,所以可以确定完成微控制单元内存的一次检测,等待下一次检测的触发。
624、获取第八地址的第八内存单元和第九地址的第九内存单元;
在步骤622中确定第八地址和第九地址都小于最大地址,则表明本检测方法还未检测到微控制单元内存的最后顺序的内存单元地址的内存单元,可以继续对微控制单元内存进行检测,可以根据第八地址获取第八内存单元,根据第九地址获取第九内存单元。
625、将第八内存单元作为第六内存单元和将第九内存单元作为第七内存单元,触发执行步骤602;
在步骤624中获取的到第八内存单元和第九内存单元之后,可以将第八内存单元作为第六内存单元和将第九内存单元作为第七内存单元,触发执行步骤602,即对第八内存单元和第九内存单元执行申请实施例的检测方法。
626、确定第六内存单元和/或第七内存单元异常;
627、确定第十内存单元和/或第十一内存单元异常。
以上步骤626和步骤627如图4中步骤409类似,在此不再赘述。
本申请实施例中,主要有步骤619至步骤625与图5的实施例的步骤不同,步骤619至步骤625主要对若测试的两个第六内存单元和第七内存单元的地址是连续的,则可以进一步确定两个第六内存单元和第七内存单元是否已经是微控制单元位置最后的内存单元,以便于做出完成测试或继续测试的决定,本申请实施例通过对第六内存单元的第六地址和第七内存单元的第七地址进行加二,得到第六内存单元和第七内存单元在微控制单元内存中顺序相邻的下两个地址第八地址和第九地址,通过这顺序相邻的下两个地址与最大地址对比可以得到第六内存单元和第七内存单元是否已经是微控制单元位置最后的内存单元的信息,若相邻的下两个地址第八地址和第九地址都未大于或等于最大地址,则可以根据本申请实施例的方法实现对相邻的下两个地址第八地址的第八内存单元和第九地址的第九内存单元进行检测,可以实现从相邻的两个内存单元顺序地测试到最大地址的内存单元,若这个两个内存单元是从0开始,则本申请实施例的检测方法可以实现微控制单元内存的全部内存单元覆盖测试,需要说明的是,本申请实施例中的微控制单元检测方法的两次触发执行检测的时间间隔应大于测试执行时间,以便于微控制单元主要用于执行用户程序,而不是大部分时间在运行检测方法的程序。
上面对本申请实施例的微控制单元内存的检测方法进行了描述,下面对本申请实施例的微控制单元内存的检测装置进行描述,具体请参考图7,本申请实施例中的微控制单元内存的检测装置包括:
确定单元701,用于当微控制单元启动时,确定微控制单元内存中的第一内存单元,或者用于当微控制单元启动时,确定微控制单元内存中的第四内存单元和第五内存单元;
写入单元702,用于向所述第一内存单元写入第一数据,或者用于向所述第四内存单元和所述第五内存单元分别写入第一数据和第二数据,所述第二数据与所述第一数据互为互补随机数;
读取单元703,用于读取所述第一内存单元的第一写入数据,或者用于读取所述第四内存单元和所述第五内存单元的第一写入数据;
判断单元704,用于判断所述第一写入数据是否为所述第一数据,或者用于判断所述第四内存单元的第一写入数据是否为所述第一数据以及所述第五内存单元的第一写入数据是否为所述第二数据;
写入单元702,还用于若所述第一写入数据是所述第一数据,则向所述第一内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数,或者还用于若所述第四内存单元的第一写入数据是所述第一数据以及所述第五内存单元的第一写入数据是所述第二数据,则向所述第四内存单元写入所述第二数据以及向所述第五内存单元写入所述第一数据;
读取单元703,还用于读取所述第一内存单元的第二写入数据,或者还用于读取所述第四内存单元以及所述第五内存单元的第二写入数据;
判断单元704,还用于判断所述第二写入数据是否为所述第二数据,或者还用于判断所述第四内存单元的第二写入数据是否为所述第二数据和所述第五内存单元的第二写入数据是否为所述第一数;
确定单元701,还用于若所述第二写入数据是所述第二数据,则确定所述第一内存单元正常,还用于若所述第二写入数据不是所述第二数据,则确定所述第一内存单元异常,还用于若所述第一写入数据不是所述第一数据,则确定所述第一内存单元异常,或者还用于若所述第四内存单元的数据不是所述第二数据和/或所述第五内存单元的数据不是所述第一数据,则确定所述第四内存单元和/或所述第五内存单元异常,还用于若所述第四内存单元的第一写入数据不是所述第一数据和/或所述第五内存单元的第一写入数据不是所述第二数据,则确定所述第四内存单元和/或所述第五内存单元异常。
本申请实施例中,微控制单元内存的检测装置所执行的操作与前述图1或图4所示的实施例类似,此处不再赘述。
本申请实施例中,对内存单元的存储单元进行内存单元静态测试时候,写入单元702写入同一内存单元的数据采用互为互补随机数的两个数据,先后两次写入同一内存单元中,读取单元703分别读取这两次该内存单元先后写入的数据,判断单元704判断读取的数据与写入的数据是否一致,若一致,则确定单元701确定该内存单元正常。互为互补随机数的两个数据分两次写入同一内存单元可以保证存储该互为互补随机数的二进制位都会发生状态切换,可以实现对微控制单元每个内存单元的二进制位的精确测试,测试结果更加准确。
请查阅图8,本申请实施例中的微控制单元内存的检测装置另一实施例包括:
确定单元801,用于当微控制单元工作时,确定微控制单元内存中的第二内存单元,或者用于当微控制单元工作时,确定微控制单元内存中的第六内存单元和第七内存单元;
保存单元805,用于将所述第二内存单元的第二内存数据保存,或者用于将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存;
写入单元802,用于向所述第二内存单元写入第一数据,或者用于向所述第六内存单元和所述第七内存单元分别写入第一数据和第二数据,所述第一数据与第二数据互为互补随机数;
读取单元803,用于读取所述第二内存单元的第一写入数据,或者用于读取所述第六内存单元和所述第七内存单元的第一写入数据;
判断单元804,用于判断所述第一写入数据是否为所述第一数据,或者用于判断所述第六内存单元的第一写入数据是否为所述第一数据以及所述第七内存单元的第一写入数据是否为所述第二数据;
写入单元802,还用于若所述第一写入数据是所述第一数据,则向所述第二内存单元写入第二数据,或者还用于若所述第六内存单元的第一写入数据是所述第一数据以及所述第七内存单元的第一写入数据是所述第二数据,则向所述第六内存单元和所述第七内存单元分别写入第二数据和第一数据;
读取单元803,还用于读取所述第二内存单元的第二写入数据,或者还用于读取所述第六内存单元和所述第七内存单元的第二写入数据;
判断单元804,还用于判断所述第二写入数据是否为所述第二数据,或者还用于判断所述第六内存单元的第二写入数据是否为所述第二数据以及所述第七内存单元的第二写入数据是否为所述第一数据;
确定单元801,还用于若所述第二写入数据是所述第二数据,则确定所述第二内存单元正常,或者用于若所述第六内存单元的第二写入数据是所述第二数据以及所述第七内存单元的第二写入数据是所述第一数据,确定所述第六内存单元和所述第七内存单元正常;
恢复单元806,用于向所述第二内存单元恢复所述保存的第二内存数据,或者用于向所述第六内存单元和所述第七内存单元分别恢复保存的所述第六内存数据和所述第七内存数据;
确定单元801,还用于若所述第二写入数据不是所述第二数据,则确定所述第二内存单元异常,还用于若所述第一写入数据不是所述第一数据,则确定所述第二内存单元异常,或者还用于若所述第六内存单元的第一写入数据不是所述第一数据和/或所述第七内存单元的第一写入数据不是所述第二数据,则确定所述第六内存单元和/或第七内存单元异常。
本申请实施例中,微控制单元内存的检测装置所执行的操作与前述图2或图5所示的实施例类似,此处不再赘述。
本申请实施例中,对内存单元的存储单元进行内存单元动态测试时候,保存单元805先对待测试的内存单元进行数据保存,写入单元802写入同一内存单元的数据采用互为互补随机数的两个数据,先后两次写入同一内存单元中,分别读取这两次该内存单元先后写入的数据,判断读取的数据与写入的数据是否一致,若一致,则确定该内存单元正常,再把保存的内存单元数据向该内存单元进行恢复。互为互补随机数的两个数据分两次写入同一内存单元可以保证存储该互为互补随机数的二进制位都会发生状态切换,可以实现对微控制单元每个内存单元的二进制位的精确测试,测试结果更加准确。
请查阅图9,本申请实施例中的微控制单元内存的检测装置另一实施例包括:
确定单元901,用于当微控制单元工作时,确定微控制单元内存中的第二内存单元;
确定单元901,还用于确定微控制单元内存中空闲的第三内存单元;
写入单元902,还用于向所述第三内存单元写入第一数据;
读取单元903,还用于读取所述第三内存单元的第一写入数据;
判断单元904,还用于判断所述第一写入数据是否为所述第一数据;
写入单元902,还用于若所述第一写入数据是所述第一数据,则向所述第三内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数;
读取单元903,还用于读取所述第三内存单元的第二写入数据;
判断单元904,还用于判断所述第二写入数据是否为所述第二数据;
确定单元901,还用于若所述第二写入数据是所述第二数据,则确定所述第三内存单元正常;
作为单元907,用于将所述第三内存单元作为第一缓冲器,所述第一缓冲器用于保存所述第二内存数据;
触发单元908,用于触发将所述第二内存单元的第二内存数据保存的步骤;
确定单元901,还用于若所述第二写入数据不是所述第二数据,则确定所述第三内存单元异常,还用于若所述第一写入数据不是所述第一数据,则确定所述第三内存单元异常。
保存单元905,用于将所述第二内存单元的第二内存数据保存;
写入单元902,用于向所述第二内存单元写入第一数据;
读取单元903,用于读取所述第二内存单元的第一写入数据;
判断单元904,用于判断所述第一写入数据是否为所述第一数据;
写入单元902,还用于若所述第一写入数据是所述第一数据,则向所述第二内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数;
读取单元903,还用于读取所述第二内存单元的第二写入数据;
判断单元904,还用于判断所述第二写入数据是否为所述第二数据;
确定单元901,还用于若所述第二写入数据是所述第二数据,则确定所述第二内存单元正常;
恢复单元906,用于向所述第二内存单元恢复所述保存的第二内存数据;
确定单元901,还用于若所述第二写入数据不是所述第二数据,则确定所述第二内存单元异常,还用于若所述第一写入数据不是所述第一数据,则确定所述第二内存单元异常。
本申请实施例中,微控制单元内存的检测装置所执行的操作与前述图3所示的实施例类似,此处不再赘述。
请查阅图10,本申请实施例中的微控制单元内存的检测装置另一实施例包括:
确定单元1001,用于当微控制单元工作时,确定微控制单元内存中的第六内存单元和第七内存单元;
保存单元1005,用于将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存;
写入单元1002,用于向所述第六内存单元和所述第七内存单元分别写入第一数据和第二数据,所述第一数据与第二数据互为互补随机数;
读取单元1003,用于读取所述第六内存单元和所述第七内存单元的第一写入数据;
判断单元1004,用于判断所述第六内存单元的第一写入数据是否为所述第一数据以及所述第七内存单元的第一写入数据是否为所述第二数据;
写入单元1002,还用于若所述第六内存单元的第一写入数据是所述第一数据以及所述第七内存单元的第一写入数据是所述第二数据,则向所述第六内存单元和所述第七内存单元分别写入第二数据和第一数据;
读取单元1003,还用于读取所述第六内存单元和所述第七内存单元的第二写入数据;
判断单元1004,还用于判断所述第六内存单元的第二写入数据是否为所述第二数据以及所述第七内存单元的第二写入数据是否为所述第一数据;
写入单元1002,还用于若所述第六内存单元的第二写入数据是所述第二数据以及所述第七内存单元的第二写入数据是所述第一数据;
确定单元1001,用于确定所述第六内存单元和所述第七内存单元正常;
恢复单元1006,用于向所述第六内存单元和所述第七内存单元分别恢复保存的所述第六内存数据和所述第七内存数据;
确定单元1001,还用于若所述第六内存单元的第二写入数据不是所述第二数据和/或所述第七内存单元的第二写入数据不是第一数据,则确定所述第六内存单元和/或第七内存单元异常;
确定单元1001,还用于若所述第六内存单元的第一写入数据不是所述第一数据和/或所述第七内存单元的第一写入数据不是所述第二数据,则确定所述第六内存单元和/或第七内存单元异常。
本实施例中微控制单元内存的检测装置还包括:
确定单元1001,还用于确定微控制单元内存中空闲的第十内存单元和空闲的第十一内存单元;
写入单元1002,还用于向所述第十内存单元和所述第十一内存单元分别写入第一数据和第二数据,所述第二数据与第一数据互为互补随机数;
读取单元1003,还用于读取所述第十内存单元和所述第十一内存单元的第一写入数据;
判断单元1004,还用于判断所述第十内存单元的第一写入数据是否为所述第一数据和所述第十一内存单元的第一写入数据是否为所述第二数据;
写入单元1002,还用于若所述第十内存单元的第一写入数据是所述第一数据和所述第十一内存单元的第一写入数据是所述第二数据,向所述第十内存单元和所述第十一内存单元分别写入所述第二数据和所述第一数据;
读取单元1003,还用于读取所述第十内存单元和所述第十一单元的第二写入数据;
判断单元1004,还用于判断所述第十内存单元的第二写入数据是否为所述第二数据和所述第十一内存单元的第二写入数据是否为所述第一数据;
确定单元1001,还用于若所述第十内存单元的第二写入数据是所述第二数据且所述第十一内存单元的第二写入数据是所述第一数据,则确定所述第十内存单元正常以及所述第十一内存单元正常;
作为单元1007,用于将所述第十内存单元作为第二缓冲器以及将所述第十一内存单元作为第三缓冲器,所述第二缓冲器用于保存所述第六内存数据以及所述第三缓冲器用于保存所述第七内存数据;
触发单元1008,用于触发将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存的步骤;
确定单元1001,还用于若所述第十内存单元的第二写入数据不是所述第二数据和/或所述第十一内存单元的第二写入数据不是所述第一数据,则确定所述第十内存单元或所述第十一内存单元异常;
确定单元1001,还用于若所述第十内存单元的第一写入数据不是所述第一数据和/或所述第十一内存单元的第一写入数据不是所述第二数据,则确定所述第十内存单元或所述第十一内存单元异常。
本实施例中微控制单元内存的检测装置还包括:
获取单元1009,用于获取第六内存单元的第六地址和第七内存单元的第七地址;
加法单元1010,用于对所述第六地址加二,得到第八地址;
加法单元1010,还用于对所述第七地址加二,得到第九地址;
获取单元1009,还用于获取所述微控制单元内存的最大地址;
判断单元1004,还用于判断所述第八地址或所述第九地址是否大于或者等于所述最大地址;
确定单元1001,还用于若所述第八地址或所述第九地址大于或者等于所述最大地址,则确定所述微控制单元内存正常,确定完成所述微控制单元内存的检测;
获取单元1003,还用于若所述第八地址或所述第九地址小于所述最大地址,则获取所述第八地址的第八内存单元和所述第九地址的第九内存单元;
作为单元1007,还用于将所述第八内存单元作为第六内存单元和将所述第九内存单元作为第七内存单元;
触发单元1008,用于触发执行将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存的步骤。
本申请实施例中,微控制单元内存的检测装置所执行的操作与前述图6所示的实施例类似,此处不再赘述。
面对微控制单元内存的检测装置的另一实施例进行描述,请查阅图11,具体包括:
该微控制单元内存的检测装置1100可以包括一个或一个以上中央处理器(central processing units,CPU)1101和存储器1105,该存储器1105中存储有一个或一个以上的应用程序或数据。
其中,存储器1105可以是易失性存储或持久存储。存储在存储器1105的程序可以包括一个或一个以上模块,每个模块可以包括对微控制单元内存的检测装置中的一系列指令操作。更进一步地,中央处理器1101可以设置为与存储器1105通信,在微控制单元内存的检测装置1100上执行存储器1105中的一系列指令操作。
微控制单元内存的检测装置1100还可以包括一个或一个以上电源1102,一个或一个以上有线或无线网络接口1103,一个或一个以上输入输出接口1104,和/或,一个或一个以上操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
该中央处理器1101可以执行前述图1至图6所示实施例中微控制单元内存的检测装置所执行的操作,具体此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-only memory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (14)

1.一种微控制单元内存的检测方法,其特征在于,包括:
当微控制单元启动时,确定微控制单元内存中的第一内存单元;
向所述第一内存单元写入第一数据;
读取所述第一内存单元的第一写入数据;
判断所述第一写入数据是否为所述第一数据;
若所述第一写入数据是所述第一数据,则向所述第一内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数,读取所述第一内存单元的第二写入数据,判断所述第二写入数据是否为所述第二数据,若所述第二写入数据是所述第二数据,则确定所述第一内存单元正常,若所述第二写入数据不是所述第二数据,则确定所述第一内存单元异常;
若所述第一写入数据不是所述第一数据,则确定所述第一内存单元异常。
2.一种微控制单元内存的检测方法,其特征在于,包括:
当微控制单元工作时,确定微控制单元内存中的第二内存单元;
将所述第二内存单元的第二内存数据保存;
向所述第二内存单元写入第一数据;
读取所述第二内存单元的第一写入数据;
判断所述第一写入数据是否为所述第一数据;
若所述第一写入数据是所述第一数据,则向所述第二内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数,读取所述第二内存单元的第二写入数据,判断所述第二写入数据是否为所述第二数据,若所述第二写入数据是所述第二数据,则确定所述第二内存单元正常,向所述第二内存单元恢复所述保存的第二内存数据,若所述第二写入数据不是所述第二数据,则确定所述第二内存单元异常;
若所述第一写入数据不是所述第一数据,则确定所述第二内存单元异常。
3.根据权利要求2所述的微控制单元内存的检测方法,其特征在于,在所述将所述第二内存单元的第二内存数据保存之前,该方法还包括:
确定微控制单元内存中空闲的第三内存单元;
向所述第三内存单元写入第一数据;
读取所述第三内存单元的第一写入数据;
判断所述第一写入数据是否为所述第一数据;
若所述第一写入数据是所述第一数据,则向所述第三内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数,读取所述第三内存单元的第二写入数据,判断所述第二写入数据是否为所述第二数据,若所述第二写入数据是所述第二数据,则确定所述第三内存单元正常,将所述第三内存单元作为第一缓冲器,所述第一缓冲器用于保存所述第二内存数据,触发将所述第二内存单元的第二内存数据保存的步骤,若所述第二写入数据不是所述第二数据,则确定所述第三内存单元异常;
若所述第一写入数据不是所述第一数据,则确定所述第三内存单元异常。
4.一种微控制单元内存的检测方法,其特征在于,包括:
当微控制单元启动时,确定微控制单元内存中的第四内存单元和第五内存单元;
向所述第四内存单元写入第一数据和所述第五内存单元写入第二数据,所述第一数据与所述第二数据互为互补随机数;
读取所述第四内存单元和所述第五内存单元的第一写入数据;
判断所述第四内存单元的第一写入数据是否为所述第一数据以及所述第五内存单元的第一写入数据是否为所述第二数据;
若所述第四内存单元的第一写入数据是所述第一数据以及所述第五内存单元的第一写入数据是所述第二数据,则向所述第四内存单元写入所述第二数据以及向所述第五内存单元写入所述第一数据,读取所述第四内存单元以及所述第五内存单元的第二写入数据,判断所述第四内存单元的第二写入数据是否为所述第二数据以及所述第五内存单元的第二写入数据是否为所述第一数据,若所述第四内存单元的第二写入数据是所述第二数据以及所述第五内存单元的第二写入数据是所述第一数据,则确定所述第四内存单元和所述第五内存单元正常,若所述第四内存单元的数据不是所述第二数据和/或所述第五内存单元的数据不是所述第一数据,则确定所述第四内存单元和/或所述第五内存单元异常;
若所述第四内存单元的第一写入数据不是所述第一数据和/或所述第五内存单元的第一写入数据不是所述第二数据,则确定所述第四内存单元和/或所述第五内存单元异常。
5.一种微控制单元内存的检测方法,其特征在于,包括:
当微控制单元工作时,确定微控制单元内存中的第六内存单元和第七内存单元;
将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存;
向所述第六内存单元写入第一数据和所述第七内存单元写入第二数据,所述第一数据与第二数据互为互补随机数;
读取所述第六内存单元和所述第七内存单元的第一写入数据;
判断所述第六内存单元的第一写入数据是否为所述第一数据以及所述第七内存单元的第一写入数据是否为所述第二数据;
若所述第六内存单元的第一写入数据是所述第一数据以及所述第七内存单元的第一写入数据是所述第二数据,则向所述第六内存单元写入第二数据以及向所述第七内存单元写入第一数据,读取所述第六内存单元和所述第七内存单元的第二写入数据,判断所述第六内存单元的第二写入数据是否为所述第二数据以及所述第七内存单元的第二写入数据是否为所述第一数据,若所述第六内存单元的第二写入数据是所述第二数据以及所述第七内存单元的第二写入数据是所述第一数据,则确定所述第六内存单元和所述第七内存单元正常,向所述第六内存单元恢复保存的所述第六内存数据以及向所述第七内存单元恢复保存的所述第七内存数据,若所述第六内存单元的第二写入数据不是所述第二数据和/或所述第七内存单元的第二写入数据不是第一数据,则确定所述第六内存单元和/或第七内存单元异常;
若所述第六内存单元的第一写入数据不是所述第一数据和/或所述第七内存单元的第一写入数据不是所述第二数据,则确定所述第六内存单元和/或第七内存单元异常。
6.根据权利要求5所述的微控制单元内存的检测方法,其特征在于,在将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存之前,该方法还包括:
确定微控制单元内存中空闲的第十内存单元和空闲的第十一内存单元;
向所述第十内存单元和所述第十一内存单元分别写入第一数据和第二数据,所述第一数据与第二数据互为互补随机数;
读取所述第十内存单元和所述第十一内存单元的第一写入数据;
判断所述第十内存单元的第一写入数据是否为所述第一数据以及所述第十一内存单元的第一写入数据是否为所述第二数据;
若所述第十内存单元的第一写入数据是所述第一数据和所述第十一内存单元的第一写入数据是所述第二数据,则向所述第十内存单元写入所述第二数据以及所述第十一内存单元写入所述第一数据,读取所述第十内存单元和所述第十一单元的第二写入数据,判断所述第十内存单元的第二写入数据是否为所述第二数据和所述第十一内存单元的第二写入数据是否为所述第一数据,若所述第十内存单元的第二写入数据是所述第二数据以及所述第十一内存单元的第二写入数据是所述第一数据,则确定所述第十内存单元正常和所述第十一内存单元正常,将所述第十内存单元作为第二缓冲器以及将所述第十一内存单元作为第三缓冲器,所述第二缓冲器用于保存所述第六内存数据以及所述第三缓冲器用于保存所述第七内存数据,触发将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存的步骤,若所述第十内存单元的第二写入数据不是所述第二数据和/或所述第十一内存单元的第二写入数据不是所述第一数据,则确定所述第十内存单元或所述第十一内存单元异常;
若所述第十内存单元的第一写入数据不是所述第一数据和/或所述第十一内存单元的第一写入数据不是所述第二数据,则确定所述第十内存单元或所述第十一内存单元异常。
7.根据权利要求5或6所述的微控制单元内存的检测方法,其特征在于,所述第六内存单元和所述第七内存单元的内存地址是连续的。
8.根据权利要求7所述的微控制单元内存的检测方法,其特征在于,在向所述第六内存单元恢复保存的所述第六内存数据以及向所述第七内存单元恢复保存的所述第七内存数据之后,该方法还包括:
获取第六内存单元的第六地址和第七内存单元的第七地址;
对所述第六地址加二,得到第八地址;
对所述第七地址加二,得到第九地址;
获取所述微控制单元内存的最大地址;
判断所述第八地址或所述第九地址是否大于或者等于所述最大地址;
若所述第八地址或所述第九地址大于或者等于所述最大地址,则确定所述微控制单元内存正常,确定完成所述微控制单元内存的检测;
若所述第八地址或所述第九地址小于所述最大地址,则获取所述第八地址的第八内存单元和所述第九地址的第九内存单元;
将所述第八内存单元作为第六内存单元和将所述第九内存单元作为第七内存单元;
触发执行将所述第六内存单元的第六内存数据和所述第七内存单元的第七内存数据保存的步骤。
9.根据权利要求1至8中任意一项所述的微控制单元内存的检测方法,其特征在于,当微控制单元的内存为8位时,则第一数据等于0x55,第二数据等于0xAA、或当微控制单元的内存为16位时,则第一数据等于0x5555,第二数据等于0xAAAA。
10.根据权利要求1至9中任意一项所述的微控制单元内存的检测方法,其特征在于,所述微控制单元内存是集成到片上系统内部的内存或在片上系统拓展的内存。
11.一种微控制单元内存的检测装置,其特征在于,包括:
确定单元,用于当微控制单元启动时,确定微控制单元内存中的第一内存单元;
写入单元,用于向所述第一内存单元写入第一数据;
读取单元,用于读取所述第一内存单元的第一写入数据;
判断单元,用于判断所述第一写入数据是否为所述第一数据;
写入单元,还用于若所述第一写入数据是所述第一数据,则向所述第一内存单元写入第二数据,所述第二数据与所述第一数据互为互补随机数;
读取单元,还用于读取所述第一内存单元的第二写入数据;
判断单元,还用于判断所述第二写入数据是否为所述第二数据;
确定单元,还用于若所述第二写入数据是所述第二数据,则确定所述第一内存单元正常,还用于若所述第二写入数据不是所述第二数据,则确定所述第一内存单元异常,还用于若所述第一写入数据不是所述第一数据,则确定所述第一内存单元异常。
12.一种微控制单元内存的检测装置,其特征在于,包括:
处理器、存储器、总线、输入输出设备;
所述处理器与所述存储器、输入输出设备相连;
所述总线分别连接所述处理器、存储器以及输入输出设备相连;
所述处理器执行如权利要求1至10中任一项所述的方法。
13.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行如权利要求1至10中任一项所述的方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品在计算机上执行时,使得所述计算机执行如权利要求1至10中任一项所述的方法。
CN201910959105.2A 2019-10-10 2019-10-10 微控制单元内存的检测方法以及相关装置 Active CN110659150B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910959105.2A CN110659150B (zh) 2019-10-10 2019-10-10 微控制单元内存的检测方法以及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910959105.2A CN110659150B (zh) 2019-10-10 2019-10-10 微控制单元内存的检测方法以及相关装置

Publications (2)

Publication Number Publication Date
CN110659150A true CN110659150A (zh) 2020-01-07
CN110659150B CN110659150B (zh) 2023-04-21

Family

ID=69040476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910959105.2A Active CN110659150B (zh) 2019-10-10 2019-10-10 微控制单元内存的检测方法以及相关装置

Country Status (1)

Country Link
CN (1) CN110659150B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI825802B (zh) * 2022-05-05 2023-12-11 南亞科技股份有限公司 一種資料儲存裝置的控制方法
US11983066B2 (en) 2022-05-05 2024-05-14 Nanya Technology Corporation Data storage device storing associated data in two areas

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009015364A (ja) * 2007-06-29 2009-01-22 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN102508726A (zh) * 2011-11-14 2012-06-20 福建星网锐捷网络有限公司 内存参数配置方法、处理器及设备
CN103000226A (zh) * 2011-09-08 2013-03-27 施耐德电器工业公司 通过随机存取存储器芯片地址引脚检测缺陷的测试方法
CN105511981A (zh) * 2015-11-24 2016-04-20 上海斐讯数据通信技术有限公司 一种快速检测NAND Flash内存的方法
CN105868125A (zh) * 2015-01-23 2016-08-17 澜起科技(上海)有限公司 缓冲存储器及用于控制内部存储器数据访问的装置和方法
CN108630278A (zh) * 2017-03-21 2018-10-09 瑞萨电子株式会社 存储装置和存储方法
CN109086162A (zh) * 2018-08-15 2018-12-25 中国农业银行股份有限公司 一种内存诊断方法和装置
CN109686397A (zh) * 2017-10-18 2019-04-26 天津市中力神盾电子科技有限公司 具有自检功能的存储器及其检测方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009015364A (ja) * 2007-06-29 2009-01-22 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN103000226A (zh) * 2011-09-08 2013-03-27 施耐德电器工业公司 通过随机存取存储器芯片地址引脚检测缺陷的测试方法
CN102508726A (zh) * 2011-11-14 2012-06-20 福建星网锐捷网络有限公司 内存参数配置方法、处理器及设备
CN105868125A (zh) * 2015-01-23 2016-08-17 澜起科技(上海)有限公司 缓冲存储器及用于控制内部存储器数据访问的装置和方法
CN105511981A (zh) * 2015-11-24 2016-04-20 上海斐讯数据通信技术有限公司 一种快速检测NAND Flash内存的方法
CN108630278A (zh) * 2017-03-21 2018-10-09 瑞萨电子株式会社 存储装置和存储方法
CN109686397A (zh) * 2017-10-18 2019-04-26 天津市中力神盾电子科技有限公司 具有自检功能的存储器及其检测方法
CN109086162A (zh) * 2018-08-15 2018-12-25 中国农业银行股份有限公司 一种内存诊断方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI825802B (zh) * 2022-05-05 2023-12-11 南亞科技股份有限公司 一種資料儲存裝置的控制方法
US11983066B2 (en) 2022-05-05 2024-05-14 Nanya Technology Corporation Data storage device storing associated data in two areas

Also Published As

Publication number Publication date
CN110659150B (zh) 2023-04-21

Similar Documents

Publication Publication Date Title
US6550023B1 (en) On-the-fly memory testing and automatic generation of bitmaps
US7886195B2 (en) Apparatus, system, and method of efficiently utilizing hardware resources for a software test
US7962821B2 (en) Built-in self testing circuit with fault diagnostic capability
CN108899061B (zh) 一种电源常开芯片中的存储器内建自测试方法和系统
CN102737724A (zh) 非易失性随机访问存储器测试系统及方法
CN107516546B (zh) 一种随机存储器的在线检测装置及方法
US6934205B1 (en) Bist for parallel testing of on chip memory
CN110659150A (zh) 微控制单元内存的检测方法以及相关装置
CN112420117B (zh) 测试sram的方法、装置、计算机设备及存储介质
KR0136054B1 (ko) 피측정소자의 테스트방법 및 테스트시스템
WO2019184612A1 (zh) 一种终端及电子设备
CN114116355A (zh) 内存测试方法、装置及电子设备
WO2021179213A1 (zh) 修复存储芯片的方法和装置
CN117149550A (zh) 一种固态硬盘性能检测方法、装置以及电子设备
CN110853695A (zh) 一种测试nvram存储性能的方法
CN115470738A (zh) 功能验证方法及装置、电子设备和存储介质
CN115662488A (zh) 一种ssd可靠性测试方法及系统
CN115691632A (zh) 测试控制系统和方法
CN112102875B (zh) Lpddr测试方法、装置、可读存储介质及电子设备
US20190310800A1 (en) Method for accessing code sram and electronic device
CN110209541B (zh) Linux系统硬盘负载状态下的重启测试方法和装置
CN113742198B (zh) 测试方法、装置、电子设备及存储介质
JPS63148498A (ja) 自己診断機能を具備した記憶装置
CN116540059B (zh) 半导体芯片测试方法、装置、设备及存储介质
Nicolaidis et al. Transparent BIST for ECC-based memory repair

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant