一种嵌入式飞控软件测试质量和效率的测试方法与流程

文档序号:20366637发布日期:2020-04-11 07:06阅读:319来源:国知局
一种嵌入式飞控软件测试质量和效率的测试方法与流程

本发明涉及一种软件测试方法,特别涉及可有效提高嵌入式飞控软件测试质量和效率的测试方法。



背景技术:

飞控软件属于实时控制软件,为系统核心,时序严格,背景复杂,接口众多,实时性和精度要求极高,测试专业性强,质量要求高,尤其是飞控软件的动态测试环境,难以构建,一定程度上影响了测试的充分性,也导致测试周期偏长。目前,飞控软件动态测试环境主要有真实环境测试、半实物仿真测试环境和全数字仿真测试环境三类。真实环境测试、半实物仿真测试环境依赖于软件的硬件环境,在硬件环境不具备的情况下很难开展软件测试工作。全数字仿真测试环境主要是在芯片全数字仿真的基础上开展,可以脱离硬件,但运行速度较慢,目前国内对tms320c6713的模拟执行速度最快约为芯片速度的1/3,不利于提高测试效率。



技术实现要素:

本发明的目的在于提供一种嵌入式飞控软件测试质量和效率的测试方法,用于解决上述现有技术的问题。

本发明的目的在于提供一种嵌入式飞控软件测试质量和效率的测试方法,其中,包括:第一步、进行外围环境模拟与外部设备的接口封装;第二步、通过读串口数据时进行处理和读完数据后直接覆盖buffer中的数据,模拟rs-422串行通讯接口;第三步、启动rs485串行通讯接口发送处进行插桩;第四步、对计时器进行模拟;第五步、飞控软件的中断分为周期性中断与非周期性中断,周期性中断采用直接调用的方式处理,直接插桩,非周期性中断,采用周期性查询的方式来模拟。

根据本发明的嵌入式飞控软件测试质量和效率的测试方法的一实施例,其中,读取串口数据时进行接口处理包括:预先将接口数据准备好,按时序要求,顺序反馈给rs422接收模块,并对rs422接收模块进行插装;直接覆盖buffer中的数据包括:rs422模块接收完后,直接将准备好的数据覆盖接收区缓存,保证buffer中的数据正确,在调用rs422模块后进行插桩。

根据本发明的嵌入式飞控软件测试质量和效率的测试方法的一实施例,其中,中断处理分为周期性中断与非周期性中断,周期性中断采用调用的方式处理,直接插桩;非周期性中断,采用周期性查询的方式来模拟,如该非周期性中断满足时序要求,则调用该中断程序。

根据本发明的嵌入式飞控软件测试质量和效率的测试方法的一实施例,其中,第一步、进行外围环境模拟与外部设备的接口封装,包括:重新定义数组和变量来映射原来的地址,对外部设备的接口进行封装,飞控软件在dsp运行时读取的绝对地址,通过重新映射后,在x86pc上运行时实际读取指定的数组,采用数据预存放的方式,把数据按通讯协议以及时序要求,预先存放在指定的数组和变量中,模拟飞控软件与外部设备进行交互。

根据本发明的嵌入式飞控软件测试质量和效率的测试方法的一实施例,其中,将被测飞控软件的中断、寄存器和地址读写操作进行重新封装,将c语言飞控软件在ccs编译环境下特有的寄存器、地址指针用数组代替,使飞控软件能在microsoftvisualstudio环境下直接编译,并生成可在windows下执行的win32程序。

根据本发明的嵌入式飞控软件测试质量和效率的测试方法的一实施例,其中,进行外围环境模拟与外部设备的接口封装包括:重新定义数组和变量来映射原来的地址,对外部设备的接口进行封装,重新封装后,主程序访问宏定义的地址变更为访问数组和变量。

本发明涉及的测试方法使得嵌入式dsp飞控软件不依赖于运行环境,跨平台在x86pc上运行,只需按时序、通讯协议的要求构建外围环境,将软件运行时所需要的外部数据按时序、通讯协议的要求传输给飞控软件。其主要包含外围环境模拟与外部设备的接口封装,数字接口的处理、计时器和中断的处理。

附图说明

图1所示为真实环境和x86数字化测试平台的运行流程示意图;

图2所示为被测软件rs422串行通讯接口示意图;

图3所示为rs422串行通讯接口处理方式1示意图;

图4所示为rs422串行通讯接口处理方式2示意图;

图5所示为rs485串行通讯接口处理方式示意图;

图6所示为某飞控软件控制指令ud1和ud2测试结果与理论仿真值对比示意图;

图7所示为某飞控软件控制指令ud1和ud2测试结果与理论仿真误差值。

具体实施方式

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

