基于仿真环境的非侵入式嵌入式软件异常处理验证方法与流程

文档序号:12596968阅读:604来源:国知局

本发明涉及针对嵌入式软件异常处理机制测试技术,给出了一种基于仿真环境的非侵入式嵌入式软件异常处理验证方法。



背景技术:

在高可靠、高安全性的嵌入式应用中,异常处理机制对嵌入式系统的容错性、可靠性起着重要作用;在针对嵌入式系统进行软件测试时,需要验证嵌入式软件异常处理机制。

目前针对嵌入式软件的异常处理验证方法主要有:基于硬件环境的异常验证方式和基于软件插桩的异常验证方式。

基于硬件环境的异常验证方式的典型特点是采用附加的硬件,通过直接物理接触或者辐射、电磁干扰等物理现象将异常激励引入到目标系统中,通过改变目标系统的硬件状态验证软件的异常响应;该种方法在具备较强真实性的同时,存在设计成本高、对硬件影响较大、过程控制困难等特点,适用范围较小。

基于软件插桩的异常验证方式典型特点是通过向目标程序植入监控模块的形式搜集程序执行信息,该种方法改变了目标程序的原始状态,占用了目标系统的计算和存储资源,尤其对基于高频信号处理器的深嵌入式系统,在计算资源有限、实时性要求较高时不再适用。



技术实现要素:

发明的目的在于提供一种基于仿真环境的非侵入式嵌入式软件异常处理验证方法,用于解决现有嵌入式软件动态测试方法无法充分验证嵌入式软件异常处理机制的问题。

本发明一种基于仿真环境的非侵入式嵌入式软件异常处理验证方法,包括:搭建嵌入式软件仿真运行环境;设计异常处理验证测试用例,包括:对嵌入式软件的关键要素进行识别和提取;设计测试用例索引结构设计和异常处理数据;该测试用例索引结构包括:测试用例编号、测试工程信息、测试时间信息、测试人员信息、测试用例格式以及测试用例存储位置;该异常处理数据包括:异常类型、异常触发位置、异常触发时刻以及异常持续时间;以及设计异常处理数据触发形式,异常处理数据触发形式包括基于地址读访问的触发、基于地址写访问的触发、基于全局变量的触发、基于时间点的周期性触发以及基于时间点的非周期性触发;执行异常处理测试用例,包括:将异常处理测试用例运行于嵌入式软件仿真运行环境之上,嵌入式软件的可执行文件作为目标文件,包括仿真环境复位、目标文件加载与解析、测试用例选择与加载以及基于仿真的测试用例执行;仿真环境复位包括:理器内核复位以及外围设备复位,复位过程将重置处理器、内存以及外围设备的寄存器为初始状态;目标文件加载与解析包括:通过仿真运行环境存储系统仿真接口实现目标文件位置和路径的选择,通过解析目标文件实现目标文件到虚拟环境的映射;以及测试用例选择与加载包括:通过测试用例索引结构,根据需要选择单个测试用例或者多个测试用例;将测试用例加载到仿真运行环境中;在目标文件及测试用例加载完毕后对信息采集结构进行初始化;采集嵌入式软件异常信息;以及对采集的嵌入式软件异常信息进行分析与验证。

根据本发明的基于仿真环境的非侵入式嵌入式软件异常处理验证方法的一实施例,其中,该关键要素包括全局变量、寄存器地址、内存排列以及函数地址的信息。

根据本发明的基于仿真环境的非侵入式嵌入式软件异常处理验证方法的一实施例,其中,该嵌入式软件仿真运行环境包括:目标处理器内核指令集仿真模块,用于进行目标指令的动态二进制编译;嵌入式系统外设仿真模块,用于向目标处理器内核指令仿真模块以模拟外设的形式提供输入输出接口;仿真过程控制模块,用于协调目标处理器内核以及外设的仿真过程;测试数据输入接口,用于将测试数据直接输入给目标处理器内核指令集仿真模块。

根据本发明的基于仿真环境的非侵入式嵌入式软件异常处理验证方法的一实施例,其中,基于地址读访问的触发包括:在指令执行过程中对寄存器及内存地址进行监测,在指令执行到达寄存器及内存地址并进行读访问时执行触发过程;基于地址写访问的触发包括在指令执行过程中对寄存器及内存地址进行监测,在指令执行到达寄存器及内存地址时并进行写访问时执行触发过程;基于时间点的周期性触发包括在指令执行过程中对预设时间点进行监测,在指令执行时间到达预设时间点时按照周期性的参数重复执行触发过程;基于时间点的非周期性触发包括在指令执行过程中对预设时间点进行监测,在指令执行时间到达预设时间点时按照非周期性的参数重复执行触发过程。

