[go: up one dir, main page]

CN109408301A - 一种pmon下基于龙芯64位处理器的内存测试方法 - Google Patents

一种pmon下基于龙芯64位处理器的内存测试方法 Download PDF

Info

Publication number
CN109408301A
CN109408301A CN201710700979.7A CN201710700979A CN109408301A CN 109408301 A CN109408301 A CN 109408301A CN 201710700979 A CN201710700979 A CN 201710700979A CN 109408301 A CN109408301 A CN 109408301A
Authority
CN
China
Prior art keywords
test
memory
pmon
address
godson
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.)
Pending
Application number
CN201710700979.7A
Other languages
English (en)
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.)
China South Industries Group Automation Research Institute
Original Assignee
China South Industries Group Automation Research Institute
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 China South Industries Group Automation Research Institute filed Critical China South Industries Group Automation Research Institute
Priority to CN201710700979.7A priority Critical patent/CN109408301A/zh
Publication of CN109408301A publication Critical patent/CN109408301A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供了一种PMON下基于龙芯64位处理器的内存测试方法。本发明的方法,使用汇编语言编写,随着PMON启动自动开始进行全覆盖测试,测试最先通过不同模式的数据读写某固定地址测试数据线,接着通过在所有有效地址写入地址值再回读所有地址测试地址线,然后以内存内部BANK为单位连续写入多种不同模式的数据再回读对比进行普通访存测试,最后对地址空间分组,选定组内偏移,对偏移位置和其他位置写入固定的原码和反码这种跳跃、连续混合形式的读写进行压力更高的特殊访存测试。由此在龙芯64位处理器平台上实现物理内存全覆盖、启动自测、提供较高测试压力的内存测试目的,进而能加速硬件系统研发阶段的快速测试工作,并同时可初步对内存稳定性提供证明。

Description

