基于数字孪生的虚拟仿真系统研究与应用
2023-10-28袁三男沃煜敏
彭 博,袁三男,沃煜敏
(上海电力大学 电子与信息工程学院,上海 200120)
0 引言
随着军用领域系统的功能日渐强大,结构愈发复杂,软件已逐渐成为武器级系统中关键的组成部分,许多重要、复杂的功能都是由软件来实现的[1]。军用系统嵌入式软件能否安全可靠的运行直接关系到机载设备(如卫星、飞机、飞行器等)系统装备演练任务的成败,使得嵌入式技术在苛刻性环境中需要满足更高的条件。而传统的开发工具很难有效应对这些苛刻性系统的设计、调试、集成、测试及维护,导致嵌入式系统在开发及验证过程中存在如下瓶颈:
周期性:嵌入式软件开发过程中,需等待相匹配的硬件设备,才可以开展后续的开发与调试工作,导致整个项目的周期拖长;
困难性:在软件开发调试阶段,受影响于硬件设备的时间与成本问题,导致软件无法在正常节点内完成开发与调试;遇到系统及设计异常问题时,很难正常开展测试和验证工作[2];
安全性:有些系统(如武器装备)在没有通过充分的软件验证,就直接进行软硬件集成会具有一定的危险性,导致设备损坏甚至人员伤亡;
低效性:在测试系统性能和解决Bug时,硬件设备只能在1∶1的实时环境中进行,一定程度上增大测试难度,导致项目周期长、可靠性低,甚至面临失败的危险;
基于上述问题所导致的不良现象,在卫星等系统的各部分实物生产之前,需要为控制系统的方案设计和技术设计提供一个尽可能真实的虚拟仿真系统;这个虚拟的目标系统是以数字孪生为基础设计的仿真模型,模拟出与真实硬件相同的功能,而后根据此模型设计出本文介绍的虚拟仿真系统,以及在该系统中实现的控制软件开发、调试、测试、闭环仿真验证和故障注入测试等功能,使控制系统设计结果的正确性与合理性能够在该平台上得到验证。
数字孪生的概念最早出现于美国国防部提出的Digital Twin技术,用于航空航天飞行器的健康维护与保障[3]。2012年NASA 给出了数字孪生的概念描述:数字孪生是指充分利用物理模型、传感器等数据,对物理实体的组成、特征、功能和性能进行数字化定义和建模的过程;它作为虚拟空间中对实体产品的镜像,反映了相对应物理实体产品的全生命周期过程[4]。 Gartner在2018年和2019年的十大战略科技发展趋势中把数字孪生定位为重要技术之一。
2012年,电子科技大学的罗天成以QEMU为模拟器工具,设计实现了一个基于虚拟机技术的飞控计算机虚拟仿真系统[5];该虚拟平台为该型号机载飞控软件的测试开发提供了便利的支持环境。2018年,电子科技大学的欧阳润宇基于真实飞控计算机,搭建了能在设计初期对飞控计算机架构设计方案进行验证分析的虚拟化验证平台,为系统的可靠性分析提供了一种崭新的方法[6]。
近年来,数字孪生成为推动创新和成果的强大技术,它的发展得到我国的政策支持,不仅是5G赋能产业链上的重要一环,与5 G三大场景之一的万物互联需求强耦合,还可以应用到电网中,使得电网智能化转型的速度得到迅速提升。目前,数字孪生技术的重要程度已经和云计算、AI、5 G等一样,上升到国家高度。
本文基于数字孪生技术,建立对星载设备的实物进行结构和功能模拟的数字孪生模型,设计出可以嵌入CPU模拟器、片上外设、通信板卡、电源等设备的全数字虚拟仿真系统。其中,基于数字孪生技术对主设备上挂载的从设备进行功能性模拟的动力学模型如图1所示;该模型仿真有虚拟仿真系统中加载的各种单机设备寄存器以及数据的输入输出接口等,是对真实单机设备的数字仿真,其中输出端out是处理器模块输出到数据库的数据,输入端in是处理器模块接收来自数据库的数据;各个仿真的单机数据再经过虚拟仿真系统解析后,将转换成16位整型数据,并显示到系统界面之中;对动力学模型的输入输出端解析出的结构和数据如图2所示。
图1 基于数字孪生驱动的动力学模型
图2 虚拟仿真系统解析出的动力学模型IO接口图
该系统不仅完成了对各种型号中涉及的CPU、内存、看门狗、中断控制器等硬件设备的功能模拟,还添加了超实时仿真系统,能够对主控计算机软件进行快速全面的系统测试,实现全数字高速闭环仿真运行,适用于军事武器装备以及高校实验项目等各个领域的系统级仿真。
1 虚拟仿真系统设计方法
本文所设计的虚拟仿真系统运用数字孪生驱动真实目标机的方法,实现与真实目标机相同的功能;该系统包含虚拟目标机和超实时仿真软件等部分;其中,虚拟目标机是用于对不同处理器、外围设备和动力学模型中单机设备的数字仿真,实现故障模拟与注入功能;超实时仿真软件用于协同控制以及超实时环境下的系统仿真[7]。其内部子系统协同工作的结构如图3所示。
图3 虚拟仿真系统模块化结构图
本文设计的虚拟仿真系统较传统仿真系统而言,独创性地添加了可以达到实时仿真速率20倍以上的超实时运行模式,并可以进行在线调试、在线故障注入、以及封装多种通信协议的通用性数字软总线等特色功能。下面将对本文所设计的仿真系统核心部分做详细介绍。
1.1 虚拟目标机软件设计
虚拟目标机是在保持高速交叉仿真完整嵌入式系统的基础上设计的虚拟开发与验证平台,独创性地将图形化建模的思想引入虚拟系统的搭建过程中,可以用作系统级的开发、调试、测试和验证。
虚拟目标机的界面通过MFC多文档模式框架进行编写,主要由CPU模拟器、虚拟芯片、虚拟内存等核心部件构成;其中,CPU模拟器模拟目标CPU的内核及其行为,如模拟PowerPC处理器的指令集仿真,将目标机的指令转换到宿主机上执行,从而实现直接通过宿主机执行目标机上的代码[8];虚拟芯片是对硬件板卡中设备进行数字化处理,封装成可以直接调用的函数库,包括串口、并口、中断控制器、各种通信总线控制器等;虚拟内存是对用于存储的RAM区、Flash以及系统寄存器的数字仿真。
虚拟目标机结合被控仿真对象以及其他仿真子系统一起构成虚拟目标系统;各个功能组件通过已经封装的内部总线进行通信,确定好主框架后,通过C++为编程语言对虚拟目标机的各个组件进行功能实现。例如操作、编辑模式的切换,可执行固件程序的加载,对目标码文件的解释执行,解释函数、全局变量的地址分配情况等;解析目标码与源码的对应关系,并在此基础上对调试功能的开发、运行以及加载模型代码等功能。
基本功能实现后,再编写通用设备模型。设备模型是虚拟目标机的组成和搭建的基本单元,通过调用VC++运行库集合包(Runtime Library/Pack)以及代码编写来实现,是对CPU外围电路、单机寄存器、通信电路板等设备进行的模块化处理;然后生成虚拟目标机可兼容的DLL文件;最后通过图形化、积木式拖拽功能的开发,实现对内部各个模型进行快速关联与连线,使其相互间通过虚拟总线进行通信,从而完成对物理设备的纯数字仿真。虚拟目标机对物理设备的数字化处理以及进行模块化编程如图4所示。
图4 虚拟目标机环境示意图
1.2 通用处理器模块设计
通用处理器模块主要提供计算资源、程序/数据存储器、硬件看门狗功能、1553B总线、内总线管理等功能。处理器模块仿真的硬件行为包括CPU芯片、存储器芯片、内总线隔离驱动线路、FPGA芯片、1553B总线接口芯片和其他逻辑电路等。在虚拟目标机中数字化仿真通用处理器模块时,需要设计匹配的指令集,通过指令集去控制处理器实现相应功能,指令仿真方法采用模拟处理器的执行,从仿真内存中取指令。
以PowerPC处理器为例,指令集以字段的形式分析内部指令,通过主机处理器模拟执行过程中的行为,然后将运行结果回写到相应的虚拟仿真寄存器中;最后运用缓存技术,得到较高的执行性能[9];整个计算流程采用C语言完成,并由VC++编译器编译。
PowerPC处理器的仿真设计包含整数单元、浮点单元、指令集、动态编译和解释执行五部分;其中,指令集是处理器单元中用来计算和控制计算机系统的一套指令的集合;整点运算性能和浮点运算性能是用来反映CPU处理数据的能力;解释执行即传统系统中使用的实时运行模式,其执行速度较慢[10];动态编译采用LLVM提供的接口进行指令的操作处理,即超实时仿真系统中设计的超实时运行模式。
整数单元是专为可靠性要求高的空间和军事应用设计,且支持错误检测;其采用了精简指令集RISC结构,可以使得指令执行速度更为精准。为保证指令执行速度,整数单元设计采用四级流水线技术,允许并行执行多条指令,整体过程分为4个部分:取指、解码、执行和写回,所有阶段实行并行工作方式,即一次性可以处理多达四条不同的指令。浮点单元也使用四阶段的指令流水线工作,可以同时满足单精度和双精度浮点指令。
在整个处理器模块开发过程中,时常存在有错误指令的情况;针对此现象,不仅可以通过定位具体函数模块找出对应的出错指令解决问题,还可以通过动态编译技术对整个处理器架构和指令集进行优化。
1.3 故障模拟与注入功能
故障注入是一种可靠性验证技术,通过受控实验向系统中刻意引入故障,并观察系统中存在故障时的行为[11]。
故障注入技术分为多种,此次虚拟仿真系统采用的是基于软件的故障注入以及对嵌入式系统与处理器相关的故障注入;基于软件的故障注入,是在软件级生成错误,从而模拟硬件级的故障行为;其注入方式有很多种,如修改内存或寄存器数据,通过应用软件生成故障或者通过底层软件如操作系统运行故障[12];具体实现主要是通过操作各下位单机的被测仿真模型接口实现对接口功能性及各分系统间的数据链路的故障模拟,如寄存器故障、存储器故障、CPU总线故障等。具体实现流程如图5所示。
图5 故障注入逻辑流程图
故障模拟是在日常开发时,为了保证硬软件的准确性以及代码的健壮性,需要模拟各种故障测试[13];通过修改虚拟目标机的内存、寄存器和图形化接口仿真软件中模拟的数据内容完成对软件的故障注入测试,以确保在这些故障出现时软件仍能正确工作。在系统全速运行时虚拟仿真系统实时监控外围设备各单机发生故障的状态显示如图6所示,它不仅可以监控仿真单机发生故障的状态,还可以监控发生故障后接收的异常数据,从而可以作为系统调试与维护时的有效辅助,使得虚拟仿真系统中主控计算机软件可以进行快速全面的系统测试,突出了其在各个领域中的实用性。
图6 虚拟仿真系统监控的故障状态
本文提供对处理器全部引脚的模拟及故障注入,通过硬件方式实现对被测系统进行最低程度的干涉,以加速测评系统容错机制;通过观测和分析系统对所注入故障的反应,从而提供可靠的数据,保证系统容错机制。
1.4 超实时仿真系统设计
超实时仿真系统软件的功能基于C++语言开发,界面通过MFC添加控件实现,各个控件之间以及虚拟目标机和其他开发工具之间的通信通过封装好的虚拟总线完成。超实时仿真系统内部逻辑采用固定增量推进法推进仿真时间,由系统定时器控制仿真时间推进;仿真时间的推进可以加快系统运行速度,从而达到超实时仿真的目的[14],
经过实测,超实时仿真系统的仿真速率可以达到20倍以上的超实时仿真测试要求。例如,以PowerPC处理器为例,设处理器运行性能为MMIPS(百万条指令/秒),PowerPC处理器主频是NMHz,则处于该处理器中的仿真倍数N的计算公式为P=M/N,可以使整个仿真目标系统在执行过程中,达到20倍以上的超实时仿真测试要求。在虚拟仿真系统中,可以对相关处理器进行性能监控,不仅可以监视出优化后的性能指标,还可以实时显示出特定性能下的超实时倍数;PowerPC处理器实际运行性能监控如图7所示,在主频设置为10 MHz的情况下,其性能指数可达到400 MIPS,根据超实时仿真倍数计算方法可知,此时超实时速率可达到基于硬件时钟的40倍。
图7 PowerPC处理器性能监控
在具体工作任务中,多个仿真实体之间需要进行协同仿真,即对多个仿真对象之间进行时序同步。在其过程中,为了加快仿真速度,多个实体之间采用并行运行的方式实现相互间通过封装好的数字软总线进行指令收发与数据传输。与此同时,为了验证开发工具输出数据及超实时运行速率的准确性,超实时仿真工具还可以通过JTAG连接硬件设备嵌入式目标机和仿真测试设备,从而与硬件板卡直接通信,得出真实的实验数据。不仅如此虚拟仿真系统还可以直接通过虚拟总线连接到服务器与硬件设备,更好地增加了虚拟工具与物理设备的联动性。其整体结构如图8所示。
图8 超实时仿真子系统示意图
1.5 分布式数字软总线标准化
虚拟仿真系统中设计的通信中间件协议,是基于分布式数据通讯总线协议的实时分布式网络中间件而设计的,以实时数据分布式服务作为联合试验的基础通信设施,进行对象管理和时间管理等功能;能够实现大型异构仿真系统的灵活集成、配置、部署及运行;底层采用发布/订阅方式通信总线,提供实时、可靠、稳定、高效的数据通信[15]。
由于不同项目所使用的处理器以及硬件设备不同,从而需要依据特定需求设计出虚拟仿真系统与外部设备模型之间的通信协议,即模拟SPI、RS422、1553b、AD等通信设备的硬件板卡,实现数字软总线标准化。比如仿真AD/DA的通信机制时,首先实现AD和DA寄存器以及相关控制寄存器的逻辑功能;然后进行AD转换,把接收到动力学模型中的模拟量数据转换成数字量并存储到对应的AD寄存器中;最后完成对DA转换的操作,即把软件要发送的数字量转换成模拟量,通过数字软总线定义的接口发送给动力学模型,最终完成对AD/DA通信过程的数字仿真;在具体实验中对AD采集寄存器读取的数据以及计算出的采样结果如表1所示,其中计算公式为D=A/(10/4096)+ 0×800,D是输出结果,即转化后的数字量,A是采样值,即模拟量。
表1 具体寄存器模拟信号采集对照表
在进行分布式虚拟总线标准化时,模拟的各个通信设备原理类似,下面以1553b通信板卡进行数字化处理为例。1553b系统采用模块化设计,主要仿真模拟1553b通信板卡芯片功能,包括芯片上的寄存器,内存空间,中断等[16]。系统由一个BC终端、2个RT终端和一个BM终端构成,提供所需要的总线和终端模块。首先模拟出芯片在BC模式和RT模式的寄存器和内存空间,而后根据芯片手册实现通信板卡芯片中所有寄存器的功能,最后在通过相关通信协议实现对所使用寄存器和内存RAM区域的读写操作、各个节点之间的数据收发,以及消息的解析和逻辑流程的模拟仿真,中断模拟仿真等,对应的总体结构如图9所示。当用户使用本文提出的虚拟仿真系统时,必须遵循对应的通信协议,从而大大提升了用户的使用效率。
图9 1553B物理总线拓扑关系逻辑图
1.6 内置调试器及在线调试技术
内置调试器为嵌入式软件在虚拟开发过程提供调试环境,支持多种调试手段对代码问题进行快速定位,虚拟目标机调试器的设计过程如下:
1)对ELF、COFF、HEX等格式的固件可执行文件的调试信息(一般为Stabs,DWARF2/3的符号)进行解析,提取出变量分配地址、函数分配代码段地址,函数对应的源码的路径及目标码对应源码的行数信息。
2)解释二进制目标码。按照CPU指令的存储格式解析二进制目标码到汇编伪代码。
3)在调试界面添加画布,把汇编指令和源码打印到画布中。用户可根据自己需要和目标系统执行情况查看各种调试信息。
基于调试器的基本功能,实现对目标板控制功能的仿真,进一步完成在源码和目标码上设置断点,通过在调试环境中添加时间判断,根据不同的事件调用不同的接口函数的方式,实现各种控制功能,如:断点、单步执行、进函数、出函数、执行过函数、复位、停止等基本调试控制,并支持在任何时刻暂停程序[17];相关功能以及在线调试过程中操作的寄存器对应的地址和数据如图10所示。
2 基于虚拟仿真系统的应用
在搭建好虚拟仿真系统的开发环境后,编写用于模拟硬件功能的外设模型,通过图形化编程的方法对整个系统进行数字化仿真;而后由超实时仿真工具发出指令,协同控制虚拟目标机向动力学模型收发数据,对仿真结果进行数据监视、错误排查以及超实时加速仿真等功能。
2.1 虚拟目标机的场景应用
作为虚拟仿真系统的重要组成部分,以虚拟目标机为载体,首先编写处理器与片上外设模型,模拟动力学模型中涉及的各种单机设备寄存器通道、通用处理器模块、存储器、AD/DA采集、二次电源灯等功能。各个设备模型之间通过节点连接建立联系,其中虚拟内核用于加载主处理器的DLL文件,并向外围设备发送指令,而后外围设备再通过虚拟总线控制ROM、RAM等内存空间进行读写操作,以及串口输出、模数转换、LED等控件的功能实现;还可以通过中断触发控制动力学模型包含的各个单机设备所处的状态,最终把实验结果通过串口打印输出,也可以通过堆栈区监控数据。
2.2 虚拟仿真系统的应用场景分析
虚拟仿真系统的超实时仿真子系统采用了嵌入式系统调试技术、HIL(硬件在环)半实物仿真技术、基于模型开发技术、系统测试与验证技术及分布式数据总线技术,可广泛应用于高安全性、高可靠性系统研制的各个阶段及各种开发模式之中;不仅支持传统的模式开发,还支持迭代开发。该系统适用于各研制阶段的开发、仿真与验证;下面将对两种应用场景展开介绍。
在应用场景一中,将虚拟目标机与真实物理外设进行连接,外接如1553B、AD/DA、CAN等通信板卡实物,采用HIL硬件在环仿真技术对复杂设备控制器的开发与测试过程进行全数字化模拟,然后通过真实通信板卡和仿真工具输出精准数据给HIL硬件在环仿真与测试系统,最后把解析出的测试序列回传给虚拟目标机之中,由此得出的数据和时序可以用于后续的全数字化虚拟仿真系统中测试验证;采用这种模式可实现对虚拟目标系统的硬件在环仿真与验证,适合于在系统研制初期对系统设计方案进行试验与评估,以及系统研制中期的实验数据验证与调试。虚拟仿真系统的应用场景一的系统结构如图11所示。
图11 场景一系统结构图
在应用场景二中,由虚拟仿真系统中模拟的虚拟外设下发指令给被控对象模型,待被控对象接收到命令后,再输出数据给图形化界面测试系统,用于数据记录与分析;而后,经过实测的序列以激励的形式回读给虚拟目标机之中,完成虚拟仿真系统与外部系统的闭环联合调试;其中所有的功能组件由封装的数字软总线进行交互与调度,最终实现基于虚拟仿真系统的全数字化仿真验证,适合于在系统研制后期对系统得出的实验结果进行分析与验证,以及在系统交付后的维护与调优。虚拟仿真系统的应用场景二的系统结构如图12所示。
图12 场景二系统结构图
2.3 基于虚拟仿真系统的项目应用
本文设计的虚拟仿真系统适用于很多领域,以在航天领域的建设为例,被用于面向卫星任务地面操控系统的联调联试与任务仿真训练,配合总体地面单位完成卫星发射任务,以及在各分系统之间的集成与测试、阵地部署,与外部系统集成联试等演练任务中起到了重要的作用。
虚拟仿真系统对卫星的具体应用方面,首先对星载计算机做数字化处理,搭建卫星的虚拟化运行环境,然后模拟处理器模块、内存空间、定时器、中断、IO接口等硬件设备以及挂载的单机设备[18],最后在搭建好星载设备运行所需要的数字化仿真环境后,加载超实时仿真系统,使用固定增量推进法快速推动星上时间与动力学模型时间,使得轨道动力学的推进步长加快达到快速推进目的;待系统推进到设定的时间后,同时更新星上系统钟、动力学模型系统钟、轨道信息、姿态信息等到最新状态,从而实现虚拟卫星的快速连续运行,达到几十倍于物理测试环境下的快速测试。做到提前测试卫星姿态与轨道的运行状态,以及对卫星的发射、轨控等策略的运用、分析和预案进行有效性与合理性的保障,降低了任务的风险,有效保证了任务的圆满成功。
2.4 虚拟仿真系统在虚实结合中的验证
虚实结合技术是一种将实物设备与数字模型进行联合试验的系统及方法,以验证数字模型的正确性;常应用于武器装备的性能试验、故障排查等方面[19]。
本文通过虚实结合技术将虚拟仿真系统中模拟的处理器和周边设备的性能指标、与动力学模型交互的数据、通过总线进行传输的数据以及在超实时仿真倍数下进行的快速仿真结果进行准确性验证。进行数据验证时,把超实时仿真软件的仿真速率调整至一倍速,运行测试程序,再把测试程序运行在物理设备上,通过在某个进程中设置相同的断点,监控两种开发环境中读取到的寄存器和内存的值,比较两者数据可以得出虚拟仿真系统中的仿真结果与真实实物中得出实验结果一致,监控的结果如表2所示。
表2 虚拟仿真系统与真实目标机实验结果对比
为了确保数据验证的可靠性,首先要保证虚拟设备模拟器与真实设备协同时的实时性;在与真实时间基准相同的环境下进行单倍数指令采集,尤其是仿真外部激励行为,通过虚拟CPU执行cycle数的方式确保虚拟设备模拟器与真实设备协同时的实时性[20]。比如外部GPS秒脉冲信号仿真、周期定时、外部中断触发等,在结合宿主机本身资源的情况下,诸如bios时钟进行辅助精确定时等。
在通过虚拟总线进行数据传输时,考虑到设计的通用化,将主要体现在对于各种类型通信板卡的统型设计,其核心为虚拟目标机与板卡通过集成API接口调用的通用化设计,结合可配置计算机预留的多种扩展接口,根据实际资源情况进行灵活搭配,实现虚实结合完成系统验证。
其中模拟1553B总线的标准内部处理逻辑时,通过Alta 1553硬件驱动板提供的二次开发API接口实现与真实1553B节点的数据传输,从而实现虚实结合的半实物仿真环境的部署,核心是通过调用1553板卡驱动程序,完成虚拟环境和真实设备之间的桥接。
3 虚拟仿真系统优势与性能优化
虚拟仿真系统的运行环境在X86主机下,可以同时仿真出搭载不同处理器的设备;其每秒仿真的指令条数比真实物理环境下快很多倍,也可以使超实时倍数设置成等比模式,达到与实际硬件平台相同节拍速度。根据第二章给出的论证,在保证数据真实性的前提下,本文所设计虚拟仿真系统的超实时倍数可以达到实时运行速率的20倍以上。
3.1 平台优势分析
目前,大部分虚拟仿真系统在仿制处理器指令时会选择解释执行模式,即实时运行;它的执行速率较慢,执行流程分为取址、译码、执行三部分[21]。
而本次虚拟仿真系统选择的是动态编译模式,即超实时运行,它在虚拟仿真系统中引入编译器技术中的动态二进制编译机制;其运行速率较快,可以大幅度提高仿真速度[22]。动态编译执行流程分为6步:1)根据PC地址从内存中取出一组目标指令;2)将该组目标指令翻译成中间语言IR指令;3)使用底层虚拟机(LLVM)编译和优化技术生成X86本地代码;4)把编译过的指令块放入Cache中;5)执行该指令块代码,调用处理器运行函数;6)从Cache中查找下一个指令块,若找到则继续执行,没有则继续从内存中取出一组目标指令,重复上述操作[23]。执行流程如图13所示。
图13 动态编译执行流程
3.2 平台系统性能优化
该平台可以对接入分布式总线的仿真实体引入同步命令及应答机制,实现仿真计算机与模型之间的运行时序与真实目标机中运行一致,使误差小于一个节拍。在保证误差范围内,不仅可以通过改善硬件设备环境的性能,提升虚拟仿真系统的超实时倍数,还可以通过增加代码的鲁棒性等方式,具体方法介绍如下:
1)运用动态二进制翻译技术:以目标平台的二进制码为输入,通过调用LLVM的API接口,把目标平台二进制码翻译成LLVM中间代码。整个翻译过程中将中间代码拆分成Tag和Translate两个部分并进行两遍扫描。第一遍是预先分析代码的性质,并把每一条目标代码指令的信息保存到一个Tag表中;第二遍扫描的时候对代码进行翻译[23]。这种扫描过程为真正的翻译提供了必要的信息,简化了系统的复杂度,从而把一个复杂的系统拆分为两个相对简单的系统,一定程度上降低了开发难度和风险;
2)快速内存访问:内存访问的快慢会影响整个系统的速度;对内存的操作可以通过使用LLVM中间语言实现,实现方法类似于对数组的操作;首先通过指针计算语句计算一段地址的数据在模拟内存中的偏移量,然后计算读写地址在模拟内存中的偏移量,通过load/store指令读写,从而在一定程度上简化了内存操作的过程。该模式下的运行时间比外调C函数库的方式实现内存访问速度提高了数倍以上;
3)在多个线程访问同一个全局资源时使用原子操作,能够确保所有线程不会在同一时间内访问相同的资源;也就确保了在同一时刻只有唯一的线程对这个资源进行访问[24]。由于原子操作更加接近底层,因此相比于以互斥对象对共享资源的访问的保护,具有更高的效率;
4)在开发虚拟仿真系统和外设模型时,尽量使用位运算代替乘法和除法运算;对于存取函数以及其它函数体比较短或者性能关键的函数,尽可能多的使用内联函数,使目标代码更加高效;
通过上述设计方案及改进方法,不仅完善了虚拟仿真系统的实用性、标准性、真实性及高效率地提升仿真结果,还提升了虚拟仿真系统测试时的超实时倍数,极大提高了对数字装备的准确结果输出及快速测试,这也是本文虚拟仿真系统的一个重要功能。
4 结束语
本文以虚拟仿真系统的开发过程为研究对象,基于数字孪生技术添加了数字软总线、在线调试功能以及故障模拟与注入等功能,为嵌入式软件开发提供一个全生命周期的纯数字系统开发和验证平台,适用于PowerPC等通用处理器的系统之中,可以应用于航空航天领域等诸多领域之中。不同于目前常用的全物理环境和半物理仿真环境,基于该平台可以很好地解决现有嵌入式软件开发及验证过程中存在的问题,如各种军事装备在投入使用前进行测试、演习与故障排除时,提前判别流程是否合理;出差错时,如何去补救;如何寻找合适的解决方案以及备用方案等问题。不仅如此,本文还引入了超实时仿真系统的概念,以及提升超时倍数的方法,用于减少对目标计算机测试环节的依赖,增大测试效率,从而大大缩短开发测试的周期,可以应用到软件研制的各个阶段,实现软硬件的平行开发,具有硬件系统不具备的诸多优势,是硬件开发、测试环节的有效补充。