APP下载

基于全数字仿真的飞控嵌入式软件测试方法与实现

2023-05-24张翔彭珲张晓娜刘志浩

无线互联科技 2023年5期
关键词:故障注入软件测试

张翔 彭珲 张晓娜 刘志浩

摘要:文章以全数字仿真测试平台为基础,针对飞控嵌入式软件的典型运行环境,提出了飞控嵌入式软件在动态测试条件下的仿真测试环境构建方法,并以某型号飞控嵌入式软件为被测软件,构建了基于嵌入式CPU模拟器的全数字仿真测试环境,设计并实现了飞控软件外部运行环境的仿真。关键词:仿真环境;飞控软件;软件测试;故障注入

中图分类号:TP311.5文献标志码:A

0 引言

飞行控制软件是飞行器姿态、速度、方向等控制的神经中枢,是飞控计算机系统中最重要的软件之一。飞控软件的缺陷可能直接导致重大经济损失甚至威胁人的生命安全,所以对飞控软件进行全面充分的测试显得尤为重要。目前,飞控计算机的系统软件和硬件都具有很强的耦合性[1]。软件实现的不同功能绝大多数依赖于计算机系统硬件的结构、输入输出端口配置和接口特性。硬件设备研制周期长、可用数量少、测试手段受限,使得软件研制进度受到了硬件研制进度的严重制约,进而导致软件开发进度拖延、测试不充分[2]。

DSP C6x系列处理器广泛用于处理飞控软件指令、通信、控制,是应用较多的典型嵌入式处理器。本文以某型号飞行控制嵌入式软件为被测软件样例,采用全数字仿真模拟技术搭建仿真测试平台,介绍了基于DSP6x系列CPU模拟器的飞控嵌入式软件仿真测试方法和实现。

1 飞控嵌入式软件全数字仿真测试环境构建

1.1 总体架构设计

全数字仿真环境在宿主机上构造嵌入式软件运行所必需的硬件环境,为嵌入式软件的运行提供一个精确的数字化硬件环境模型[3]。嵌入式软件真正运行在目标硬件之前,最大限度地模拟出目标硬件及所有交联外围设备,通过模拟界面完成功能的显示,对嵌入式软件进行充分全面的测试,以找出软件缺陷。

飞控嵌入式软件全数字仿真测试环境基本框架如图1所示,全数字仿真测试平台框架由交互界面、测试用例、故障注入、外设建模、覆盖测试和代码追踪等功能模块组成。嵌入式模拟器由流水线模拟、端口仿真、DSP指令集仿真等模块构成。

1.2 DSP C6x模拟器的建模与实现

嵌入式CPU的仿真采取基于解释的指令集仿真策略,仿真运行时需要经过类似于处理器硬件的取指、译码、执行的操作过程,实现对指令的仿真[4]。嵌入式DSP C6X处理器采用模块化的结构设计,每个模块均采用独立类的结构进行设计封装,模块与模块之间采用通用、标准化的数字接口。在外设接口仿真模型中,采用统一平台的开发接口环境,便于系统的集成和一致性[5]。DSP C6x模拟器的架构设计如图2所示,包括端口仿真、中断仿真、流水线仿真、指令解析、内存仿真、总线仿真、寄存器仿真和时钟仿真模块。在模拟器运行过程中,指令集仿真器循环执行“取指、译码、执行”3个步骤[6]。

2 飞控嵌入式软件外设接口仿真方法

2.1 实现原理

在嵌入式软件的外部接口中,DSP C6X模拟器与外设接口的访问通过外部接口寄存器进行。如图3所示,每个外部接口的寄存器与具体地址空间一一对应,访问外部接口寄存器实际就是访问特殊的地址空间,通过地址空间和函数绑定,建立起唯一的外设接口函数,从而实现外部接口的仿真。例如,在外设接口函数1中,唯一对应于端口地址集1的话,则端口地址集1的外部接口则通过外设接口函数1实现。

2.2 外设接口函数实现

在真实硬件环境中,某型号飞控嵌入式软件运行在处理器型号为DSP C6713的电子设备上,此电子设备能定时采集飞行器飞行速度、姿态等数据,并具备进行数据处理、转换和通信等功能。该电子设备包括模拟量功能模块、1553B总线等,主要接口有AD/DA接口、串口等。对其外设接口进行仿真实现,类图设计如图4所示。

2.2.1 AD/DA接口

模拟/数字转化功能模块包含8路的AD输入通道和8路的DA输出通道,其AD/DA接口的设计实现模式为:程序在每一个循环周期内,采集一次AD通道数据,并把采集到的数据通过DA转化输出到DA通道。当输出的DA通道数据小于其门限值时,则输出的数据为DA转化后的数值;而当输出的DA通道数据大于其门限值时,则输出的数据为门限值。

2.2.2 串口

串口功能模块包含RS422和RS485两种协议的串口通道,其串口的设计实现模式为:在程序运行的每个主循环周期内,嵌入式CPU模拟器对串口的数据进行采集,判断数据格式是否符合串口的数据帧格式。如果数据格式正确,模拟器就对数据进行解析,对数据进行处理与传输;反之,如果格式错误,就进行错误信息的反馈。

2.2.3 1553B总线接口