图1所示为真实环境和x86数字化测试平台的运行流程示意图,如图1所示,本发明一种嵌入式飞控软件测试质量和效率的测试方法包括:

第一步、外围环境模拟与外部设备的接口封装包括:

嵌入式dsp飞控软件通过读写指定的地址来访问外部设备,在x86pc平台下直接读写,会出现内存访问和读写错误,软件不能正常运行。需要重新定义数组和变量来映射原来的地址,对外部设备的接口进行封装。避免飞控软件访问外设时出现内存访问和读写错误。

1)采用数据预存放的方式构建外围环境,包括根据通讯协议以及时序要求,将通讯数据预先存储为数据文件的形式,模拟飞控软件与外部设备进行数据交互;

2)对接口地址映射,将主程序访问外设地址的宏定义变更为访问数组和变量;

3)飞控软件在运行时,不改写地址访问语句源码,仍然读取外部设备绝对地址,由于地址已重新映射,在x86pc上运行时实际读取指定的数据文件。

地址接口的封装前后示例见表1为地址接口的宏定义,表2为地址接口的宏定义,表3为dsp环境和x86pc环境下的读写区别。

表1封装前示例

表2封装后示例

表3

备注:程序源码中,dsp环境下的读写语句和x86pc环境下的读写语句无区别。通过映射,x86pc环境下不直接访问绝对地址0xa0000080,而是访问的指定的数组。

第二步、rs-422串行通讯接口处理包括:

图2所示为飞控软件源程序rs422串行通讯接口示意图,如图2所示,飞控软件与地面设备的接口一般采用rs422串行通讯接口,用于地面发送命令和装订参数,其主要特点为数据串行单个接收,每次从同一地址读取数据。被测软件在读取串口数据时,按照dsp环境下的外设地址读取数据,由于并没有真实的外设存在,需要模拟rs422串行通讯。

模拟rs422串行通讯接口时,一般采用两种处理方式,分别是读串口数据时进行处理和读完数据后直接覆盖buffer中的数据。

读取串口数据时进行接口处理,包括:

预先将接口输入数据准备好,按时序要求,存放在接口地址映射后指向的数组和变量中,顺序反馈给rs422接收模块,这种方式需要对rs422接收模块进行插桩处理。在原读取422接口数据的程序中,插桩一个函数,根据时序替换掉dsp环境下对应的原地址中的数值。

图3为rs422串行通讯接口处理的一种处理方式示意图,表4为rs422串行通讯接口的的一种处理方式示例表,如图3所示,rs422串行通讯接口处理的一种处理方式包括:

预先将接口输入数据准备好,按时序和通讯协议要求,存放在接口地址映射后指向的数组和变量(接口地址映射参见第一步);

增加一个函数,使用映射后的数组和变量根据时序替换掉rs422接收缓存区中的值;

对原读取rs422接口数据的程序进行插桩,调用以上函数。读取rs422接口数据的程序执行后,dsp环境下对应的原地址中的数值被替换为预先注入的接口输入数据。

表4为rs422串行通讯接口处理方式1示例

直接覆盖buffer中数据的处理方式包括:

按通讯协议以及时序要求准备好接口输入数据,rs422模块接收完后,使用准备好的数据覆盖接收区缓存,这需要在调用rs422模块后进行插桩,如果程序在多处对rs422模块进行调用,就需要多处进行插桩。

图4为rs422串行通讯接口第二种处理方式示意图,表5为rs422串行通讯接口第二种处理方式示例表,如图4所示,rs422串行通讯接口第二种处理方式包括:

预先将rs422接口输入数据准备好,按时序和通讯协议要求,存放在接口地址映射后指向的数组和变量(接口地址映射参见第一步);

增加一个函数,该函数将预先准备好的输入数据文件覆盖rs422接收缓存区,保证存入缓存区的接口数据满足通讯协议与时序要求;

在被测程序“读取串口数据并存入缓存区”的函数末尾,调用以上函数;

“读取串口数据并存入缓存区”的程序执行后,dsp环境下对应的原地址中的数值被替换为预先注入的rs422接口输入数据。

表5

第三步、进行rs-485串行通讯接口处理包括:

飞控软件与外部设备通过rs-485串行通讯接口通讯,一般采用中断处理的方式进行发送和接收,为模拟rs-485串行通讯数据通讯,需在程序中启动rs485发送处进行插桩,图5所示为rs485串行通讯接口处理方式示意图,表6所示为rs485串行通讯接口插桩示例表,如图5以及表6所示,

预先将rs-485通信反馈数据准备好,按时序和各命令对应的通讯协议要求,存放在接口地址映射后指向的数组和变量;(接口地址映射参见第一步);

在发送中断服务程序中强制设置为发送成功;

接收中断服务程序中强制设置为接收成功;

新增一个函数,将接口地址映射后指向的数据存入485接收存储区;