根据本发明的基于仿真环境的非侵入式嵌入式软件异常处理验证方法的一实施例,其中,该采集嵌入式软件异常信息包括:在仿真过程控制中每一个指令周期入口对测试用例进行搜索,包括每个指令周期搜索当前测试用例是否有时间注入、每个指令周期搜索当前测试用例中是否有指令地址注入、每个指令周期搜索当前测试用例中是否有时间采集以及每个指令周期搜索当前测试用例中是否有指令地址采集;若上述任一条件为是,则时采用增量的方式对信息采集结构进行数据刷新。

根据本发明的基于仿真环境的非侵入式嵌入式软件异常处理验证方法的一实施例,其中,对采集的嵌入式软件异常信息进行分析与验证包括:异常处理验证测试用例执行完毕后,将采集到的信息进行解析,得到异常处理执行结果,包括程序执行流、程序执行次数、跳转指令的地址以及软件计算结果;对软件功能逻辑分析或与正常测试用例执行结果比对进行嵌入式软件异常处理机制的验证。

根据本发明的基于仿真环境的非侵入式嵌入式软件异常处理验证方法的一实施例,其中,用增量的方式对信息采集结构进行数据刷新包括:若当前指令不是跳转指令则不记录,否则记录当前的处理器执行信息、测试用例索引以及软件计算结果索引;软件计算结果由嵌入式软件逻辑确定,通过外围设备仿真接口进行输出,通过计算结果索引与采集信息关联。

综上,本发明的一种基于仿真环境的非侵入式嵌入式软件异常处理验证方法具有如下优点:广泛采用仿真技术,从时间和空间上减少嵌入式软件异常处理验证过程对目标硬件环境的依赖;可在保证嵌入式软件目标文件不受改动的情况下,采用非侵入式的方式实现嵌入式软件的异常处理验证;具备灵活的异常激励注入和执行手段,可提升嵌入式软件异常处理验证的效率和充分性;支持目标系统容错机制有效性验证,可提供嵌入式软件后续更改的参考依据。

附图说明

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明一种基于仿真环境的非侵入式嵌入式软件异常处理验证方法的一实施例,包括:

第一步搭建嵌入式软件仿真运行环境

嵌入式软件仿真运行环境采用虚拟化仿真技术实现目标系统的高精度高性能仿真,提供嵌入式软件的虚拟化运行环境,并提供指令执行过程及状态的监测手段,是嵌入式软件异常处理测试用例的执行平台,主要包括:目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制。

第二步异常处理验证测试用例设计

异常处理验证测试用例设计由嵌入式软件仿真运行环境提供用户接口,主要过程包括嵌入式软件关键要素提取、异常处理测试用例设计及测试用例生成。

第三步基于仿真的非侵入式异常处理测试用例执行

基于仿真的非侵入式异常处理测试用例执行通过将设计完毕的异常处理测试用例运行于嵌入式软件仿真运行环境之上,在保证不改变目标文件的情况下实现异常的响应。主要过程包括仿真环境复位、目标文件加载与解析、测试用例选择与加载、基于仿真的测试用例执行。

第四步嵌入式软件异常信息采集

嵌入式软件异常信息采集起始于仿真执行过程中对信息采集结构的初始化,在仿真过程控制中每一个指令周期入口对测试用例进行搜索,包括每个指令周期搜索当前测试用例是否有时间注入、每个指令周期搜索当前测试用例中是否有指令地址注入、每个指令周期搜索当前测试用例中是否有时间采集、每个指令周期搜索当前测试用例中是否有指令地址采集等;同时采用增量的方式对信息采集结构进行数据刷新,若信息采集结构中异常处理执行路径没有变化则不记录,否则记录当前的处理器执行信息、测试用例索引、软件计算结果索引;软件计算结果由嵌入式软件逻辑确定,通过外围设备仿真接口进行输出,如RS-422、RS-485等,通过计算结果索引与采集信息关联。嵌入式软件异常信息采集与仿真运行过程同步进行,采集结果实时缓存在宿主机中,仿真过程结束的同时完成异常信息采集。

第五步嵌入式软件异常处理结果分析与验证

