计算机应用   2017, Vol. 37 Issue (6): 1808-1813  DOI: 10.11772/j.issn.1001-9081.2017.06.1808
0

引用本文 

王运盛, 雷航. 综合模块化航空电子分区配置启动机制[J]. 计算机应用, 2017, 37(6): 1808-1813.DOI: 10.11772/j.issn.1001-9081.2017.06.1808.
WANG Yunsheng, LEI Hang. Partition configuration and initialization in integrated modular avionics[J]. Journal of Computer Applications, 2017, 37(6): 1808-1813. DOI: 10.11772/j.issn.1001-9081.2017.06.1808.

基金项目

国家科学技术部国际科技合作专项(2015DFA70150)

通信作者

王运盛,actet@163.com

作者简介

王运盛(1979—),男,新疆和硕人,高级工程师,博士研究生,CCF会员,主要研究方向:综合模块化航空电子、软件架构及可靠性设计;
雷航(1960—),男,四川自贡人,教授,博士,主要研究方向:嵌入式系统、软件可靠性

文章历史

收稿日期:2016-10-17
修回日期:2016-12-30
综合模块化航空电子分区配置启动机制
王运盛, 雷航    
电子科技大学 信息与软件工程学院, 成都 611731
摘要: 为了解决综合模块化航空电子(IMA)系统资源分配问题并明确分区启动时间,以VxWorks 653分区操作系统为研究实例,针对分区配置和启动过程采用统一建模语言(UML)建立了包括类图和时序图在内的模型。该模型深入地分析了分区配置和启动机制,说明了分区配置在资源分配以及操作系统编译和分区初始化过程中的作用,阐述了分区"冷启动"和"热启动"模式的差别,并建立了实验平台测试两种启动模式的启动时间,测试结果显示分区冷启动和热启动的时间分别为148 ms和8.5 ms,进而提出了这两种分区启动模式的应用场景以及分区配置和应用程序软件启动初始化设计的策略。例如在建立分区主时间框架和健康监控策略过程中应确定分区启动的方式并充分考虑分区启动时间,这些设计策略也适用于其他高安全性应用环境中分区系统的设计。
关键词: 综合模块化航空电子    分区    驻留应用    统一建模语言    资源分配    
Partition configuration and initialization in integrated modular avionics
WANG Yunsheng, LEI Hang     
School of Information and Software Engineering, University of Electronic Science and Technology of China, Chengdu Sichuan 611731, China
Abstract: Regarding to the resource allocation and partition starting time in the Integrated Modular Avionics (IMA), a Unified Modeling Language (UML) model of partition configuration and initialization was proposed based on the case study of VxWorks 653 partition operating system. The proposed model including classes diagram and initial sequence diagram for partition, was established to facilitate the analysis of the mechanism of partition configuration and starting/initialization. The contents and function of partition configuration in the processes of resources allocation, operating system compilation and partition initialization, were discussed in detail, as well as the differences between "cold start" and "warm start" mode. A platform was set up for testing the startup times of the two kinds of startup modes, and the test results showed that the time of cold start was 148 ms, and warm start time was 8.5 ms. Furthermore, the applicable scenarios for cold start and warm start mode were discussed. The policies of partition configuration and application software initialization were proposed based on the starting time. The mode of partition start and time of partition initialization should be fully considered when establishing the partition main time frame and identifying the health management policy. The designed policies can be applicable to other partition system design in high security applications.
Key words: Integrated Modular Avionics (IMA)    partition    hosted application    Unified Modeling Language(UML)    resources allocation    
0 引言

在综合模块化航空电子(Integrated Modular Avionics, IMA)系统中,各种航电系统功能通过运行在公共计算资源(Common Computing Resources, CCR)上的驻留应用(Hosted Applications, HA)来实现[1]。IMA体系架构改变了以往以传感器为中心的设计方式,减少了设备和模块种类,提高了系统的可靠性和稳定性,同时便于升级维护,降低了航电系统全生命周期的成本,已经在现代航空电子系统中得到了广泛的应用[2]。目前主流的民用飞机,包括波音B787、空客A380以及我国正在研制的C919大型客机,都采用了IMA架构[3]