一种PMON下基于龙芯64位处理器的内存测试方法
技术领域
本发明涉及内存测试技术领域,特别是指一种PMON下基于龙芯64位处理器的内存测试方法。
背景技术
随着国家对信息安全、芯片自主可控的重视程度不断提高,国产处理器正处于高速发展的阶段,并被使用在越来越广泛的情形中。龙芯系列处理器作为国产处理器中的一个重要组成成员,在市场占有率方面有相当一部分比重,属于使用范围比较广、使用率比较高的国产处理器。其中,龙芯64位处理器可用于对处理性能有一定要求的场景,通常配备较大容量的内存,运行规模较大的操作系统。内存作为运行程序的关键载体,其可用性、稳定性是要通过一定的测试方法来长期测试予以保证。
对于内存测试,特别是DDR内存的测试,目前一些针对不同重点的测试项目,比如地址线测试、数据线测试,已经有比较成熟的理论和通用可行的测试方案。在其它处理器平台上,比如ARM、x86,都有成熟的、易于使用的内存测试方案或软件产品可以让用户很轻松的完成内存测试。
目前龙芯处理器平台使用的PMON和Linux也已经有内存测试程序,比如PMON中的newmt(C语言编写)和Test_Mem(汇编编写),Linux系统下中的stressapptest,但是这些内存测试程序的方法实现不尽相同,其中newmt和stressapptest提供的测试方法相对完整,但需要较高的人工参与度,不能嵌入到启动流程中做自测试,不利于硬件系统研发过程中的快速自动测试。而Test_Mem虽然可以加入启动流程进行自动测试,但是测试项目少、方法过于简单,不能达到检测内存稳定性的目的。并且在龙芯64位处理器的平台上,整个PMON程序是按照32位设计和编译的,而Linux虽使用64位的内核却挂接32位的用户空间,由于MIPS架构默认的虚拟地址映射以及应用二进制接口(ABI)的局限性,C语言编写的程序无法覆盖全部物理内存测试。同时由于PMON或Linux自身运行要占用一部分内存,这部分内存也不能被测试使用。
综上所述,龙芯处理器平台的已有测试程序无法覆盖所有的DDR内存空间。如何在龙芯64位处理器平台上同时实现全覆盖、启动自测、压力测试这些特性的内存测试方法则是现有技术条件下有待解决的问题。
发明内容
本发明的目的是针对上述龙芯处理器平台现有内存测试技术存在的问题提供一种PMON下基于龙芯64位处理器的内存测试方法,以达到物理内存全覆盖、启动自测、提供较高测试压力的目的。
为实现本发明所述目的,本发明提供一种PMON下基于龙芯64位处理器的内存测试方法,步骤如下:
1) 采用汇编语言编写测试代码;
2) 将测试代码入口嵌入到PMON启动的数据段和代码段拷贝逻辑之前,进行启动自测,同时要避免程序本身对内存空间的部分占用,也不影响后续启动动作;
3) 进行数据线测试,选定某个内存物理地址,反复读写相同宽度、不同模式的数据并比对;
4) 进行地址线测试,将所有有效内存物理地址写入地址值,确保所有地址保存的值不同,再读取所有地址的值与地址值比对;
5) 进行内存块连续读写测试,对所有有效内存物理地址以内存颗粒内部BANK为单位进行连续写多种模式的固定数据,再进行连续回读和比对;
6) 进行内存块特殊访存测试,对所有有效内存物理地址进行分组,对每个组相同偏移的地址进行写入相同原码值,再将反码写入剩下所有地址,回读每个组的原码值部分进行比对。
所述的汇编语言采用MIPS64指令集。
所述的PMON的版本为龙芯64位处理器配套使用的版本。
所述的内存为DDR2、DDR3中的一种。
本发明的一种PMON下基于龙芯64位处理器的内存测试方法,将随着PMON的加载自动运行,对内存进行基本测试,也以特殊方式对内存读写进行测试。相对于的现有技术,测试能全覆盖所有物理内存、启动自测、提供较高测试压力。由此在硬件系统研发期间能进行快速自动测试,并可初步对内存稳定性提供证明。
附图说明
图1为本发明的软件流程图。
具体实施方式
图1为本发明的软件流程图。从图1中可以看出,本发明的一种PMON下基于龙芯64位处理器的内存测试方法,首先,在步骤S1、S2、S7中的启动流程和逻辑由PMON提供支持。
接着,在步骤S2完成后,由内存测试程序暂时接管启动逻辑,并暂停启动逻辑的继续执行。其中,所述启动逻辑必须至少已经完成处理器核心部分初始化和DDR内存控制器的初始化,否则内存测试将不能正确执行。
其中,所述内存测试程序必须完全使用汇编语言编写,否则C语言编写的PMON程序部分为32位,将不能完全访问所有物理内存空间,导致测试覆盖率不足。并且此时启动内存测试程序存放在NorFlash和处理器缓存中,其自身的运行完全不依赖内存,进而不会因为程序自身占用导致部分内存无法被测试。
上述的内存测试程序对内存的访问全部通过CACHED地址空间,确保测试数据通过处理器高速缓存进行写入和读取。由于高速缓存会以缓存行(Cache Line)为单位进行读写,可提高测试期间DDR内存的访存压力。
接着,在步骤S3中,优先进行DDR数据线测试,数据线正确性是后续测试的基础。选取两个至少相差8字节的DDR内存地址作为读写的目标地址,每次读写数据位宽为DDR内存最大数据位宽,即64位。选定以下固定数据用作读写使用:0xaaaaaaaaaaaaaaaa,0xcccccccccccccccc,0xf0f0f0f0f0f0f0f0,0xff00ff00ff00ff00,0xffff0000ffff0000,0xffffffff00000000。反复向上述选取的两个目标地址分别写入选定的数据值和其反码,再分别回读比对。若回读值与写入值相同,则测试通过。如果测试失败,可通过实际回读值与期望回读值的对比情况分析数据线短路或断路的情况。
接着,在步骤S4中,进行DDR地址线测试。其中不同型号的龙芯处理器在DDR地址线/数据线、DDR物理地址、CPU虚地址的映射关系会有所不同,需要根据实际使用的DDR内存容量确定地址范围。范围确定之后,每个8字节为间隔的地址都写入其自身的地址值,确保每个写入点的写入值都完全不同。所有的可用内存地址写入完成后,对所有写入过的地址进行回读,如果回读值与当前读取的地址值相同,则测试通过。如果测试失败,可通过整体的回读情况,分析地址线短路断路的情况。
接着,在步骤S5中,进行内存连续读写测试。该测试沿用上述确定地址范围工作的成果。之后,按8字节间隔的地址、以DDR内部BANK为单位,连续写入相同固定数据值;所有BANK写入完成后,再读取所有有效地址的数据并比对,若数据没有发生变化,则改变固定数据的值再测试下一轮。其中,上述的固定数据有:0xffffffffffffffff,0x0000000000000000,0xaaaaaaaaaaaaaaaa,0x5555555555555555。
接着,在步骤S6中,进行内存特殊读写测试。该测试可以比步骤S5的测试项目提供更高的测试压力。先将整个内存空间划分成N个组,每个组由M个双字(8字节)组成,组内每个双字偏移值则相应的为0~M-1。其中,M和N皆为2的次幂。选定一个偏移值,将所有组的相同偏移值对应的双字地址写入相同固定值,再将所有组其它的双字地址写入上述固定值的反码,接着回读所有组中上述相同偏移值的双子地址并比对读取的数据值是否等于写入值。若相同,则测试通过,并改变偏移值,进行下一小轮,直到组内每个偏移值都已测试过。当所有小轮测试完成后,该变上述的固定值为自身的反码,再依照上述文字重新进行一轮测试,此时组内偏移值再次从头开始。
接着,在步骤S7中,整个内存测试程序已执行完成,测试结果会通过一定方式告知研发人员。处理器的运行状态会回到PMON启动逻辑继续执行,进行后续的启动步骤。其中,测试结果的告知方式包括但不限于以下方式:1) 调试串口;2) 显示器;3) 板载LED等。
综上所述,本发明的一种PMON下基于龙芯64位处理器的内存测试方法,将随着PMON的加载自动运行,对内存进行基本测试,也以特殊方式对内存读写进行测试。相对于的现有技术,测试能全覆盖所有物理内存、启动自测、提供较高测试压力。由此在硬件系统研发期间能进行快速自动测试,并可初步对内存稳定性提供证明。
本实施例中的汇编语言采用MIPS64指令集。
本实施例中的PMON的版本为龙芯64位处理器配套使用的版本。
本实施例中的内存为DDR2、DDR3中的一种。
上述实施例仅列示性说明本发明的原理及功效,而非用于限制本发明。任何熟悉此项技术的人员均可在不违背本发明的精神及范围下,对上述实施例进行修改。因此,本发明的权利保护范围,应如权利要求书所列。

