航空机载软件全数字仿真测试系统的设计与实现*

2022-03-27 11:28王月波
电讯技术 2022年3期
关键词:测试环境二进制客户端

刘 涛,卢 希,冯 飞,王月波

(中国西南电子技术研究所,成都 610036)

0 引 言

随着航空电子技术的发展,航电系统架构设计从独立式设备向高度综合化、通用化、模块化方向转变,机载软件实现的功能在航空领域中占据非常重要的位置,是影响航空产品安全性和可靠性的主要因素之一,对机载软件进行充分性测试是保证软件质量的有效手段[1]。由于机载软件系统的高实时性、内存空间有限、I/O 通道较少且开发工具昂贵、与硬件紧密相关、处理器种类繁多等特性[2],决定了机载软件测试方法已不能简单地沿袭传统的测试方法。

航空电子系统一般由通信、导航、雷达、电子战等设备构成,实现信息的测量、采集、传输、处理、监控和显示功能,并完成飞行控制、导航等任务。目前,航空机载软件测试环境主要是全物理实装测试环境和半实物仿真测试环境[3]。全物理实装测试环境是指软件运行在真实目标机上,与其交联系统也是真实的物理设备,典型的测试工具有总线监视器、示波器、信号源、逻辑分析仪等。全实装测试环境的优点是软件运行在真实环境中,测试结果可信度高,缺点就是实物套量少、成本高。半实物仿真测试环境是指软件运行在真实目标机上,而其交联系统通过软件仿真实现。半实物仿真测试环境一般由上位机、下位机和目标机构成,上位机实现测试过程管理、环境仿真建模、测试数据发送和结果分析显示的功能,下位机实现总线驱动、断点调试、日志记录等功能,目标机运行被测软件[3-4]。半实物仿真测试环境是目前最常用的航空机载软件测试环境。

全物理实装测试环境和半实物仿真测试环境均基于真实目标机的环境,主要存在以下问题:一是航空机载项目大多采用软件和硬件并行开发的模式,由于实物套量少,机载软件调试、验证时间有限,导致无法尽早、及时地发现软件缺陷;二是航空机载软件较难实现非干预性、全黑盒测试——半实物仿真测试环境中,机载软件常采用源代码插桩等灰盒测试方法获得软件执行时间和代码覆盖率,但插桩技术需要修改源代码并重新编译后加载进目标机,代码膨胀使得所需空间增加,可能导致被测软件实时性变差,从而影响被测软件的执行结果[5];三是航空机载软件测试环境的可控性和通用性较差——机载软件测试过程中较难实现状态保存、恢复及特定场景的设置,较难实时掌握机载软件内部运行行为,不利于及时发现和定位被测软件中潜在的缺陷;同时,机载软件硬件测试环境大多属于定制开发环境,很难适合其他项目,测试环境的复用性较差。

随着计算机硬件性能指标的提高和软件技术的进步,全数字仿真技术取得了飞速发展,国外仿真系统有美国WindRiver公司的Simics和QEMU开源软件,国内有创景公司的iSystem、轩宇公司的VTest等,但支持的处理器架构有限,尤其是国产处理器,且较难自主开发处理器仿真库和搭建外围仿真环境。

针对以上问题,本文介绍了一种航空机载软件全数字仿真测试系统,通过软件的仿真技术,逼真地模拟机载软件运行的物理硬件环境,可动态地运行机载软件进行调试和测试活动[6]。该系统已成功应用于多个航空机载软件类项目。

1 航空机载软件全数字仿真测试系统的设计与实现

航空机载软件全数字仿真测试系统采用面向对象的设计思想,模拟机载航电系统中的各类设备,把要虚拟的目标系统上的所有组件都设计为独立的模块,通过手动修改硬件配置文件或通过界面图形拖拽方式来快速生成硬件配置文件,实例化各个模块,快速构建虚拟目标系统,加载并运行二进制目标程序进行仿真测试。通过分布式实时数据分发服务中间件协议与战场仿真系统中的模型仿真系统进行通信,实现信息的测量、采集、传输、处理、监控和显示功能,并完成飞行控制、发动机控制、导航、性能管理等任务[7]。

1.1 航空机载软件全数字仿真测试系统设计方案

航空机载软件全数字仿真测试系统由仿真核心平台、仿真工具组件、协同仿真组件和人机交互组件构成,组成框架如图1所示。

图1 航空机载软件全数字仿真测试系统组成框架图

仿真核心平台用于模拟真实目标系统及外围环境,运行嵌入式操作系统或目标二进制程序,通过基于底层虚拟机的动态二进制翻译技术,实现将目标汇编码直接翻译成X86汇编码执行,大幅度提高仿真系统的运行速度。同时,仿真核心平台各模块间通过统一的全局时钟模块进行管理,保证了系统在仿真环境中的实时性。处理器仿真模块仿真不同航空机载软件运行平台(处理器架构)的指令集、中断等功能,支持ARM、DSP C6k、DSP C28x、DSP C54x、DSP C55x、PowerPC、龙芯、飞腾、国威等[8];外设仿真模块支持存储设备、网卡、串口、定时器、中断控制器、DMA、Flash、LCD、MIL-STD-1553B总线、ARINC429总线、AFDX总线、FC总线、RapidIO总线、1394总线等[9-10]。仿真核心平台提供航空机载硬件类处理器、内存、外设等多种可重用库,并允许用户自行开发可重用库。