分区是IMA软件架构的主要组成部分,也是IMA平台分配资源的基本单元,各种功能应用所需要的计算资源、存储资源、网络资源都通过分区的配置文件进行预先的设计和定义,航电系统功能及驻留应用的正常运行离不开正确的分区配置和启动过程。深入地开展分区的配置启动机制研究,建立相应的模型并进行性能分析和评估,对于驻留应用的设计、IMA平台资源分配以及航电系统功能设计都是很有必要的。目前,国内外关于IMA和分区相关的研究工作集中在IMA架构下分区的可调度性、架构设计和安全性方面,缺少对分区配置和启动机制的分析和启动时间的测试。文献[4]分析分区系统时间资源配置和两级调度机制下的可调度性,根据负载请求与平台资源提供能力的供需约束关系导出了系统可调度的判定依据,以保证实时任务能够在预定的时间内完成计算,并没有设计分区启动时间及资源配置内容;文献[5]将分区配置作为系统重构的重要手段,但是没有系统地分析分区资源的再分配过程以及启动时间问题;文献[6]指出IMA是一种高度可配置系统,并提出IMA的设计保证等级分配的几个原则,为IMA的安全性设计提供了参考,但没有涉及具体配置和启动机制;文献[7]描述了对于IMA平台的失效模式和影响分析,指出了初始化过程中需要对资源进行重新配置,但没有具体展开分析;文献[8]将配置信息分成两类分别进行管理,即必需的配置和可选的配置,其中必需的配置信息包括内核操作系统配置、应用配置、中间件配置、分区配置、模块配置,可选的配置主要是共享内存和共享IO配置,也没有涉及到配置文件在初始化过程中作用;文献[9]开发了一种改进型的分区配置工具,可以配置分区的时间和空间资源以及健康监控信息,重点在于配置工具研究;文献[10]建立了系统配置信息的核心元素(包括模块、分区、内存、进程、通信等)到嵌入式实时系统建模分析(Modeling and Analysis of Real Time and Embedded system, MARTE)模型元素的语义映射规则,设计了基于模型驱动架构的系统配置信息模型转换的方法,并给出了一种对转换得到的系统配置信息进行形式化验证的框架,其中比较系统地介绍了分区配置组成,但是也没有分析启动过程和配置内容,没有实际测试数据。

1 IMA架构和分区软件架构

处理器技术和软件技术的迅速发展催生了分区隔离技术,即将多个应用程序软件集成到一个处理器并且避免非预期相互干扰。在这种技术背景下,航空电子系统从独立设备交连的联合式系统架构,发展到了资源共用的IMA系统架构。在联合式航空电子系统架构中,每个功能都由独立的设备完成,每个设备也有自己独立的传感器和作动器,它们之间通过带宽有限点对点总线(例如ARINC 429或者MIL-STD-1553b)进行数据交换,如图 1(a)所示。在IMA架构下, 多个标准化通用处理模块(General Processing Module, GPM)硬件通过公共高速网络相连传感器和作动器以及与综合化的多功能显示(Multi-Function Display, MFD)系统,软件采用开放接口,一方面通过分区隔离避免功能应用之间的相互干扰,另一方面,通过层次化的设计使得应用程序软件可以通过标准的应用程序接口来获得底层软硬件提供的服务,以往独立设备实现的功能将通过IMA软硬件平台、公共高速网络以及分区驻留应用软件共同来实现,如图 1(b)所示。

图 1 联合式航空电子架构与IMA架构对比 Figure 1 Comparison of federal avionics architecture and IMA architecture

IMA架构得到了相关供应商和飞机制造厂商的广泛认可与支持,这与定义良好的行业标准密不可分。相关的行业标准主要有定义了IMA架构并给出IMA设计指南的ARINC 651[10]标准以及规定了分区软件架构和接口的ARINC 653中标准[11]。IMA中的软件架构如图 2所示。