Claims (4)

1.一种PMON下基于龙芯64位处理器的内存测试方法,其特征在于包括这些步骤:
1)采用汇编语言编写测试代码;
2)将测试代码入口嵌入到PMON启动的数据段和代码段拷贝逻辑之前,进行启动自测,同时要避免程序本身对内存空间的部分占用,也不影响后续启动动作;
3)进行数据线测试,选定某个内存物理地址,反复读写相同宽度、不同模式的数据并比对;
4)进行地址线测试,将所有有效内存物理地址写入地址值,确保所有地址保存的值不同,再读取所有地址的值与地址值比对;
5)进行内存块连续读写测试,对所有有效内存物理地址以内存颗粒内部BANK为单位进行连续写多种模式的固定数据,再进行连续回读和比对;
6)进行内存块特殊访存测试,对所有有效内存物理地址进行分组,对每个组相同偏移的地址进行写入相同原码值,再将反码写入剩下所有地址,回读每个组的原码值部分进行比对。
2.根据权利要求1所述的一种PMON下基于龙芯64位处理器的内存测试方法,其特征在于:所述的汇编语言采用MIPS64指令集。
3.根据权利要求1所述的一种PMON下基于龙芯64位处理器的内存测试方法,其特征在于:所述的PMON的版本为龙芯64位处理器配套使用的版本。
4.根据权利要求1所述的一种PMON下基于龙芯64位处理器的内存测试方法,其特征在于:所述的内存为DDR2、DDR3中的一种。
CN201710700979.7A 2017-08-16 2017-08-16 一种pmon下基于龙芯64位处理器的内存测试方法 Pending CN109408301A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710700979.7A CN109408301A (zh) 2017-08-16 2017-08-16 一种pmon下基于龙芯64位处理器的内存测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710700979.7A CN109408301A (zh) 2017-08-16 2017-08-16 一种pmon下基于龙芯64位处理器的内存测试方法

Publications (1)

Publication Number Publication Date
CN109408301A true CN109408301A (zh) 2019-03-01

Family

ID=65454415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710700979.7A Pending CN109408301A (zh) 2017-08-16 2017-08-16 一种pmon下基于龙芯64位处理器的内存测试方法

Country Status (1)

