本发明专利技术公开了一种内存测试方法及嵌入式设备,针对现有的内存测试代码在ROM中运行不能使用堆栈,只能使用寄存器,测试程序较为复杂,通用性不强的问题,本发明专利技术具体通过TLB映射改变待测试内存对应的物理内存空间,可以做到待测试内存区域的虚拟地址不变,而实际测试内存不同,通过两次内存测试可以覆盖全部内存空间。本发明专利技术的测试方法在不增加硬件成本的情况下,通过映射进行内存全面测试,测试程序实现简单,能够提升测试速度,并且内存测试程序在内存中运行,速度快,实现测试结果同步输出。
【技术实现步骤摘要】
本专利技术属于网络通信领域,具体涉及一种网络通信设备的嵌入式系统中的内存测试方法。
技术介绍
内存是网络通信设备中重要的部件之一,它是与处理器进行沟通的桥梁,通信设备中所有程序的运行都是在内存中进行的,因此内存的性能对通信设备的影响非常大。内存测试的主要目标是验证内存上的每一个存储位置都能够可能的储存数据。本申请人在CN101211291A中提出了 “一种在嵌入式系统中测试内存的方法”,具体使用处理器在ROM中运行内存测试代码对内存进行完全测试的方法,本方法使用软件方法进入内存测试模式,不需要硬件提供任何信息,简化了硬件设计和成本,但该方法存在如下问题内存测试代码在ROM中运行不能使用堆栈,只能使用寄存器,代码较为复杂,且ROM中的汇编指令和处理器相关,通用性不强;由于从ROM中读取指令的速度和在内存中读取指令的速度不是一个数量级,ROM中执行内存测试代码执行速度会受到ROM的读写速度、指令cache大小等影响,测试速度低于内存测试代码在内存中运行。
技术实现思路
本专利技术的目的是解决现有技术存在的上述问题,提出了一种内存测试方法,具体包括如下步骤A、嵌入式设备启动后,首先读取内存测试参数,再对系统进行硬件初始化;B、对读取的内存测试参数进行判断,如为第一测试参数,则利用转换后援缓冲区TLB映射将内存空间的第一部分映射为测试程序使用的内存空间,将剩余内存空间作为待测试内存,进入步骤C ;如为第二测试参数,则利用TLB映射将内存空间的第二部分映射为测试程序使用的内存空间,将剩余内存空间作为待测试内存,进入步骤C ;如为第三测试参数,则利用TLB映射将所有内存空间映射为系统应用程序使用的内存空间,内存测试结束;C、加载测试程序到对应的内存空间,并执行内存测试程序,启动对待测试内存的测试;D、内存测试程序完成对当前待测试内存的测试后,对内存测试参数进行判断,如为第一测试参数,则设置内存测试参数为第二测试参数,并重新启动嵌入式设备,进入步骤A ;如为第二测试参数,则设置内存测试参数为第三测试参数,并重新启动嵌入式设备,进入步骤A。进一步的,步骤B中,所述第一测试参数、第二参数和第三测试参数在系统中预先定义。具体的,步骤B中,所述内存空间的第一部分为内存空间的前半部分,所述内存空间的第二部分为内存空间的后半部分;或者所述内存空间的第一部分为内存空间的后半部分,所述内存空间的第二部分为内存空间的前半部分。更进一步的,步骤C中,所述启动对待测试内存的测试,还包括在测试过程中输出测试结果的步骤。更进一步的,在步骤A之前,还包括初始化步骤:A0、设置内存测试参数为第一测试参数,并重新启动嵌入式设备。具体的,在步骤AO或步骤D中,所述设置内存测试参数的方法为将内存测试参数设置在嵌入式设备处理器的非易失性寄存器中;或者将内存测试参数设置在嵌入式设备的外部存储器中。本专利技术的另一个目的是,提供一种嵌入式设备,包括启动程序模块、TLB映射模块和测试程序模块;所述启动程序模块,运行在ROM中,用于在嵌入式设备启动时,首先读取参数存储单元中的内存测试参数,再对系统进行硬件初始化,将读取的内存测试参数通知给TLB映射模块;并在接收到TLB映射模块的通知后,加载测试程序模块到内存;所述TLB映射模块,用于对读取的内存测试参数进行判断,如为第一测试参数,则利用转换后援缓冲区TLB将内存空间的第一部分映射为测试程序使用的内存空间,将剩余内存空间作为待测试内存,通知所述启动程序模块加载内存测试程序;如为第二测试参数,则利用TLB映射将内存空间的第二部分映射为测试程序使用的内存空间,将剩余内存空间作为待测试内存;通知所述启动程序模块加载内存测试程序;如为第三测试参数,则利用TLB映射将所有内存空间映射为系统应用程序使用的内存空间,通知所述启动程序模块内存测试结束;所述测试程序模块,用于在被所述启动程序模块加载到内存后,启动对待测试内存的测试;并在完成对当前待测试内存的测试后,对内存测试参数进行判断,如为第一测试参数,则设置参数存储单元中的内存测试参数为第二测试参数,并重新启动嵌入式设备;如为第二测试参数,则设置参数存储单元中的内存测试参数为第三测试参数,并重新启动嵌入式设备。更进一步的,所述嵌入式设备还包括初始设置模块,用于在内存测试开始前,设置参数存储单元中的内存测试参数为第一测试参数,并重新启动嵌入式设备。具体的,所述参数存储单元是指嵌入式设备处理器的非易失性寄存器或者外部存储器。具体的,所述内存空间的第一部分为内存空间的前半部分,所述的内存空间的第二部分为内存空间的后半部分;或者所述内存空间的第一部分为内存空间的后半部分,所述的内存空间的第二部分为内存空间的前半部分。本专利技术的有益效果本专利技术的方法在不增加硬件成本的情况下,提供一种通过TLB映射进行内存全面测试的方法,测试程序实现简单,并且内存测试程序在内存中运行,测试速度快,测试结果同步输出。附图说明图1是本专利技术实施例的内存测试方法流程图;图2是本专利技术实施例的嵌入式设备结构框图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本专利技术作进一步详细说明。本专利技术中针对嵌入式设备的内存测试效率低下问题进行改进,通过TLB映射改变待测试内存对应的物理内存空间,可以做到待测试内存区域的虚拟地址不变,而实际测试内存不同,通过两次内存测试可以覆盖全部内存空间。本专利技术实施例的内存测试方法流程图如图1所示,包括以下步骤步骤101,嵌入式设备启动后,首先读取内存测试参数,再对系统进行硬件初始化。本步骤中,嵌入式设备重新启动后,启动程序BootRom启动,先读取内存测试参数,再实施对系统硬件驱动程序引导即对硬件进行初始化。 步骤102,对读取的内存测试参数进行判断,如为第一测试参数,则利用转换后援缓冲区TLB映射将内存空间的第一部分映射为测试程序使用的内存空间,将剩余内存空间作为待测试内存,进入步骤103 ;如为第二测试参数,则利用TLB映射将内存的第二部分映射为测试程序使用的内存空间,将剩余内存空间作为待测试内存,进入步骤103 ;如为第三测试参数,则利用TLB映射将所有内存空间映射为系统应用程序使用的内存空间,内存测试结束。本步骤中,所述第一测试参数、第二参数和第三测试参数在系统中预先定义,例如可以进行如下定义第一测试参数,参数值预先定义为1,表示利用TLB映射将内存空间的第一部分映射为测试程序使用的内存空间,对内存空间的第二部分进行测试;第二测试参数,参数值预先定义为2,表示利用TLB映射将内存的第二部分映射为测试程序使用的内存空间,对内存空间的第一部分进行测试;第三测试参数,参数值预先定义为0,表示内存测试完成,系统启动程序可以加载系统应用程序到内存,系统将执行内存中的应用程序。这里的,1,2,0分别预先设置为第一测试参数、第二测试参数和第三测试参数,在具体应用中也可以设置其它参数,只要唯一识别对内存的哪部分进行测试即可。当把内存空间的前半部分定义为内存空间的第一部分时,则内存空间的第二部分为内存空间的后半部分;当把内存空间的后半部定义为内存空间的第一部分时,则内存空间的第二部分为内存空间的前半部分。为了操作方便,本专利技术实施例的测试是将内存分为两部分,内存空间本文档来自技高网...
【技术保护点】
一种内存测试方法,其特征在于,具体包括如下步骤:A、嵌入式设备启动后,首先读取内存测试参数,再对系统进行硬件初始化;B、对读取的内存测试参数进行判断,如为第一测试参数,则利用转换后援缓冲区TLB映射将内存空间的第一部分映射为测试程序使用的内存空间,将剩余内存空间作为待测试内存,进入步骤C;如为第二测试参数,则利用TLB映射将内存空间的第二部分映射为测试程序使用的内存空间,将剩余内存空间作为待测试内存,进入步骤C;如为第三测试参数,则利用TLB映射将所有内存空间映射为系统应用程序使用的内存空间,内存测试结束;C、加载测试程序到对应的内存空间,并执行内存测试程序,启动对待测试内存的测试;D、内存测试程序完成对当前待测试内存的测试后,对内存测试参数进行判断,如为第一测试参数,则设置内存测试参数为第二测试参数,并重新启动嵌入式设备,进入步骤A;如为第二测试参数,则设置内存测试参数为第三测试参数,并重新启动嵌入式设备,进入步骤A。
【技术特征摘要】
【专利技术属性】
技术研发人员:陈小松,
申请(专利权)人:迈普通信技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。