异常处理验证测试用例执行完毕后,将采集到的信息进行解析,生成可视化的异常处理执行结果,包括程序执行流、程序执行次数、程序跳转地址、数据计算结果等;通过对软件功能逻辑分析或与正常测试用例执行结果比对实现嵌入式软件异常处理机制的验证。

本发明一种基于仿真环境的非侵入式嵌入式软件异常处理验证方法的另一实施例,其具体步骤包括:

第一步搭建嵌入式软件仿真运行环境

嵌入式软件仿真运行环境采用虚拟化仿真技术实现目标系统的高精度高性能仿真,提供嵌入式软件的虚拟化运行环境,并提供指令执行过程及状态的监测手段,是嵌入式软件异常处理测试用例的执行平台,主要包括:目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制。

其中,目标处理器内核指令集仿真采用基于LLVM的动态二进制编译方法实现目标指令在Windows/Intel宿主机架构下的异构执行,实现目标代码脱离原始硬件执行环境;嵌入式系统外设仿真用于实现目标处理器外围设备的仿真,包括RS-422、RS-485串口设备仿真、开关量设备仿真、存储系统仿真等,支持数据激励的注入与采集;仿真过程控制采用统一的时钟调度算法实现虚拟环境各组成部分的执行控制与协同运行。

目标处理器内核指令集仿真模块,用于进行目标文件的加载与解析以及目标文件的目标指令的动态二进制编译;

其中目标文件的加载指:将目标文件的映射到嵌入式系统外设仿真模块的存储空间;其中目标文件的解析指:将目标文件的二进制格式转换到目标文件的反汇编格式;

嵌入式系统外设仿真模块,用于向目标处理器内核指令仿真模块以模拟外设的形式提供输入输出接口;

仿真过程控制模块,用于协调目标处理器内核以及外设的仿真过程;

测试数据输入接口,用于将测试数据直接输入给目标处理器内核指令集仿真模块;

测试结果采集接口,用于采集目标处理器内核指令集仿真模块的处理器执行信息、异常处理执行路径(指令的执行路径)、测试用例索引、软件计算结果索引。

第二步异常处理验证测试用例设计

异常处理验证测试用例设计由嵌入式软件仿真运行环境提供用户接口,主要过程包括嵌入式软件关键要素提取、异常处理测试用例设计。

首先对嵌入式软件的关键要素进行识别和提取,包括全局变量、寄存器地址、内存排列、函数地址等。

测试用例用于提供包含测试意图的嵌入式软件的输入;异常处理测试用例设计包括测试用例索引结构设计和异常处理数据设计两部分。测试用例索引结构包括:测试用例编号(如字符串型、数字型、不规则表达式型等)、测试工程信息、测试时间信息、测试人员信息、测试用例格式(如*.csv、*.txt、*.dat、*.bin、*.xml等)、测试用例存储位置等。异常处理数据包括:异常类型(出现的异常是针对全局变量、寄存器地址、内存排列、函数地址测试的异常)、异常触发位置(出现异常的指令对应的寄存器地址)、异常触发时刻以及异常持续时间。异常类型、异常触发位置、异常触发时刻以及异常持续时间输入给嵌入式软件执行上述内容。

异常处理数据触发形式包括基于地址读访问的触发、基于地址写访问的触发、基于全局变量的触发、基于时间点的周期性触发、基于时间点的非周期性触发。

其中基于地址读访问的触发指在指令执行过程中对寄存器及内存地址进行监测,在指令执行到达寄存器及内存地址并进行读访问时执行触发过程;基于地址写访问的触发指在指令执行过程中对寄存器及内存地址进行监测,在指令执行到达寄存器及内存地址时并进行写访问时执行触发过程;基于时间点的周期性触发指在指令执行过程中对预设时间点进行监测,在指令执行时间到达预设时间点时按照周期性的参数重复执行触发过程;基于时间点的非周期性触发指在指令执行过程中对预设时间点进行监测,在指令执行时间到达预设时间点时按照非周期性的参数重复执行触发过程。

通过运行测试数据输入接口以及嵌入式系统外设仿真模块将异常处理数据触发形式输入给目标处理器内核指令集仿真模块,由目标处理器内核指令集仿真模块将上述异常处理数据触发形式输入给测试的嵌入式软件。

第三步基于仿真的非侵入式异常处理测试用例执行

基于仿真的非侵入式异常处理测试用例执行通过将设计完毕的异常处理测试用例运行于嵌入式软件仿真运行环境之上,嵌入式软件的可执行文件作为目标文件,在保证不改变目标文件的情况下实现异常的响应。主要过程包括仿真环境复位、目标文件加载与解析、测试用例选择与加载、基于仿真的测试用例执行。

