CN109408301A - 一种pmon下基于龙芯64位处理器的内存测试方法 - Google Patents
一种pmon下基于龙芯64位处理器的内存测试方法 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection 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位处理器的内存测试方法。
背景技术
随着国家对信息安全、芯片自主可控的重视程度不断提高,国产处理器正处于高速发展的阶段,并被使用在越来越广泛的情形中。龙芯系列处理器作为国产处理器中的一个重要组成成员,在市场占有率方面有相当一部分比重,属于使用范围比较广、使用率比较高的国产处理器。其中,龙芯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中的一种。
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)
| 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)
| 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 | 中国电子科技集团公司第三十二研究所 | 国产操作系统验证平台及建立方法 |
-
2017
- 2017-08-16 CN CN201710700979.7A patent/CN109408301A/zh active Pending
Patent Citations (3)
| 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)
| Title |
|---|
| 卢小张: "基于龙芯的嵌入式数控系统平台的研究与开发", 《中国优秀博硕士学位论文全文数据库(硕士)(工程科技Ⅰ辑)》 * |
| 李雷: "基于PMON的龙芯2E处理器BIOS优化设计", 《中国优秀博硕士学位论文全文数据库(硕士)(信息科技辑)》 * |
Cited By (7)
| 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 |