图 2 IMA中的软件架构 Figure 2 Software architecture in IMA

其中,驻留应用分区为驻留应用程序提供所需要的各种资源和分区隔离的运行环境,这些应用程序都在分区分配的时间和空间环境中运行,只能够调用应用程序执行接口(APplication EXecution interface, APEX)访问系统和硬件资源;内核操作系统实现这些接口功能并为分区提供基础服务,例如分区创建和管理的软件接口;特殊系统功能提供针对特定硬件接口,例如模块特有硬件的设备驱动、软件加载、调试接口及自检功能等;系统分区是在GPM模块实现IMA系统管理的相关功能,比较典型的系统分区应用是模块级的健康管理,系统分区仍然受到时间和空间隔离的限制。

2 分区配置

在IMA中,驻留应用程序完成功能所需的处理资源、存储资源、网络资源都由IMA平台来提供,IMA平台和GPM模块自身也需要记录和描述资源规划来描述系统构型,于是配置文件被用来描述IMA平台、GPM模块、分区、驻留应用以及资源分配相关的信息。本章以VxWorks 653分区操作系统作为研究对象,采用统一建模语言(Unified Modeling Language, UML)来分析和说明分区的配置和启动机制。

2.1 分区配置内容

分区的配置信息包括与处理资源相关的运行周期、占用处理器的持续时间,与存储资源相关的内存需求、FLASH需求,与网络资源相关的通信端口、类型、源、目的,也包括分区自身的标识、驻留应用目标代码标识、应用程序入口以及对应的健康监控属性等。分区配置也离不开GPM模块的类型、处理器、存储容量、外部接口信息等信息,只有这些信息都清楚了,才能明确表示特定应用程序驻留在哪个分区,这个分区又加载到了哪个特定的GPM模块上。

这些与分区配置相关的信息具有一定的逻辑结构和层次关系。通常情况下,一个GPM模块会运行多个分区,资源分配通常也以GPM模块为单位,来明确各个分区所需要的时间调度和存储空间,分区对外的通信端口也需要GPM建立与外部通信连接。此外,分区配置信息还可以被实例化来描述多个不同的分区配置。因此,这些分区相关的配置信息之间具有聚合、关联、泛化等关系,适合用UML中的类图来描述。

典型的ARINC 653分区架构中分区配置信息如图 3所示。其中,分区标识定义了描述分区基本信息,包括分区ID、分区名称、安全等级、分区类型和应用程序入口,该信息还聚合了分区的通信端口信息。以下分别说明分区所需的处理资源、存储资源、网络资源以及健康监控在IMA分区配置信息中的实现。分区配置信息与分区资源分配之间的对应关系如下:

图 3 IMA中的分区配置信息 Figure 3 Configuration information for partition in IMA

1) 处理资源分配:模块调度表包含了一个GPM模块上分区调度运行的主时间框架,该时间框架聚合了多个分区调度的配置信息,分区调度配置中包括分区的标识ID和名称以及分区对应的周期和占用处理器的持续时间,在GPM初始化过程中会根据主时间框架的信息为各个分区分配处理器资源。

2) 存储资源分配:分区存储空间配置包括分区的ID和名称以及分区存储空间需求信息,例如存储空间类型、大小、物理地址、访问类型以及存储区域的名称,建立特定的分区与需要的存储空间对应关系,在初始化时按照配置信息分配分区所需的存储空间。

3) 网络资源分配:网络资源分配通过模块级的通信连接表和分区的通信端口配置来实现,通信连接表定义通信通道标识和名称,并且明确了通道的源和目的,分区端口包括了端口名称、最大消息长度、通信方向和通道标识,从而将分区为驻留应用提供的端口操作与模块建立的底层通信通道关联,在初始化时按照配置信息创建通信通道和端口。