仿真工具组件用于辅助用户对系统运行进行可执行文件解析和加载、调试分析,将故障注入仿真核心平台,将可重用库按照目标系统的连接方式快速搭建虚拟环境,完成目标码覆盖率统计,把调试信息加到目标文件中,生成可执行文件,查看内存的长度以及CPU寄存器,查看当前程序的运行数据,远程GDB调试多种编程语言,根据变量的类型输出变量的值,显示动态数组的取值,指令单步执行和断点调试、源码级调试等功能。可以让操作员根据需要施加信号,实时监测信号。可以通过提供了开发虚拟仪器界面的用户接口资源文件和各种控制和显示控件,模拟实际仪器界面。

协同仿真组件用于搭建分布式嵌入式系统,采用DDS分布式实时数据分发通信协议中间件实现多个节点(软件/模型)互联[11],通过模型适配层连接Matlab或其他仿真模型,实现外部模型和仿真平台之间的数据通信,包括模型适配、时间同步、数据同步、节点管理、同步工程管理等模块。协同仿真的关键在于如何使分布在不同的物理机器的仿真系统模块能够遵循相同的时间节拍进行时间同步和数据交互[12-13],其关键技术为协同仿真时间同步和数据通信机制。

人机交互组件由基于Python或Eclipse IDE 的GUI界面、命令行接口、自动化测试、图形化硬件环境建模等模块组成。通过GUI界面或命令行接口启动一个工程文件对目标系统进行仿真,该工程目录主要包括硬件目标系统配置脚本、工程启动脚本和目标二进制程序(支持elf、coff、bin格式文件的加载)等三个文件。图形化硬件环境建模的工程还有gp文件,能够通过类似画图连线的方式进行虚拟目标系统建模,从而自动生成配置脚本文件。人机交互组件提供友好的图形界面,通过可视化操作完成工程的管理、虚拟目标系统的搭建等操作,大大降低了全数字仿真系统的使用门槛[14-15]。

1.2 基于底层虚拟机的动态二进制翻译技术

基于底层虚拟机的动态二进制翻译技术是一种直接翻译可执行二进制源机器代码的技术,能达到不同类型处理器之间二进制源机器代码相互移植的目的。该技术是实现航空机载软件全数字仿真测试系统的关键技术之一。

仿真核心平台采用目标机器平台完成动态二进制翻译,目标机器平台包括加载程序的启动模块、翻译系统控制模块、与翻译系统控制模块进行通信的运行环境仿真模块、解释器、动态翻译器和本地码执行模块[16],其技术原理如图2所示。

图2 基于底层虚拟机的动态二进制翻译技术原理图

启动模块启动解释器对源机器代码解释执行,并根据需要统计代码执行路径信息。某源机器代码的执行达到一定热度,翻译系统控制模块启动动态翻译器,对其解释器输入的源机器代码进行解码、翻译、编码,并使用底层虚拟机技术(Low Level Virtual Machine,LLVM)进行优化,生成目标机器代码片段,此后再执行到该源机器代码片段时就不再解释执行,而是通过本地码执行模块来直接执行翻译生成的目标机器代码。

运行环境仿真模块运行嵌入式操作系统或目标二进制程序,将目标机器平台输出的目标汇编码,输入翻译系统控制模块;翻译系统控制模块直接执行翻译成X86汇编码,并送入动态翻译器,利用动态二进制翻译技术,根据源机器代码片段解码、翻译、优化编码,将优化编码输出的机器代码片段送入本地执行模块;本地执行模块在翻译系统控制模块自身的执行和生成目标机器代码执行之间的切换,通过翻译系统控制模块送入运行环境仿真模块,运行环境仿真模块调用源机器代码以及信号处理,模拟真实目标系统及外围环境[17]。

1.3 协同仿真时间同步和数据通信机制

航空机载软件全数字仿真测试系统采用分布式部署方式,通过时间同步服务器提供的接口适配器可以将单一功能分散的设备(节点)组成多功能综合系统。

客户端和服务器端时间同步机制流程如图3所示,时间同步服务器(服务端)初始化网络资源并启动网络服务,进入循环主任务,等待客户端节点加入。客户端节点工程被加载并开始运行后,初始化接口适配器,通过接口适配器与服务端建立连接,注册节点模型信息并添加端口,初始化当前时间并设置时间步长,同步精度取决于时间步长。调用等待同步时钟函数进行时钟同步,每个周期的dCurTime 参数为当前周期的仿真时间,即第一个周期为0,第二个周期为0.001f,第三个周期为0.002f……以此类推。当收到当前仿真工程中所有节点模型的同步信号后,立即跳出阻塞状态,将时钟计时推进到下一个同步周期,并处理下一个周期需要完成的任务。若当前仿真时钟没有推进到dCurTime的时间时,系统便会阻塞在该函数内等待对方进行时钟同步,便能控制系统暂停运行。这种机制保证了整个仿真系统各子节点时序的一致。