为保证测试用例执行的独立性,基于仿真的非侵入式异常处理测试用例执行每一次过程需要进行仿真环境复位,包括处理器内核复位、外围设备复位,复位过程将重置处理器、内存以及外围设备的寄存器,为初始状态。

将目标文件的映射到嵌入式系统外设仿真模块的存储空间,具体可以包括:

目标文件加载与解析首先通过仿真运行环境存储系统仿真接口实现目标文件位置和路径的选择,实现包含COFF、ELF文件格式的目标代码向目标处理器内核的加载,通过解析目标文件代码段(.text)、数据段(.data)、BSS段(.bss)、自定义段、其它段的内容以及段表、重定位表、字符串表等结构实现目标文件到虚拟环境的映射,包括处理器内核的存储映射、外围设备的地址空间映射、嵌入式软件的启动地址、中断向量映射等;

将测试用例映射到嵌入式系统外设仿真模块的存储空间,具体可以包括:

仿真运行环境通过测试用例索引结构提供测试用例筛选排序和选择列表,实现包括按照测试用例编号选择、按照测试人员选择等。根据需要可选择单个测试用例或者多个测试用例;选择完毕后,相应的测试用例会自动加载到仿真运行环境中,仿真运行环境定义了信息采集结构,其定义了所需采集的内容,包括处理器执行信息、异常处理执行路径、测试用例索引、软件计算结果索引等;在目标文件及测试用例加载完毕后对信息采集结构进行初始化,包括时间数据初始化、地址数据初始化、时间变量初始化、时间寄存器初始化、时间内存初始化、地址变量初始化、地址寄存器初始化。该软件计算结构索引包括:外围设备仿真接口的设备类型以及所要输出的文件。

基于仿真的测试用例执行以加载的目标文件和所选的测试用例为依据,每一个执行过程处理目标文件和一个测试用例的组合。首先仿真运行环境从嵌入式软件启动地址开始解析目标文件指令,基于目标处理器内核指令集仿真方法实现目标文件指令与宿主机指令的动态二进制编译,通过外围设备仿真接口实现外部数据的注入,同时在指令执行过程中动态维护程序指令地址和下一程序地址的跳转直至程序结束或者用户中断仿真过程。对于选择多个测试用例的情况则根据测试用例个数按顺序执行,每一次执行过程重复执行仿真环境复位、目标文件加载与解析。

第四步嵌入式软件异常信息采集

嵌入式软件异常信息采集起始于仿真执行过程中对信息采集结构的初始化,在仿真过程控制中每一个指令周期入口对测试用例进行搜索,包括每个指令周期搜索当前测试用例是否有时间注入、每个指令周期搜索当前测试用例中是否有指令地址注入、每个指令周期搜索当前测试用例中是否有时间采集、每个指令周期搜索当前测试用例中是否有指令地址采集等;

若上述任一条件为是,则时采用增量的方式对信息采集结构进行数据刷新,具体包括:若当前指令不是跳转指令则不记录,否则记录当前的处理器执行信息、测试用例索引、软件计算结果索引;软件计算结果由嵌入式软件逻辑确定,通过外围设备仿真接口进行输出,如RS-422、RS-485等,通过计算结果索引与采集信息关联。嵌入式软件异常信息采集与仿真运行过程同步进行,采集结果实时缓存在宿主机中,仿真过程结束的同时完成异常信息采集。

第五步嵌入式软件异常处理结果分析与验证

异常处理验证测试用例执行完毕后,将采集到的信息进行解析,生成可视化的异常处理执行结果,包括程序执行流、程序执行次数、跳转指令的地址、软件计算结果等;通过对软件功能逻辑分析或与正常测试用例执行结果比对实现嵌入式软件异常处理机制的验证。

本发明的一种基于仿真环境的非侵入式嵌入式软件异常处理验证方法具有如下特点:

广泛采用仿真技术,从时间和空间上减少嵌入式软件异常处理验证过程对目标硬件环境的依赖;

可在保证嵌入式软件目标文件不受改动的情况下,采用非侵入式的方式实现嵌入式软件的异常处理验证;

具备灵活的异常激励注入和执行手段,可提升嵌入式软件异常处理验证的效率和充分性;

支持目标系统容错机制有效性验证,可提供嵌入式软件后续更改的参考依据。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1