在源程序“rs-485总线启动发送”的函数末尾,调用以上函数;

程序执行后,dsp环境下对应的原地址中的数值被替换为预先注入的485接口数据,被测软件接收到的485接口数据被正确更新。

表6

第四步、计时器处理,包括:

插桩程序,在主流程中每个周期模拟计时器变化,例如:*timer1_cnt=*timer1_cnt+“外部定时周期”;每个计算周期调用一次。

第五步、中断处理包括:

飞控软件的中断可分为周期性中断与非周期性中断。周期性中断可以采用周期性直接调用的方式处理,直接插桩。非周期性中断,采用周期性查询的方式来模拟,当按时序要求,该非周期性中断满足条件了,则直接调用该中断程序。

表7为在dsp环境下和x86pc环境下的周期性中断处理方式示例表,对于周期性中断处理方式包括:

1)首先将中断函数的关键字interrupt通过宏定义定义为空,“#defineinterrupt”便于vc直接编译;这样适用于dsp平台的周期性中断服务子程序,变为vc环境可以直接编译的函数;

2)然后在周期性中断查询模块中,插桩程序,调用外部定时器周期性中断服务子程序,强制认为定时周期到。

表7

表8为在dsp环境下和x86pc环境下的非周期性中断处理方式示例表,对于非周期性中断处理方式包括:

1)首先将中断函数的关键字interrupt通过宏定义定义为空,“#defineinterrupt”,便于vc直接编译;这样适用于dsp平台的非周期性中断服务子程序,变为vc环境可以直接编译的函数;

2)新增加一个模拟定时器的函数,模拟计时器大于等于设定值时(超过定时的时间),直接调用非周期性中断服务子程序,(计时器处理方法详见第四步计时器处理);

3)新增加一个函数,每个计算周期,将以上模拟定时器的函数调用一次。

表8

备注:通过在周期性调用模块中查询是否可以执行非周期性中断服务程序,定时精度较低,如要进一步提高定时精度,则需要在深入分析程序时序的基础上,分段查询,在满足条件的情况下,调用非周期性中断服务程序,提高模拟的真实度。

至此,完成了基于x86pc平台的数字化测试平台的建立。

由于被测件飞控软件采用模块化和结构化的方法进行设计,在对其进行接口封装后,源码的变化很少,除了接口定义的io.h头文件因为需要把地址重新映射到数组,需要进行较大的修改外,飞控软件的其他文件修改合计10行,更改的比例小,但外部数据读取和准备的源码,新增加了2个文件,需要较大工作量,但飞控软件后续版本可以直接继承这两个新增文件和io.h,可快速重构后续版本的测试环境,并开始测试工作。接口封装后程序前后对比情况可见表10所示。

表10接口封装后程序前后对比

该测试方法现已在多个飞控软件测试中得到应用,图6某飞控软件控制指令ud1、ud2在平台上运行结果与理论仿真结果的对比图,图7为平台上控制指令运行结果ud1、ud2与理论仿真结果的误差值的结果对比图,如图6以及图7所示,由曲线可知,平台运行结果与理论仿真数据误差在允许范围内(10-7),可以验证飞控软件的功能正确性。

经工程实践证明,基于x86pc平台的数字化测试平台有如下优点:

该测试平台不依赖于软件的硬件环境,无需仿真被测软件运行的处理器内核芯片以及片上设备、接口通信等设备,在配置项测试初期即可高效快速模拟运行,快速验证软件的功能正确性,节约测试资源,提高测试效率;

运行速度快,性能直接和x86pc的cpu主频相关,目前在主流x86pc上的运行速度为dsp芯片的10倍左右;

由于外围环境的输入数据由数据模拟,测试人员可以灵活改变接口的输入数据异常值,考察软件接口数据异常处理的正确性;

使用该测试方法构建的基于x86pc平台的数字化测试平台,使得白盒测试工具不再依赖于软件的硬件环境,可采用的测试工具多,测试手段多,可高速执行海量测试用例,方便进行白盒测试,从而提高软件的功能测试充分性,提高测试质量;也可根据覆盖情况,提供测试用例最小化方案,提高测试效率。

本发明能够直接在x86pc上运行c语言编写的飞控软件,无需仿真被测软件运行的处理器内核芯片以及片上设备、接口通信等设备,在配置项测试初期即可高效快速模拟运行,适用于高效验证飞控软件的功能和接口协议,尤其是程序和数学模型的一致性。解决了飞控软件在真实环境下、半实物仿真环境下、全数字仿真环境下测试的局限性,使原本运行于dsp的嵌入式飞控软件直接在x86pc平台下高效快速运行,结合逻辑测试工具,可以在短时间内验证模型计算功能的正确性和测试覆盖的充分性,大幅度提高软件测试的质量与效率。

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

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