4) 健康监控:健康监控的配置信息包括系统健康监控表、模块健康监控表、分区健康监控表以及系统状态入口等。三个健康监控表分别从不同的层次定义了IMA系统、GPM模块和分区的健康监控的策略、监控事件类型和应对措施,三个表之间通过系统状态入口进行关联和匹配,在初始化时按照配置信息来实现健康监控机制。此外,内核操作系统还有自己的配置文件,包括操作系统功能模块的配置以及宏定义信息;板级支持包(Board Support Package, BSP)也有配置信息,其中包括BSP和操作系统编译所需的处理器和板卡硬件信息。这两部分配置信息依赖于ARINC 653分区操作系统的具体实现。

2.2 分区配置形式

VxWorks 653是一款符合ARINC 653规范要求的分区实时嵌入式操作系统,具有实时性好、可靠性高、支持多任务、可裁剪等特点,广泛应用于航空、航天、医疗设备等要求高安全性和高实时性的领域。在VxWorks 653工程中,配置文件采用扩展标记语言(eXtended Marking Language, XML)格式来定义。在编译时,不同层次的配置文件会进行综合,最终生成面向GPM目标板卡的模块配置文件,其中包括标准的ARINC 653配置信息以及非ARINC 653的配置信息,例如模块间通信机制、文件系统、数据加载、平台配置文件和项目配置数据等,配置信息的综合过程如图 4所示。

图 4 VxWorks 653的配置信息综合过程 Figure 4 Integrated process for configuration information in VxWorks 653

在一个VxWorks 653项目工程文件体系中,XML格式的配置文件包括分区应用、分区操作系统、内核操作系统、平台集成(IMA和GPM模块)等配置文件[11]。分区应用配置文件主要包括应用程序的内存策略、与内核操作系统对应的端口配置;分区操作系统配置文件主要包括分区内存策略、共享库策略、共享数据域策略、系统调用使能以及分区对应的应用程序描述等(如果是虚分区则还要对虚端口进行配置);内核操作系统配置文件主要包括系统时钟、内存策略、核心/分区操作系统虚拟地址和物理地址、I/O策略、端口策略、payload策略等;平台集成XML配置文件则主要是对内核操作系统、分区操作系统和应用程序等XML配置进行引用和说明,并对系统健康监控策略进行配置[12]。这些XML配置文件是有层级关系的,低层的XML文件被用来满足高层XML文件在某一信息区域的要求。

这些XML格式的配置文件都有对应的模板,例如工程整体模块配置的模板为module.xsd,内核操作系统配置的模板为coreOS.xsd等,其内容主体是一系列按照层次来组织的配置信息元素。配置信息元素内部不仅存放本元素的属性,还包含下一级的子信息元素,而子信息元素又可以继续往下延伸,例如:

<Module Name="S_Part">

  <Core OS>

    <CoreOSDescription

      KernelName="coreOS"

      BSPName="wrSbc7457"

   />

  </CoreOS >

</Module>

2.3 分区编译过程

VxWorks 653集成开发环境集成了编译工具集(GNU Compiler Collection, GCC),支持多种程序语言的编译,例如C、C++、Ada等。集成开发环境采用多级Makefile体系使用GCC提供的编译器对分区操作系统的各个组件进行编译。在形式上则可以为整个工程制作一个顶层Makefile来依次调用各个组件的次级Makefile,VxWorks 653集成开发环境提供的图形化编译工具实际上是调用MYM(WIND_BASE)\host\x86-win32\bin\make.exe进行逐级调用各个组件的makefile进行编译,最后再将它们集成起来。。

VxWorks 653项目工程文件由内核操作系统组件、分区操作系统组件、驻留应用程序组件以及公共的函数库组成,对应于配置文件分别是cos.xml、pos.xml、app.xml,最后由module.xml文件将这些组件关联起来。对于一个VxWorks 653分区工程来说,其代码编译大致上可以分为应用程序编译、板级支持包BSP编译、XML配置文件编译以及目标代码(含内核操作系统和分区操作系统目标代码)链接和综合等过程,在集成和链接过程中会使用到XML编译综合产生的配置结果,其编译的过程如图 5所示。其他ARINC 653操作系统的编译过程也与之类似。

