一种面向硬件设备功能的自动测试系统及方法

文档序号:6013723阅读:222来源:国知局
专利名称:一种面向硬件设备功能的自动测试系统及方法
技术领域
本发明涉及面向硬件设备功能的开发测试技术领域,尤其涉及一种面向硬件设备功能的自动测试系统及方法。
背景技术
基于FPGA(现场可编程门阵列,Field Programmable Gate Array)原型系统的功能能验证和性能评测是集成电路开发过程中的一个重要环节。在基于FPGA器件的计算机原型系统开发平台中,对各个硬件设备模块(如硬盘控制器、USB控制器、网络适配器等) 的汇编程序测试是硬件设备功能验证的必要步骤。当前在此类测试中一般存在以下几个问题第一,为保证测试的覆盖率以及满足特定情况下的压力测试需求,对某一单独功能模块的测试过程可能涉及大量测试程序,对于所涉及的大量测试程序很难凭借纯手工操作方式进行测试。第二,对于不同的测试,从测试结果判定测试成功与否的标准不尽相同,且有些测试向量可能涉及到对二进制数据的比较分析。若采用手工操作方式进行测试,则往往需要借助其它工具来实现,必然会影响到测试效率。第三,对于大量测试结果的记录与统计,采用依靠人力的手工测试方式同样难以实现。因此,目前对于此类测试,一般采用编写测试脚本的方式完成测试过程,但由于模块差异以及测试脚本的程序特性差异,测试不同模块所得结果的表示方式等内容也不尽相同,往往需要为不同的单元测试编写不同的测试脚本,因其不具通用性而必然造成效率较低、代价较大的结果。目前已有的自动测试相关专利中,测试方案的侧重点均有所不同,并不适应于基于FPGA的计算机原型系统开发平台中各设备功能的软件测试。例如,申请号为 200710076906. 1的专利“一种嵌入设备的软件自动测试工具及方法”主要针对手机、固定机台等嵌入式设备的软件测试,其技术方案需要建立专门的测试用例XML脚本并对其进行解析执行;申请号为200710134884. X的专利“基于可编程逻辑器件的多芯片自动测试方法”则注重测试FPGA电路中的电气特性,无法满足系统级硬件设备功能的测试要求; 申请号为200610126966. 5的专利“嵌入式软件自动测试系统及其测试方法”和申请号为 200410064302. 1的专利“一种嵌入式软件自动化测试的装置及其方法”所提的测试方案则针对软件系统提出的测试方法。所以,这就需要一种面向硬件设备功能的通用的自动测试系统及方法,来解决当前测试中所存在的问题。