1553B总线接口是满足1553B协议的一个通道,其设计实现模式为:程序系统启动时,启动并读取配置文件,依据配置文件对1553B总线模块进行初始化设置。在程序运行的每个主循环周期内,嵌入式CPU模拟器对1553B總线端口进行访问。如果端口有数据,就采集并接收数据;如果端口没有数据,就会反馈无数据的信息。

3 基于DSP C6x模拟器的飞控软件仿真测试与实现

实现对外设接口的仿真后,测试人员就能够在没有硬件条件支持的情况下,实现对某型号飞控嵌入式软件的测试,还能灵活、方便地模拟硬件故障,利用构建的全数字仿真测试环境对被测软件进行故障注入测试[7]。

3.1 动态测试

在构建的全数字仿真测试环境中运行被测软件,利用动态测试的方法对飞控软件接口进行测试[8]。测试过程中共发现某型号飞控嵌入式的软件缺陷有2个,下面对测试结果进行简单分析。

3.1.1 内存分配缺陷

在对某型号飞控嵌入式软件进行多次动态内存分配后,会出现内存分配失败的情况,导致软件数据无法及时更新,数据发生错乱。在使用全数字仿真测试环境中的内存分析工具对被测软件的动态内存分配过程进行分析后,发现软件在内存分配的过程中,未及时释放内存,导致内存溢出。

内存分配软件缺陷源码如下:

for (index = 0;index<10;index++)

{

testptr[index] = (int *)malloc(100*sizeof(int));

}

3.1.2 串口数组越界缺陷

在串口数据采集时,如果对串口进行多包数据注入,会导致被测软件接收数据出现错误。通过对被测软件进行动态测试可发现在串口实现函数中,变量Index达到最大值时,仍然会对UARTRX[Index++]数组进行赋值操作,导致数组索引超出定义的长度,从而产生数组越界错误。数组越界软件缺陷代码如下。

for(Index = 0;Index

{

UartTemp = read_data(rUARTRX);

UARTRX[Index] = UartTemp;

}

UARTRX[Index++] = '\\0';

3.2 故障注入测试

故障可分为硬件故障、通信故障和软件故障3种类型,而本文对飞控嵌入式软件系统的测试以处理器内存故障、串口寄存器故障和数据溢出故障为3种故障类型典型进行说明。

3.2.1 处理器内存故障

内存故障是指处理器中的RAM、ROM、FLASH等内存出现异常,包括内存“写故障”、内存“读故障”和FLASH“读写故障”。在内存故障模拟中,向指定的内存地址写入错误的数据或者把指定内存空间的数据清空,可以有效地模拟内存故障。

3.2.2 串口寄存器通信故障

寄存器故障是处理器的寄存器值发生了变化,与正常的值不一致,原因可能是受电磁影响,致使寄存器的数值发生0和1的反转。在被测软件运行过程中,通过修改嵌入式模拟器中寄存器的值,可直接實现寄存器故障的模拟。

3.2.3 数据溢出软件故障

数据溢出故障是指被测软件在运行过程中,数据产生了溢出。无论是定点数还是浮点数运算,都有可能产生溢出。数据溢出包括数据计算溢出和数据接收存储溢出。数据计算溢出是指数据运算时,计算结果超出指定数据结果的范围。数据接收存储溢出是指接收的数据超过分配的存储空间时,数据不断存储导致覆盖其他内存段数据的现象。这种情况通常出现在被测软件中的全局数组或者结构体中。

4 结语

本文基于全数字仿真测试平台对某型号飞控嵌入式软件的运行环境进行虚拟化构建,以典型的嵌入式飞控软件为被测对象,采用动态运行测试和故障注入测试对其进行全面测试。通过测试,本研究找出两个较为严重的软件缺陷,验证了基于DSP C6x模拟器的全数字仿真测试环境在飞控嵌入式软件测试中的灵活性和有效性。

参考文献

[1]项文成.通用嵌入式虚拟验证系统中SPARCV8仿真核的设计与实现[D].哈尔滨:哈尔滨工业大学,2016.

[2]王乾宇,朱小冬,王毅刚,等.嵌入式软件仿真测试环境实时任务调度的研究[J].计算机测量与控制,2012(20):1162-1165.

[3]叶志玲,王向晖.基于CMMI星载嵌入式软件测试技术研究[J].计算机测量与控制,2013(4):836-838.

[4]肖前远.航空嵌入式软件全数字仿真测试技术研究[D].南京:南京航空航天大学,2010.

[5]苏银科,李艳雷,周平,等.基于故障注入的实时嵌入式软件仿真测试技术研究[J].导航定位与授时,2014(3):69-73.

[6]陈佐,张怀相,方景龙.嵌入式软件自动化测试技术[J].计算机工程与设计,2018(39):3126-3131.

[7]黎晖,石小华,林柯军,等.工程装备嵌入式软件测试环境平台技术研究[J].计算机测量与控制,2016(24):10-12.

[8]许福,金茂忠,刘辉,等.基于仿真器的嵌入式软件单元测试方法[J].北京航空航天大学学报,2012(12):1686-1690.

(编辑 王永超)

猜你喜欢

故障注入软件测试
模拟训练装备故障注入系统研究
基于OBE的软件测试课程教学改革探索
SM4算法前四轮约减轮故障注入分析
面向FPGA的故障注入测试技术研究*
采用修改-回放原理的1553B故障注入方法
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
列车MVB总线故障注入研究
一种指令级Linux内核瞬时故障注入方法研究
智能电能表软件测试技术概述