图 5 VxWorks 653编译过程 Figure 5 Compiling process of VxWorks 653
3 分区启动过程

分区以及驻留功能的启动过程也与这些配置文件及其编译链接的结果紧密相关。在GPM模块上电后,处理器首先运行驻留在板卡只读存储器(Read-Only Memory, ROM)中的启动引导程序BootRom,该程序初始化基本硬件,启动代码加载功能,将ROM中存储的可执行目标代码搬移到随机存取存储器(Random Access Memory, RAM)中来运行,进而启动内核操作系统[13]。随后,内核操作系统将按照一定的协议读取编译生成的目标文件,其中包括分区操作系统和应用程序软件启动所需要的所有配置信息,进而分配系统资源、创建分区、启动分区调度、启动健康监控功能,同时启动内核操作系统提供的各种服务,例如中断管理、分区通信数据转发、管理I/O接口、提供必要的系统调用接口等。随后,内核操作系统根据配置信息创建分区调度表并挂接定时器中断,按照主时间框架进行分区调度。

图 6给出了某GPM上运行两个分区的启动初始化过程,该图采用UML的序列图来描述BootRom、内核操作系统、分区操作系统和驻留应用程序在初始化和运行过程中的关系,图中横向为各个GPM模块中的各个软件模块,纵向是运行先后顺序的示意。分区1和分区2具有相同的周期T,分区1的运行持续时间是D1,分区2的运行持续时间是D2。在内核操作系统完成初始化并启动分区调度服务之后的T时间内,首先被调度得到开始执行的应用分区1开始进行分区初始化工作,主要功能包括确定分区内存和堆栈地址大小、分区启动类型(冷启动或者热启动)、系统时钟、内存管理单元(Memory Management Unit, MMU)页面大小、分区内的分区配置记录、共享数据区域、分区符号表等,之后分区根据初始化类型进行分区操作系统的初始化,创建分区内的操作系统调度和服务线程,在启动分区内的多任务模式之后,运行应用程序初始化,如果这个过程没有在第一个分区运行的持续时间内完成,那将在分区1再次得到处理器资源运行时,继续进行应用程序初始化的工作,初始化完成后,分区和应用程序都进入正常状态。在分区1结束运行后,按照模块的分区调度表,分区2得到处理器的控制权开始运行,完成分区2的分区操作系统初始化和应用程序初始化。在主时间框架的第二个周期T2开始时,分区1和分区2在它们运行持续时间内开始运行正常的驻留应用功能。

图 6 IMA中分区启动过程 Figure 6 Starting process of partition in IMA

分区有两种启动模式,即冷启动和热启动。它们的共同点在于,都具有让分区重新启动运行的功能,重新初始化驻留应用程序,在冷启动和热启动过程正在进行时,优先级抢占被禁止,所以线程调度功能也没有激活;在运行过程中都可以通过调用函数接口来激活冷启动或者热启动。分区的冷启动和热启动过程是有区别的,最大的区别在于冷启动则需要重新初始化整个分区的存储空间,包括从ROM、Flash空间或者RAM中拷贝分区上下文区域到RAM中,重新加载所有分区的代码,重新初始化永久数据变量(例如分区使用到的GPM模块系统时钟、MMU页等全局变量等),热启动则不需要。

4 分区启动时间测试

支持VxWorks 653的实验平台被用来进行分区启动时间的测试。该实验平台采用PPC7447A/7448处理器,处理器主频1 GHz,这与目前驻留的GPM性能基本一致,运行VxWorks 653具有ARINC 653中规定的基本服务,并通过APEX接口文应用程序提供接口,集成开发编译环境采用Tornado_AE653_1.8.9.1。为了能够更加真实地反映实际运行过程中的分区启动时间,参考实际的IMA系统设计,模块上配置了一个分区,分区的周期为20 ms,持续时间为20 ms,实验过程中的分区驻留应用规模和功能与实际应用相似。