发明内容
本发明所要解决的技术问题在于,提供一种面向硬件设备功能的自动测试系统及
4方法,用于解决现有硬件设备的测试系统中存在的测试复杂且不具通用性的问题。为了解决上述问题,本发明提出了一种面向硬件设备功能的自动测试系统,包括作为被测硬件设备测试平台的现场可编程门阵列(FPGA)测试目标平台,还包括FPGA bit文件管理和烧录子系统,通过FPGA接口与FPGA测试目标平台相连接,用于管理FPGA测试目标平台上所运行的硬件设备功能模块所需的具体的bit文件,用于在准备测试时通过FPGA接口向FPGA测试目标平台烧录与当前被测的硬件设备功能模块相对应的bit文件;基本输入/输出系统(BIOS)文件管理及烧录子系统,通过BIOS仿真器与FPGA测试目标平台相连接,用于在准备测试时向BIOS仿真器烧录测试所需的BIOS文件;自动测试系统平台,通过硬件调试器与FPGA测试目标平台连接,用于提供对测试目标平台的测试控制,保存有自动测试所需的自动测试脚本文件及测试用例集,在测试时利用自动测试脚本完成自动测试过程,通过测试用例集完成功能测试,并用于保存测试结
果 ο进一步地,所述BIOS文件管理及烧录子系统向BIOS仿真器提供的BIOS文件中, 包括用于在初始化流程后及开始执行测试前的一个循环等待对应的死循环地址;用于在跳过上述死循环地址对应的死循环后,BIOS初始化供测试环境使用的段描述符,以及对应的保护模式,最后长跳转至地址0x0:0x0进入保护模式;其中,所述段描述符包括基址为0x00000000的代码段CS的段描述符,代码段从物理地址 0x00000000 开始;所述保护模式从0x0000:0χ00Β00000处,即物理地址0x00B00000处开始执行;数据段DS、ES、FS和堆栈段SS的段描述符基址均为0x00000000,对上述段描述符
对应的段址寄存器进行内存读写时,实际读写的物理地址与所用逻辑地址数值相等。进一步地,所述自动测试系统平台保存的测试用例文件的测试代码结构中包括以text段开头、标明32位指令模式、偏移量为0的开头部分;用于在测试过程和结束时保存结果数据的内存区域;用于在测试结束后通知测试脚本测试已完成的应跳转到的一个固定地址。进一步地,所述自动测试系统平台在测试结束后对测试结果的表示方式包括如下方式之一或它们的组合是否执行结束;是否执行成功;保存测试结果;比较测试结果。进一步地,所述自动测试系统平台的自动测试脚本文件中包括用于保存测试脚本文件的所在文件夹的绝对路径信息。本发明还提供一种基于上述面向硬件设备功能的自动测试系统的测试方法,包括全局测试初始化步骤,对自动测试系统平台进行初始化,设置测试运行所需的断点信息,统计测试用例文件集,获得测试文件列表,对列表中的每一测试用例文件执行以下两个步骤单文件测试准备步骤,重置FPGA测试目标平台,进行BIOS初始化,将当前测试所需测试用例文件载入FPGA测试目标平台内存中,在进入保护模式后,设置测试程序终止地址断点;
单文件测试执行步骤,在保护模式下执行测试用例程序,根据规定的内存使用规范按需使用特定的内存区域,并将结果保存在规定的测试结果数据区域,测试执行结束后, 跳转到终止地址,触发在准备步骤中所设置的终止地址断点;测试过程中和/或测试结束后按对应结果表示方式,对测试结果进行处理。进一步地,所述测试用例文件的测试代码结构中包括以text段开头、标明32位指令模式、偏移量为0的开头部分;用于在测试过程和结束时保存结果数据的内存区域;用于在测试结束后通知测试脚本测试已完成的应跳转到的一个固定地址。进一步地,在对BIOS进行初始化过程中,包括配置在初始化流程后及开始执行测试前的一个循环等待对应的死循环地址;配置在跳过上述死循环地址对应的死循环后, BIOS初始化供测试环境使用的段描述符,以及对应的保护模式,最后跳转至地址0x0:0x0 进入保护模式;其中,所述段描述符包括基址为0x00000000的代码段CS的段描述符,代码段从物理地址 0x00000000 开始;所述保护模式从0x0000 OxOOBOOOOO处,即物理地址0x00B00000处开始执行;数据段DS、ES、FS和堆栈段SS的段描述符基址均为0x00000000,对上述段描述符
对应的段址寄存器进行内存读写时,实际读写的物理地址与所用逻辑地址数值相等。进一步地,所述自动测试系统平台对测试结果的表示方式包括如下方式之一或它们的组合是否执行结束;是否执行成功;保存测试结果;比较测试结果。进一步地,所述全局测试初始化步骤,中,包括将测试脚本文件的所在文件夹的绝对路径信息加入自动测试系统平台的自动测试脚本文件的步骤。本发明的自动测试系统及自动测试方法,利用硬件调试器(比如FS2)的支持,通过定义统一的测试执行规范实现通用的自动测试系统,支持对不同硬件模块单元测试程序的自动执行,并可对测试结果进行分析判定以及统计。与现有技术相比,本自动测试系统及方法采用软件来测试硬件设备功能,主要具有以下几个特点第一,FPGA目标测试平台为完整的通用PC硬件系统,可以运行BI0S(Basic Input/Output System)甚至操作系统;第二,主要侧重于系统级硬件环境下的某个或某些硬件模块的功能验证,与模拟验证和硬件电气特性验证等互补,对于目标硬件平台的操作系统开发具有重要意义;第三,基于硬件调试器,可以在自动测试系统平台实现对FPGA目标测试平台的全面执行控制,满足多种测试的需求;第四,测试可基于Tcl语言实现,可跨平台运行于WindoWs/Linux操作系统,满足不同硬件环境需求;第五,本测试系统具有较强可扩展性,可根据实际需求,增加特定的环境初始化、 执行控制、结果分析模块。


