郑 磊, 高晓光, 张国全
(西北工业大学电子信息学院,西安 710129)
随着软件和微电子技术的高度发展,航空电子架构正由联合式计算控制单元向高度综合化的计算处理模块转变,综合模块化航空电子[1](Integrated Modular Avionics,IMA)就是其中的典型代表之一。IMA引入了鲁棒的时间和空间分区机制使各种航电功能高度综合在一起,使其在共享系统资源时具有相互独立性,在保证系统安全性的前提下减少了航电系统的重量和体积,并一定程度地增强了系统的可维护性[2]。系统复杂度的增加使得对其安全性的保障尤为重要,IMA的测试和验证活动要伴随着整个IMA的生命周期过程[3]。
IMA带来的航电新特性主要是由其航电功能的空间和时间的分区[4-5]来实现的。时间分区主要由IMA的系统级调度实现,这一机制给每个分区分配了一定的执行时间,从而使各个分区轮流得到执行。一个健壮的分区系统要满足不同关键等级的分区在同一个模块中执行时不会在空间和时间上互相影响,这样的结构使系统具有了高度的容错性。
本文提出一种时间分区测试的方法,并采用IMA分区调度模型对该方法进行分析,最后对模拟测试结果的时序特性进行总结。
IMA的测试环境主要由测试系统和待测系统组成:测试系统主要进行测试指令的发送以及测试结果的接收和分析;待测试系统接收测试系统的测试指令,完成测试动作后向测试系统返回测试结果。
在IMA的系统综合测试阶段[6],可以将待测系统看成是配置和应用的组合:配置分为测试配置和真实配置;应用分为测试应用和真实应用。根据测试的阶段和目标,IMA模块可以使用测试配置或者是部分或全部的真实配置;运行在各个分区中的应用可以是真实应用也可以是测试应用。为了测试IMA模块的时间分区特性,时间分区测试采用的是测试配置和测试应用。
时间分区测试需求就是当某一个或多个分区发生故障导致分区停止运行时,其他分区的运行状态不会受到性能或功能上的影响[7]。为了观察到发生故障时其他分区的运行状态,要使用某种方式使系统的运行状态能够显式地表现出来,测试应用可以完成这一任务。为了说明测试应用在测试过程中的行为,本文以一个具有4个分区的IMA待测平台为例进行说明,如图1所示。
图1 测试应用行为Fig.1 The behavior of test application
这里的测试应用由3个非周期的测试进程组成。当待测平台接收到由测试系统发出的测试开始指令时,当前运行的分区就开始执行预定的进程。比如待测平台接收到测试开始指令时,分区B正在运行,那么测试应用B中的测试进程a首先要记录接收到指令的时间,并生成一个包括这个时间信息的消息和CRC校验信息,然后将这个消息向测试进程b发送;测试进程b接收到这个消息后首先要记录接收到消息的时间,校验消息的CRC,然后将接收时间加入到这一消息中生成一个新的消息并连同新的CRC校验信息一起发送到测试进程c;测试进程c重复测试进程b的动作,最后将具有各个阶段生成的时间信息的消息发送回测试系统。当所有的测试应用都完成这一过程后,就可以获得4个分区的当前运行状态信息。观察某一分区发生故障的情况下其他分区的运行状态,可以通过调用操作系统的API来向待测系统发送测试指令,使某一分区关闭。
这样,测试结果由3个时间信息组成,分别是测试进程a的任务开始时间Ta,测试进程b收到消息的时间Tb和进程c收到消息的时间Tc。但是由于存在分区调度,各个分区测试进程的执行会受到分区时间窗口的限制。如图2所示,分区A中,测试进程b的运行被分区A与分区B的时间窗口WAB打断。这样一来,当分区A中的测试进程c接收到消息时,时间已经延后了WDA-WAB,而这属于系统运行的正常现象,并不是分区处理性能受到影响造成的。所以,为了更加准确地表现系统的运行状态,各个测试进程除了要记录接收到消息的时刻,还要记录被分区窗口打断的时刻和进程恢复运行的时刻(分别对应一个分区段的结束和开始)。
图2 分区A中测试进程b被分成两部分Fig.2 Test prosess b was divided into two parts in partition A
测试系统获得的消息可以用一个向量来描述(Ta,Wa1,Wa2,Tb,Wb1,Wb2,Tc,Wc1Wc2)。其中:Ta,Tb,Tc分别为测试进程a的任务开始时间,测试进程b接收到消息的时间和进程c接收到消息的时间;Wa1,Wb1,Wc1分别为测试进程a,b,c遭遇分区窗口中断的时刻;Wa2,Wb2,Wc2分别为进程遭遇中断后恢复运行的时间。
从测试结果中可以获得两方面的信息:1)各个分区中测试进程b接收到测试进程a发送的消息的时间间隔Tab和测试进程c接收到测试进程b发送的消息的时间间隔Tbc;2)各个分区的时间窗口信息。
Tab与Tbc可分别按式(1)和式(2)计算。
其中:MX为分区X相邻两次运行的时间间隔;取,分别为各个分区段的期望运行时间。
如果分区方式如图2所示,那么在一个主帧时间范围内包含的分区节点依次分别为 WAB,WBC,WCD,WDA,它们的值分别为各个分区的 Wa1,Wb1,Wc1中第一个非零值。
在测试方法设计的早期阶段,使用真实的待测平台和测试系统会增加不必要的工作量,使用待测平台的仿真模型可以解决这一问题。为了表明时间分区测试结果的时序特性,使用IMA的分区调度模型可以生成符合IMA时序特征的数据。
分区调度实质上为无占先限制的无抢占调度[8],文献[9]中给出了分区调度设计的方法。设P为m个分区的集合,即 P={p1,p2,…,pm}。对任一分区 pj∈P,Dj为分区pj的执行时间,Mj为分区pj的运行周期,显然有Dj≤Mj。当任一分区开始执行后,不会受到相同模块上的其他分区的干扰。这里的时间由时间单元来度量,时间单元也就是相等长度的时间区间,以Δt表示时间单元长度。以s(pj)表示分区pj的开始时间,若其在时间单元t开始运行,有s(pj)=t,其中t=1,2,…。已知分区pj的运行时间为Dj个时间单元,那么实际开始运行时间就是时间单元t的起始时间,运行结束时间则为时间单元t+Dj-1的结束时间。类似的,以 pj[k]表示分区 pj的第 k 次运行,若 pj[k]在时间单元t开始运行,那么pj[k+1]就在时间单元t+Mj开始运行,也就是说分区pj每Mj个时间单元之后运行一次。由于分区运行的周期性,只要确定了各个分区的开始运行时间,分区的各次运行时间也就确定了。因此,分区调度S可由一个m维向量S=(s(p1),s(p2),…,s(pm))来确定,其中1≤s(pj)≤Mj。分区调度本身也是周期性的,一个分区调度的重复周期叫做主帧MAF[10],等于各个分区周期的最小公倍数,即FMAF=lcm(T1,T2,…,Tm)。
图3所示为IMA分区调度模型,主要由3部分组成。
图3 IMA分区调度模型Fig.3 IMA partition scheduling model
1)任务时间预更新:根据当前系统时间,判断系统的当前时间窗口和活动分区。选择当前活动分区中下一个测试进程,并获得这一测试进程的运行时间与当前系统时间的累加值。
2)调度逻辑判断:根据时间预更新的结果,判断进程是否被分区窗口打断。
3)任务时间更新:若进程未被分区窗口打断,更新并记录当前分区当前进程的开始时刻与结束时刻;反之则更新并记录当前分区当前进程的开始时刻和分区时间窗口中断时刻,保存当前分区中被分区中断的进程的剩余执行时间信息,并指定下一个分区窗口所属的分区为当前活动分区。
利用上述调度仿真模型,可以生成时间分区测试的模拟测试结果。
初始化一个具有4个分区的IMA待测模块。分区 A,B,C,D 的周期分别为 TA=100 ms,TB=100 ms,TC=100 ms,TD=200 ms;期望运行时间分别为DA'=30 ms,DB'=20 ms,DC'=20 ms,,主帧 FMAF=200 ms,单位时间区间长度为Δt=1 ms,它的分区时间窗口如图4所示。
图4 分区时间窗口Fig.4 Partition time windows
图4 中,一个主帧时间内包含有10个分区节点,依次分别为 WIA1,WAB1,WBC1,WCD1,WDI1,WIA2,WAB2,WBC2,WCD2,WDI2。当测试开始于图示位置时,分区节点与测试结果的对应关系见表1。其中:表示分区P的 Wa1、Wb1、Wc1中第 1 个非零值;表示分区 P的Wa1、Wb1、Wc1中第 2 个非零值;与同理。
表1 分区节点与测试结果的对应关系Table 1 The relationship between partition nodes and test results
各个分区中的测试应用的执行时间如表2所示,其中,Δ为随机时间抖动,|Δ|=2 ms。
表3和表4分别列出了向待测系统发送关闭分区B指令前后的两次测试结果,开始时刻分别为t1=1.853 s和 t2=2.253 s。
从表3与表4所列出的数据中可以看出分区A的数据出现了两个问题:1)Wa1,Wb1,Wc1三个数据中只有一个非零值;2)Wa2,Wb2,Wc2三个数据中只有一个非零值。
表2 各个分区中的测试应用的执行时间Table 2 The execution time of process in different partitions
表3 分区关闭指令发送前一次测试结果Table 3 The test results before the order s
表4 分区B关闭指令后的一次测试结果Table 4 The test results after the order s
由于分区A中的3个测试进程的累加运行时间小于在一个主帧时间内的分区运行时间(2DA),导致在一个主帧时间内只能得到一个非零。在关闭分区B指令发送前 ,可以从表4分区B的数据中获得WAB1的值但是当分区B关闭后无法获得 WAB1的值,造成了数据的丢失。
由于分区A的前一个相邻分区是空闲分区,因此分区A时间窗口的开始时刻WIA1和WIA2只能由进程遭遇中断后恢复运行的时间来记录,但是当测试开始于非A分区的其他分区时,分区的第一次运行无法获得这一数据。此时,应当将进程a的开始时间算作分区A第一个时间窗口,即WIA2=TAa。
本文针对IMA时间分区测试问题建立了IMA分区调度仿真模型,使用该仿真模型进行测试方法设计降低了系统复杂度,减少了不必要的工作量,适用于测试方案的早期设计。对IMA测试研究仍需要更加完备的实时硬件系统和操作系统的仿真。
[1] ARINC 651.Design guidance for integrated modular avionics[Z].1991.
[2] 陈娟.ARINC653分区操作系统在综合模块化航空电子系统中的应用[J].电讯技术,2009(5):89-92.
[3] RTCA DO-297.Guidance and certification considerations for integrated modular avionics[Z].2005.
[4] JOHNSON L A.Software considerations in airborne systems and equipment certification[Z].1992.
[5] RUSHBY J.Partitioning on avionics architectures:Requirements,mechanisms,and assurance[R].NASA,1999.
[6] VON ALIKI O.System testing in the avionics domain[DB/OL].http://www.informatlk.uni-bremen.de/~ tsio/papers/Aliki_Ott_dissertation.pdf,2007.
[7] ARINC 653-1.Avionics application software standard interface[Z].2003.
[8] KORST J.Periodic multiprocessor scheduling[D].Eindhoven the Netherlands:Eindhoven university of technology,1992.
[9] 何峰,宋丽茹,熊华钢.航空电子分区层次调度模型及其优化设计[J].系统仿真学报,2009,19:6004-6008.
[10] LEE Y H.Resource scheduling in dependable integrated modular avionics[C]//NY USA,2000:14-23.