在该开发平台上开展分区启动时间测试,需要使用APEX函数中的设置分区模式指令以及可移植操作系统接口(Portable Operating System Interface, POSIX)函数中的读取系统时间函数。在分区内部的程序不同位置插入分区启动语句SET_PARTITION_MODE(WARM_START),或者是SET_PARTITION_MODE(COLD_START),这两个函数和其中的用到的宏定义都是APEX接口标准定义,需要在头文件中包括APEX定义的函数库[14]。在调用设置分区进入冷启动模式之前还需要记录当前的系统时钟t1,在分区启动后调用应用程序入口的第一时间纪录当前的系统时间t2。通过两个时间的差值(t2-t1)来确定系统重启所需要的绝对时间。绝对时间要转化成分区执行的持续时间才能推算出分区启动实际花费的时间σt。但在实际测试过程中,将分区立即设置为冷启动或者热启动模式会导致程序立刻终止执行,无法输出时间信息。为此在设置冷启动或者热启动之前还需要增加一段延时来确保时间信息输出完成,这段时间记为t3。则计算公式为:

$ {\sigma _t} = ({t_1} - {t_2} - {t_3}) \times D{\rm{/}}T $

这个分区启动时间包括了分区初始化时间,而不包括分区内的应用程序初始化时间。主要测试步骤和参考程序如下。

1) 定义获取系统时间函数_GetCurrentTime( ):

extern UINT8 initHeapMgr(UINT32 sz);

extern "C" void InitializeConstructors (int sysStartupMode);

unsigned long _GetCurrentTime( )

{

 SYSTEM_TIME_TYPE SYSTEM_TIME;

 RETURN_CODE_TYPE RETURN_CODE;

                //get the ticks

 GET_TIME(&SYSTEM_TIME, &RETURN_CODE);

 unsigned long currentTime;

 currentTime=SYSTEM_TIME/1 000 000;

 return currentTime;

}

其中GET_TIME(&SYSTEM_TIME, &RETURN_CODE)获得的系统时间为纳秒,_GetCurrentTime( )返回的时间为毫秒。

2) 在应用程序软件重启分区前记录分区软件启动触发时间T1

void main_task(void)

{

 RETURN_CODE_TYPE retCode;

 printf("DL Interface Main_Task RUNING..................\n"); RETURN_CODE_TYPE RETURN_CODE;

 printf("Enter Main Task Time=%d\n", _GetCurrentTime( ));

           /*to make sure the printf finished*/

 taskDealay(1 000);

               /*partition cold start*/

 SET_PARTITION_MODE(COLD_START, & retCode);

               /*partition warm start*/

  /*SET_PARTITION_MODE(COLD_START, &retCode); */

 …

}

3) 在应用程序软件入口处记录分区软件启动完成时间T2

extern "C" void APPInit( )

{

 RETURN_CODE_TYPE retCode;

 PARTITION_STATUS_TYPE Status;

           /*Initialize C++ constructors*/

 GET_PARTITION_STATUS ( & Status, & retCode);

 printf("..Starting APP\n");

 printf("Enter App, time=%d\n", _GetCurrentTime( ));

 Init_Main_Task( );

 SET_PARTITION_MODE(NORMAL, &retCode);

}

其中taskDealay(1 000) 是为了确保输出时间的程序能够完成执行而加入的延时等待,通过高速摄像机可以测得这个延时等待,即t3的数值。测试结果显示t3为250 ms。根据上述测试方法在分区软件的开发平台及真实的装机环境下开展分区启动时间的测试,分区启动时间测试的结果如表 1所示。

表 1 分区启动时间测试结果  ms Table 1 Test results of partition starting time  ms