图1是自动测试系统的结构示意图;图2是自动测试系统的自动测试流程图3是自动测试系统具体应用实施例的操作执行流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。如图1所示,给出了以FPGA为例的面向硬件设备功能的自动测试系统的组成示意图。该面向硬件设备功能的自动测试系统包括如下几个部分 FPGA测试目标平台,其作为FPGA的系统开发平台,其上的基于FPGA的硬件设备为被测试对象,在某些环境中也可以改为其它系统开发板平台;FPGA bit文件管理和烧录子系统,与FPGA测试目标平台通过FPGA接口相连接,用于负责管理FPGA测试目标平台上所运行的硬件设备功能模块,硬件设备功能模块所需的具体的bit文件由硬件平台开发人员提供到该FPGAbit文件管理和烧录子系统,在准备测试时,通过FPGA接口向FPGA板中烧录与当前被测的硬件设备功能模块相对应的bit文件。BIOS文件管理及烧录子系统,通过BIOS仿真器与FPGA测试目标平台相连接,负责维护针对FPGA测试目标平台的BIOS (Basic Input/Output System,基本输入/输出系统) 芯片程序,保证FPGA测试目标平台的正常运行,其在准备测试时向BIOS仿真器烧录测试所用的BIOS程序。其中,BIOS仿真器还可以提供高效率的BIOS使用方法,避免在更新BIOS 程序时需要更换BIOS芯片。自动测试系统平台,通过硬件调试器与FPGA测试目标平台连接,是该自动测试系统的运行控制平台,用于提供对测试目标平台的控制功能。所述硬件调试器是FS2硬件调试器或其它适用的硬件调试器。该自动测试系统平台保存有自动测试所需的自动脚本文件及测试用例集,在测试时利用自动测试脚本完成自动测试过程,通过测试用例集完成功能测试。为保证自动测试脚本的正常执行,需要针对FPGA测试目标平台的内存布局作出规定,在该FPGA测试目标平台所用的BIOS版本中作出如下规范第一,BIOS在完成必要初始化流程后,在开始执行测试之前进入一个循环等待,死循环地址为OxFOOO :0x3F2F ;第二,在跳过上述死循环地址对应的死循环后,BIOS初始化供测试环境使用的段描述符,并跳转至地址0x0:0x0进入保护模式继续执行,该保护模式有如下特点其代码段 CS的段描述符基址为0x00000000,即代码段从物理地址0x00000000开始;进入该保护模式后,将从0x0000:0χ00Β00000处(即物理地址0x00B00000处)开始执行;数据段DS、ES、FS 和堆栈段SS的段描述符基址均为0x00000000,则在使用这些段址寄存器进行内存读写时, 实际读写的物理地址与所用逻辑地址数值相等。需要注意的是,在上述规范中,根据设置的段描述符,理论上所有的4G内存地址空间均可读写,但是考虑到实际的硬件配置以及内存中其它代码和数据的安全,建议使用的区域为0x100000到0x800000以及OxAOOOOO以上区域,并注意不要与1/0地址空间重叠。如图2所示,给出了基于图1所示硬件设备功能的自动测试系统的自动测试流程示意图。所述自动测试流程通过在调试环境执行的自动测试脚本实现自动测试过程,测试过程中无需人工干预,极大减少了工作量并提高了测试效率。该自动测试流程主要分为三个阶段第一阶段,全局测试初始化阶段在全局测试初始化阶段,主要进行自动测试系统平台和FPGA目标测试平台的初始化工作,设置测试运行所需的断点等信息。另外,本阶段需要解析并保存测试目标文件集的文件名信息,这些信息将用于后续的测试过程。该过程在一次自动测试流程中仅需执行一次。第二阶段,单文件测试准备阶段在单文件测试准备阶段,负责每个测试文件运行前的环境准备工作。其主要工作包括重置FPGA测试平台,并等待BIOS初始化完毕;将本次需要测试的文件载入到FPGA平台的内存中;在FPGA平台进入保护模式后,设置测试程序终止地址断点,以便后面监视测试程序是否执行完毕。第三阶段,单文件测试执行阶段在单文件测试执行阶段,将继续在前面完成初始化的保护模式下,执行测试目标文件。该测试过程中,测试程序可以根据规定的内存使用规范,按照需要使用特定的内存区域,并将结果保存在规定的测试结果数据区域。测试执行结束后,将跳转到终止地址, 触发自动测试系统设置的断点。在到达该终止地址断点后,自动测试系统将根据设定对该测试程序的执行结果进行判定,并保存到结果目录中。对于每个尚未测试的文件,将依次执行上述的第二和第三阶段流程,直至所有的文件都测试结束。在图2所示的自动测试流程中,具体包括如下步骤首先,设置测试所需的触发器,检测测试文件目录的合法性,并获取测试文件列表;检测结果文件目录的合法性。通过合法性检测可以避免读取测试文件或保存测试结果时出现读写错误。然后,对所获取的测试文件列表进行非空检测,若否则所有测试文件都已测试完毕,结束测试流程;若为非空,则表明仍有待测文件,则从测试文件列表中获取下一个测试文件,进一步判断该测试文件是否已经测试过,若已测试过,则返回进行测试文件列表是否非空的检测,若未经测试,则进入单文件测试准备阶段。 在单文件测试准备阶段,先发出RESET (复位)指令重置FPGA平台,在进入保护模式前的死循环阶段设置第一断点(断点1),然后发出GO指令,FPGA平台开始执行测试,测试过程中,判断是否到达第一断点,若未到达则继续进行该判断,若已到达该第一断点,则载入当前的测试文件到内存中(地址为OxOOBOOOOO);然后,跳过第一断点处的死循环,在保护模式第一条指令处设置第二断点(断点2 =EIP 0x00000000),发出GO指令,FPGA平台继续执行,过程中判断是否到达第二断点,若未到达则继续判断,若已到达第二断点,则指令指针(EIP)地址改为测试文件入口地址OxOOBOOOOO,进入单文件测试执行阶段。
在单文件测试执行阶段,需要设置第三断点作为测试终止地址断点(断点3 =EIP 0X00F00000),然后发出GO指令,测试代码开始执行,执行过程中,判断是否到达第三断点, 若否则继续判断,若已到达第三断点,则将测试结果数据保存到文件,并根据需要进行相应处理。该单文件测试结束后,返回判断测试文件列表是否非空,直到所有测试文件都已执行测试完毕,整个测试过程结束。如图3所示,给出了以FS2硬件调试器为例的自动测试本系统的基本使用操作流程图,其基本使用操作流程包括如下步骤S301 接通作为测试目标平台的FPGA板的电源,开启电源开关加电启动FPGA板;S302 从FPGA bit文件管理及烧录子系统经FPGA接口向FPGA板中烧录与所述 FPGA板相应的bit文件,所述bit文件包括适用于待测试目标功能模块的bit文件;S303 从BIOS文件管理及烧录子系统向BIOS仿真器烧录测试所需的BIOS文件;S304 按下FPGA板上的复位(reset)按钮,初始化FPGA板的状态,并在自动测试系统中的FS2后端控制系统执行HALT命令;S305 初始化硬件调试器,在FS2控制台(Console)程序的菜单栏中,选择 File->SourCe,载入FS2附带的ice-tie. tcl脚本,加载ICE基本运行环境支持;S306 建立合适的测试目标文件集文件夹,在FS2调试程序和测试脚本所在计算机系统上配置测试文件(包括但不限于测试用例文件)和测试脚本,在计算机系统中新建一个目录(需保证此该信件目录的绝对路径中不包含空格),假设其为”C: /SomeDir”,在该新建目录中创建一个bin目录,并将所有测试二进制文件复制到该bin目录中;S307 根据测试目标文件集所在的文件夹路径,修改自动测试脚本文件auto_ run_test. tcl中第一条指令,将其中的路径改为步骤S306所新建的目录的绝对路径;S308 加载自动测试脚本执行测试,在FS2的控制台(Console)中,执行File- > Source,载入修改后的自动测试脚本文件auto_ruratest. tcl,开始执行测试;S309 收集测试结果数据,在所有测试结束后,测试目录下的result目录中保存了所有测试结果,该result目录可预先建立,也可在第一次测试之前自动创建。为保证测试目标汇编代码与本自动测试系统能较好地耦合并正常运行,需要对测试目标汇编代码的格式和内存使用情况进行一些规范。目前本测试系统对于测试目标汇编代码主要有以下规范。对于测试代码结构模板本自动测试系统支持AT&T格式汇编以及Intel格式汇编测试文件。此处以AT&T格式为例介绍编写测试代码的相关约定和结构模板。对于测试代码内存使用规范由于测试代码的执行环境是由BIOS临时构建的保护模式环境,其代码段与数据段配置包括代码段基址从物理地址0x00000000开始,EIP从 0X00B00000开始执行;数据段基址从物理地址0x00000000开始,在通过EAX、EBX等寄存器进行内存读写寻址时,实际访问的物理地址与EAX/EBX...数值相等。根据设置的段描述符,理论上所有的4G内存地址空间均可读写,但是考虑到实际的硬件配置以及内存中其它代码和数据的安全,本自动测试系统使用的区域为0x100000到0x800000以及OxaOOOOO以上区域,并不与其他设备地址空间重叠。对于测试代码结构规范如下测试代码应以text段开头,且应标明32位指令模式,偏移量为0,即开头部分应形如
.text .code32 .org 0在测试过程和结束时,如果有需要保存的结果数据,可以保存在OxAOOOOO开始的 1KB内存区域中,当该测试文件测试完成后,测试脚本会将该部分数据保存到结果文件。在测试结束后,为通知测试脚本测试已完成,应跳转到一个固定地址OXFOOOOOt^t 为参考,可以使用如下方式跳转
movl %0xf00000, %eax jmp *%eax 综上,测试代码的整体模板可以表示如下
.text .code32 .org 0
Il Content of test code, you may save some data to memory start from
Il 0xa00000(size 1KB)
// End of test, notify the script movl %0χ 0000, %eax jmp *%eax 对于测试目标文件生成方案,测试汇编代码采用binutils的gas和Id进行汇编和链接,并利用objcopy将elf格式的可执行文件转换为可直接从文件起始地址执行的二进制文件。使用gas进行汇编时,建议使用的参数为“一32”。使用Id进行链接时,建议使用下面给出的参考链接脚本link. Ids。建议使用参数“-melf_i386-T link. Ids”。link .Ids的具体示例如下
权利要求
1.一种面向硬件设备功能的自动测试系统,其特征在于,包括作为被测硬件设备测试平台的现场可编程门阵列(FPGA)测试目标平台,还包括FPGA bit文件管理和烧录子系统,通过FPGA接口与FPGA测试目标平台相连接,用于管理FPGA测试目标平台上所运行的硬件设备功能模块所需的具体的bit文件,用于在准备测试时通过FPGA接口向FPGA测试目标平台烧录与当前被测的硬件设备功能模块相对应的 bit文件;基本输入/输出系统(BIOS)文件管理及烧录子系统,通过BIOS仿真器与FPGA测试目标平台相连接,用于在准备测试时向BIOS仿真器烧录测试所需的BIOS文件;自动测试系统平台,通过硬件调试器与FPGA测试目标平台连接,用于提供对测试目标平台的测试控制,保存有自动测试所需的自动测试脚本文件及测试用例集,在测试时利用自动测试脚本完成自动测试过程,通过测试用例集完成功能测试,并用于保存测试结果。
2.如权利要求1所述的自动测试系统,其特征在于,所述BIOS文件管理及烧录子系统向BIOS仿真器提供的BIOS文件中,包括用于在初始化流程后及开始执行测试前的一个循环等待对应的死循环地址;用于在跳过上述死循环地址对应的死循环后,BIOS初始化供测试环境使用的段描述符,以及对应的保护模式,最后跳转至地址0x0:0x0进入保护模式;其中,所述段描述符包括基址为0x00000000的代码段CS的段描述符,代码段从物理地址 0x00000000 开始;所述保护模式从0x0000:0χ00Β00000处,即物理地址0x00B00000处开始执行;数据段DS、ES、FS和堆栈段SS的段描述符基址均为0x00000000,上述段描述符对应的段址寄存器进行内存读写时,实际读写的物理地址与所用逻辑地址数值相等。
3.如权利要求1所述的自动测试系统,其特征在于,所述自动测试系统平台保存的测试用例文件的测试代码结构中包括以text段开头、标明32位指令模式、偏移量为0的开头部分;用于在测试过程和结束时保存结果数据的内存区域;用于在测试结束后通知测试脚本测试已完成的应跳转到的一个固定地址。
4.如权利要求1所述的自动测试系统,其特征在于,所述自动测试系统平台在测试结束后对测试结果的表示方式包括如下方式之一或它们的组合是否执行结束;是否执行成功;保存测试结果;比较测试结果。
5.如权利要求1所述的自动测试系统,其特征在于,所述自动测试系统平台的自动测试脚本文件中包括用于保存测试脚本文件的所在文件夹的绝对路径信息。
6.一种基于权利要求1所述面向硬件设备功能的自动测试系统的测试方法,其特征在于,包括全局测试初始化步骤,对自动测试系统平台进行初始化,设置测试运行所需的断点信息,统计测试用例文件集,获得测试文件列表,对列表中的每一测试用例文件执行以下两个步骤单文件测试准备步骤,重置FPGA测试目标平台,进行BIOS初始化,将当前测试所需测试用例文件载入FPGA测试目标平台内存中,在进入保护模式后,设置测试程序终止地址断点;单文件测试执行步骤,在保护模式下执行测试用例程序,根据规定的内存使用规范按需使用特定的内存区域,并将结果保存在规定的测试结果数据区域,测试执行结束后,跳转到终止地址,触发在准备步骤中所设置的终止地址断点;测试过程中和/或测试结束后按对应结果表示方式,对测试结果进行处理。
7.如权利要求6所述的方法,其特征在于,所述测试用例文件的测试代码结构中包括 以text段开头、标明32位指令模式、偏移量为O的开头部分;用于在测试过程和结束时保存结果数据的内存区域;用于在测试结束后通知测试脚本测试已完成的应跳转到的一个固定地址。
8.如权利要求6所述的方法,其特征在于,在对BIOS进行初始化过程中,包括配置在初始化流程后及开始执行测试前的一个循环等待对应的死循环地址;配置在跳过上述死循环地址对应的死循环后,BIOS初始化供测试环境使用的段描述符,以及对应的保护模式,最后跳转至地址0x0:0x0进入保护模式;其中,所述段描述符包括基址为0x00000000的代码段CS的段描述符,代码段从物理地址 0x00000000 开始;所述保护模式从0x0000:0χ00Β00000处,即物理地址OxOOBOOOOO处开始执行; 数据段DS、ES、FS和堆栈段SS的段描述符基址均为0x00000000,上述段描述符对应的段址寄存器进行内存读写时,实际读写的物理地址与所用逻辑地址数值相等。
9.如权利要求6所述的方法,其特征在于,所述自动测试系统平台对测试结果的表示方式包括如下方式之一或它们的组合是否执行结束;是否执行成功;保存测试结果;比较测试结果。
10.如权利要求6所述的方法,其特征在于,所述全局测试初始化步骤,中,包括将测试脚本文件的所在文件夹的绝对路径信息加入自动测试系统平台的自动测试脚本文件的步马聚ο
全文摘要
本发明公开了一种面向硬件设备功能的自动测试系统及方法,所述系统包括作为被测硬件设备测试平台的现场可编程门阵列(FPGA)测试目标平台,还包括FPGA bit文件管理和烧录子系统,基本输入/输出系统(BIOS)文件管理及烧录子系统,自动测试系统平台。在初始化完成后,测试时,自动测试系统平台提供对测试目标平台的测试控制,保存有自动测试所需的自动测试脚本文件及测试用例集,在测试时利用自动测试脚本完成自动测试过程,通过测试用例集完成功能测试,并用于保存测试结果。本测试系统具有通用性,并具有较强可扩展性,可根据实际需求,增加特定的环境初始化、执行控制、结果分析模块。
文档编号G01R31/28GK102346235SQ201110192679
公开日2012年2月8日 申请日期2011年7月11日 优先权日2011年7月11日
发明者张涛, 李皓, 程旭, 郑衍松, 陈守亮, 黄侃 申请人:北京北大众志微系统科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1