Country Link
CN (1) CN109408301A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111739577A (zh) * 2020-07-20 2020-10-02 成都智明达电子股份有限公司 一种基于dsp的高效的ddr测试方法
CN112382334A (zh) * 2020-11-06 2021-02-19 润昇系统测试(深圳)有限公司 用于行动内存的测试装置以及测试方法
CN113760783A (zh) * 2021-09-09 2021-12-07 海光信息技术股份有限公司 联合偏移预取方法、装置、计算设备和可读存储介质
CN115525484A (zh) * 2021-06-25 2022-12-27 中车株洲电力机车研究所有限公司 内存检测方法、装置、存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110271A (zh) * 2006-07-17 2008-01-23 中兴通讯股份有限公司 一种内存性能的生产测试方法
CN102087526A (zh) * 2010-11-22 2011-06-08 奇瑞汽车股份有限公司 一种混合动力整车控制器内存检测方法及装置
CN106021049A (zh) * 2016-05-18 2016-10-12 中国电子科技集团公司第三十二研究所 国产操作系统验证平台及建立方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110271A (zh) * 2006-07-17 2008-01-23 中兴通讯股份有限公司 一种内存性能的生产测试方法
CN102087526A (zh) * 2010-11-22 2011-06-08 奇瑞汽车股份有限公司 一种混合动力整车控制器内存检测方法及装置
CN106021049A (zh) * 2016-05-18 2016-10-12 中国电子科技集团公司第三十二研究所 国产操作系统验证平台及建立方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
卢小张: "基于龙芯的嵌入式数控系统平台的研究与开发", 《中国优秀博硕士学位论文全文数据库(硕士)(工程科技Ⅰ辑)》 *
李雷: "基于PMON的龙芯2E处理器BIOS优化设计", 《中国优秀博硕士学位论文全文数据库(硕士)(信息科技辑)》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111739577A (zh) * 2020-07-20 2020-10-02 成都智明达电子股份有限公司 一种基于dsp的高效的ddr测试方法
CN111739577B (zh) * 2020-07-20 2020-11-20 成都智明达电子股份有限公司 一种基于dsp的高效的ddr测试方法
CN112382334A (zh) * 2020-11-06 2021-02-19 润昇系统测试(深圳)有限公司 用于行动内存的测试装置以及测试方法
CN115525484A (zh) * 2021-06-25 2022-12-27 中车株洲电力机车研究所有限公司 内存检测方法、装置、存储介质及电子设备
CN115525484B (zh) * 2021-06-25 2025-10-24 中车株洲电力机车研究所有限公司 内存检测方法、装置、存储介质及电子设备
CN113760783A (zh) * 2021-09-09 2021-12-07 海光信息技术股份有限公司 联合偏移预取方法、装置、计算设备和可读存储介质
CN113760783B (zh) * 2021-09-09 2023-03-24 海光信息技术股份有限公司 联合偏移预取方法、装置、计算设备和可读存储介质

Similar Documents

Publication Publication Date Title
US9037812B2 (en) Method, apparatus and system for memory validation
US9275717B2 (en) Refresh address generator, volatile memory device including the same and method of refreshing the volatile memory device
US7277978B2 (en) Runtime flash device detection and configuration for flash data management software
US8607110B1 (en) I-R voltage drop screening when executing a memory built-in self test
EP3529703A1 (en) Software mode register access for platform margining and debug
US7873763B2 (en) Multi-reader multi-writer circular buffer memory
JP2016001485A (ja) 相変化メモリモジュールを備えるシステム、及び相変化メモリモジュールを管理する方法
US9250920B2 (en) Initializing processor cores in a multiprocessor system
CN109408301A (zh) 一种pmon下基于龙芯64位处理器的内存测试方法
US8688962B2 (en) Gather cache architecture
CN106990958A (zh) 一种扩展组件、电子设备及启动方法
CN109219806A (zh) 低功率存储器节流
CN102306503A (zh) 一种假容量存储器的检测方法及系统
CN106802870B (zh) 一种高效的嵌入式系统芯片Nor-Flash控制器及控制方法
US20090182977A1 (en) Cascaded memory arrangement
CN107045423B (zh) 存储器装置及其数据存取方法
US6385691B2 (en) Memory device with command buffer that allows internal command buffer jumps
US20120047344A1 (en) Methods and apparatuses for re-ordering data
RU2002118114A (ru) Компьютерное устройство, использующее необновляемую динамическую память с произвольным доступом
IL276318B2 (en) A device and method for accessing the metadata while debugging software
CN117667789B (zh) 用于离散dma数据访问的数据处理系统
US6888777B2 (en) Address decode
CN108241559A (zh) 内存测试方法及装置
CN102541623A (zh) 一种嵌入式处理器的存储空间模拟方法
US20040255075A1 (en) Apparatus and method for flash ROM management

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190301

RJ01 Rejection of invention patent application after publication