根据实验测试结果,模块上该分区的热启动时间约为8.5 ms,分区的冷启动时间约为148 ms。这个分区初始化的时间可以为初始化时间的分配和驻留应用程序初始化设计提供参考。

5 驻留应用程序初始化考虑

根据上述的分析和实验结果,可以进一步地明确分区的冷启动和热启动的应用场景。冷启动适用于分区创建和模块处在上电启动的情况,此时分区内的对象将被重新分配和初始化;分区的热启动用来处理分区启动之后的重新初始化应用程序的情况,此时分区的永久数据将会保留热启动之前的状态,分区代码不用重新加载,全局变量也不用重新初始化。

图 6中可以看出,分区初始化和驻留应用程序的初始化是分开进行的,通常在完成了分区初始化且分区操作系统进入多线程状态后,才会激活驻留应用程序的初始化。在设计相关的资源分配和驻留应用时,应注意以下几点考虑:

1) 分区的周期和持续运行时间设计应当考虑分区的初始化时间。内核操作系统在创建分区、完成资源分配之后,就会启动内核操作系统的分区调度机制。此时分区开始初始化,尽管驻留应用程序还未正常运行,但是分区已经按照事先定义的主时间框架被周期性地激活,分区在运行初始化和驻留应用程序时,完全不知道自己处在被不停地调度和切换的状态,如果在给定的持续时间内没有完成分区的初始化,那么在下一次被调度时,分区将会继续执行初始化程序而不会开始运行驻留应用程序,因此后续的运行周期内可能会导致驻留应用运行超时,这也会影响到分区的周期特性。为此,在进行处理资源分配和制定主时间框架时,应统筹考虑分区初始化的时间。

2) 驻留应用程序的全局变量初始化可以在分区冷启动的过程中完成。在设计过程中,可以将应用程序用到的全局变量作为静态数组或者其他静态数据来处理,这样可以使得这些全局的数据在上电初始化的冷启动状态被搬移到分区内部,而热启动时这些数据不会被覆盖和初始化,有助于保持数据的一致性;同理,需要重新初始化的变量和状态,应考虑要放在热启动的范围内与分区和驻留应用一同初始化,以免驻留应用程序由于初始化不充分而发生错误。

3) 根据应用程序特点确定驻留应用初始化的方式。如图 6所示,驻留应用的初始化有两种可选的方式,一种是驻留应用初始化在分区操作系统进入多任务模式之后进行,另一种方式是驻留应用的初始化功能也在分区操作系统没有进入多任务模式之前就进行,即作为分区操作系统初始化的一部分来完成驻留应用的初始化。两种方式的差别在于分区操作系统的调度方式,在分区操作系统初始化过程中优先级抢占是被禁止,所以线程调度功能也没有激活,可以更加确定性地来执行某项初始化任务。因此,建议将具有严格的实时性和确定性要求初始化任务放在分区操作系统进入多任务模式之前完成。

6 结语

对分区的配置和启动过程进行分析是非常必要的。通过UML对分区配置和启动过程进行建模和分析可以帮助设计人员更加深入地理解分区和驻留应用的运行过程,帮助设计人员确定冷启动和热启动的应用场合。根据相关的实验测试和数据分析,可以确定分区冷启动和热启动的所需要的时间为148 ms和8.5 ms,该值具有一定的代表性,为IMA的资源分配和主时间框架规划、全局变量定义和初始化的方式的选择提供了参考,对于提高驻留应用、IMA平台和航电系统的运行效率和可靠性具有指导意义。