图3 客户端和服务器端的时间同步机制流程图

协同仿真的多机同步工具开放接口用于客户端的注册,通用的调用流程包括初始化、注册模型、添加模型端口等步骤,使得不同客户端之间可以通过端口进行通信,客户端和服务器端数据通信机制流程如图4所示。首先,客户端1和客户端2作为子节点通过调用客户端接口注册函数注册到系统中,并建立与服务端之间的通信链路;其次,通过调用接口适配器添加端口函数返回客户端1和客户端2各自端口的索引ID,并添加相同端口名;最后,根据索引ID,使用函数SSTC_SubEngine_WriteData进行数据传输,接收到数据后在各自的回调函数中对数据进行处理。

图4 客户端和服务器端的数据通信机制流程图

2 某型机载嵌入式软件工程应用实践

某型机载航电系统由通信、导航、识别、音频等设备构成,实现信息的测量、采集、传输、处理、监控和显示功能,并完成飞行控制、导航等任务。音频设备实现机上成员之间和机外话音通信,由IO模块、AP模块和ACP模块构成,模块之间RS422通信,IO模块通过HB6096总线与航电主控设备实现数据的采集和处理,接受并响应航电分系统的控制指令。航电主控设备运行在MPC8270之上,IO模块采用TI公司的TMS320F2812 DSP,AP模块采用AD公司的双DSP架构ADSP 21368,ACP模块采用TI公司的TMS320F2812 DSP。每个虚拟硬件目标系统都使用航空机载软件全数字仿真测试系统快速构建,作为一个节点与时间同步服务器连接,提供统一的仿真时钟进行多节点同步仿真;每个目标系统也可接收上位机测试软件发送的数据指令并解析处理。

以IO模块为例,TMS320F2812目标系统搭建于高性能计算机上(处理器Intel i7-9700K CPU@3.6 GHz,内存16 GB,硬盘512SSD+1 TB机械硬盘,操作系统为Win 7),通过基于LLVM的动态二进制翻译技术实现F2812仿真,其设计原理如图5所示。该系统由F2812处理器核心、内存总线和外围设备组成,dds_control设备用于注册协同仿真模型,可通过时间同步和数据通信机制与其他目标系统进行同步联合仿真,也可接收上位机测试系统发送的数据指令进行解析处理并把数据发送给相应的仿真设备。HB6096设备、串口设备、AD采集设备用于实现ARINC429总线、RS422总线、离散信号等协议,完成多个目标系统节点之间的数据通信。主控设备MPC8270模块、AP模块和ACP模块的设计原理类似。

图5 TMS320F2812目标系统设计原理图

通过该实例,音频设备软件全数字仿真测试系统与全物理实装测试环境的试验对比数据见表1。本系统快速搭建了F2812虚拟硬件目标系统能力,指令速度达到30 MIPS(Million Instructions per Second),能正确运行用户编译的目标码程序;提供了AP、ACP、IO等模块虚拟硬件目标系统集成,以及多种航空数据总线的虚拟仿真建模能力,并通过协同仿真时间同步和数据通信机制保证各目标系统运行时序的一致性;其回归测试效率较音频设备实装测试环境提升了42.8%,尤其在研制过程中需求变更频繁导致回归次数增多时更有效;具备故障记录能力,可在实验室条件而非客户现场完成故障排查和功能验证。

表1 某音频设备软件动态测试数据对比

3 结 论

本文分析了全物理实装测试环境和半实物仿真测试环境的优缺点,研究了航空机载软件运行环境和全数字仿真测试技术,设计并实现了一种基于底层虚拟机的动态二进制翻译技术、协同仿真时间同步和数据通信机制的航空机载软件全数字仿真测试系统,提供了航空机载硬件类处理器、内存、外设等多种可重用库,并允许用户自行开发可重用库,实现了航空机载软件全数字高速闭环仿真运行。工程实践证明,在仿真航空机载软件运行环境时,该系统仅需要高性能计算机,具有高扩展性和灵活性的特点,降低了机载硬件设备的依赖性,简化了测试环境搭建的复杂度,提高了航空机载软件测试与验证效率。

猜你喜欢
测试环境二进制客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
用二进制解一道高中数学联赛数论题
全数字仿真测试环境在航天软件测试中的应用研究
有趣的进度
雷达航迹处理测试环境构建方法研究
二进制在竞赛题中的应用
如何看待传统媒体新闻客户端的“断舍离”?
网络设备自动化测试设计与实现
二进制宽带毫米波合成器设计与分析