参考文献
[1] 俞大磊, 解文涛, 孙靖国, 等. 综合化核心处理平台关键技术研究与实现[J]. 工业控制计算机, 2015, 28(12): 150-151. ( YU D L, XIE W T, SUN J G, et al. Research and realization of key technology for integrated core processing platform[J]. Industrial Control Computer, 2015, 28(12): 150-151. doi: 10.3969/j.issn.1001-182X.2015.12.070 )
[2] GASKA T, WATKIN C, CHEN Y. Integrated modular avionics-past, present, and future[J]. IEEE Aerospace and Electronic Systems Magazine, 2015, 30(9): 12-23. doi: 10.1109/MAES.2015.150014
[3] GE为C919提供综合模块化航电系统[J/OL]. 国际航空, 2010(10): 35. [2016-08-10]. http://www.ixueshu.com/document/2592969bcf6e768d318947a18e7f9386.html. ( GEs integrated modular avionics for C919[J/OL]. International Aviation, 2010(10):35.[2016-08-10]. http://www.ixueshu.com/document/2592969bcf6e768d318947a18e7f9386.html. )
[4] 谭龙华, 杜承烈, 雷鑫. ARINC653分区实时系统的可调度分析[J]. 航空学报, 2015, 36(11): 3698-3705. ( TAN L H, DU C L, LEI X. Schedulability analysis for ARINC 653 partitioned real-time systems[J]. Acta Aeronautica Et Astronautica Sinica, 2015, 36(11): 3698-3705. )
[5] 王震, 朱剑锋. 基于在线加载分区机制的重构方案的设计与实现[J]. 航空电子技术, 2016, 47(1): 25-30. ( WANG Z, ZHU J F. Design and implementation of a reconfiguration blueprint based on online-loaded partition mechanism[J]. Avionics Technology, 2016, 47(1): 25-30. )
[6] 安乐. 民用飞机IMA系统研制保证等级分配的研究[J]. 航空计算技术, 2016, 46(3): 119-123. ( AN L. Research on development assurance level assignment for integrated modular avionics of civil aircraft[J]. Aeronautical Computing Technique, 2016, 46(3): 119-123. )
[7] 王鹏, 赵长啸, 马赞. 综合模块化航电系统失效模式分析[J]. 电讯技术, 2013, 53(11): 1406-1411. ( WANG P, ZHAO C X, MA Z. Failure model analysis of integrated modular avionics system[J]. Telecommunication Engineering, 2013, 53(11): 1406-1411. doi: 10.3969/j.issn.1001-893x.2013.11.002 )
[8] XU W, XIONG Z Y, GONG C. A method of integrated modular avionics system configuration data management[C]//Proceedings of the 2015 IEEE/AIAA 34th Digital Avionics Systems Conference. Piscataway, NJ:IEEE, 2015:6D4-1-6D4-8.
[9] PAENG B J, HA O K, JUN Y K. Software tool for integrating configuration data of ARINC 653 operating systems[C]//Proceedings of the 2015 8th International Conference on Grid and Distributed Computing. Piscataway, NJ:IEEE, 2015:20-23.
[10] 胡军, 马金晶, 刘雪, 等. 模型驱动的安全关键系统配置信息验证方法[J]. 计算机科学与探索, 2015, 9(4): 385-402. ( HU J, MA J J, LIU X, et al. Model-driven reconfiguration information verification for safety-critical systems[J]. Journal of Frontiers of Computer Science and Technology, 2015, 9(4): 385-402. )
[11] Aeronautical Radio Inc. Design guidance for integrated modular avionics, ARINC report 651-1[R]. Annapolis, Maryland:Aeronautical Radio Inc, 1997.
[12] Wind River Inc. XML configuration explained platform safety critical:ARINC 653 XML configuration[EB/CD]. Alamida:Wind River Inc, 2007. http://link.springer.com/chapter/10.1007/978-94-017-8798-7_50/fulltext.html
[13] Wind River Inc. VxWorks 653 configuration and build guide[EB/CD]. Alamida:Wind River Inc, 2007. https://link.springer.com/chapter/10.1007/978-94-017-8798-7_50
[14] Wind River Inc. VxWorksAE BSP developers guide[EB/CD]. Alamida:Wind River Inc, 2001.
[15] Wind River Inc. VxWorks 653 programmers guide[EB/CD]. Alamida:Wind River Inc, 2007.