一种面向航天的可靠实时操作系统设计*
2016-04-08詹盼盼何熊文张红军
詹盼盼,郭 坚,何熊文,张红军
(北京空间飞行器总体设计部,北京100094)
一种面向航天的可靠实时操作系统设计*
詹盼盼,郭 坚,何熊文,张红军
(北京空间飞行器总体设计部,北京100094)
航天任务对实时操作系统提出了特定需求,设计一种面向航天的可靠实时操作系统(extremely valuable time-critical reliable operating system,EVTROS),功能包括任务管理、中断管理、内存管理、时钟管理、任务间通信管理和异常管理.介绍了基于最小内核的软件体系结构和实时调度设计,可靠性特点包括两级异常处理与故障日志记录、内存检查和冗余内存块自动替换、空间辐照下的单粒子翻转处理三个方面.实测数据表明,软件具有较优的性能,当系统发生异常时能够可靠处理.该操作系统成功应用于多个型号的星载计算机中,可靠性得到了有效验证.
星载计算机;操作系统;实时调度;可靠;异常处理
0 引言
随着空间技术的不断发展和应用的深入,航天软件系统的任务规模和复杂程度不断上升.原有依靠应用软件自身直接进行资源管理及调度的方式,难以解决航天软件系统中大量存在的资源冲突和任务阻塞等问题,因此需要利用实时操作系统进行统一管理,保证系统的稳定性、可靠性和高质量,并提高航天软件的开发效率[1].
实时操作系统[2](real time operating system,RTOS)是在确定的时间内对外部事件响应并执行相应功能的一类操作系统.国外已经开展多年的RTOS研究与应用,出现了一些商用RTOS产品,如VX-WORKS,RTEMS和 QNX[3]等.风河公司的 VXWORKS操作系统是成熟的商用实时操作系统,自1997年在美国国家航空航天局(NASA)研制的火星探路者号探测器上成功搭载,进而在后续的火星探测计划中得以应用,包括机遇号和勇气号,并且获得成功.RTEMS是美国军方为实时导弹系统而研发,具有较好的实时性和稳定性,已在美国和欧洲航空航天领域得到应用.QNX目前应用在无人机等军事领域.
虽然上述操作系统已经应用在一些航天领域任务中,但是基于国内航天领域的特点,这些国外实时操作系统不适合在中国航天器中应用.主要有以下问题:
(1)商用实时操作系统的源码不公开,中国航天软件要求源代码必须经过充分的分析和评测.
(2)可靠性和安全性得不到保证,由于涉及到航天领域,这些国外的软件产品不能自主可控,也不确定是否存在安全漏洞.并且国外实时操作系统软件并不单独针对航天应用,因此对空间的容错能力和可靠性方面考虑不足.
(3)星载计算机的存储空间有限,而这些实时操作系统包括了大量与航天应用无关的组件,无法同时满足功能、性能和空间要求.
国内也对航天用实时操作系统有一些研究,如实践五号、探索一号等使用了pSOS实时操作系统.国内航天领域的实时操作系统软件主要有以下特点:只实现了满足型号应用的最基本功能,无法满足星载计算机的通用任务要求;软件架构不够灵活,针对不同的硬件进行定制,导致难以移植到不同的中央处理器(CPU)中;目前国内实时操作系统尚没有对可靠性和容错处理的公开设计说明.北京控制工程研究所研制的SpaceOS[4]是目前国内应用较为广泛的嵌入式操作系统,但是其源代码不开放,无法获取其内部实现细节.
为改变这一现状进行自主操作系统研发,考虑整星任务对实时操作系统的可靠性要求,本文在分析了面向航天的实时操作系统软件需求的基础上,提出了一种可靠RTOS设计原则,从实时操作系统的体系结构和可靠性设计措施方面,设计了一种面向航天的可靠实时操作系统EVTROS.能够实现多个领域星载计算机的通用需求,可移植到中国航天器用的主流CPU中(支持486、TSC695F[5]和国产BM3803[6]处理器),为整星任务提供可靠支持.该操作系统不仅成功应用在多个星载计算机中,而且能够推广到其他星载计算机中使用.
1 需求分析及设计思路
面向航天的RTOS运行在各种星载计算机中,空间环境由于单粒子效应和总剂量效应的存在,使得其与地面系统相比要复杂恶劣的多,并且航天任务和硬件体系结构不断复杂,软件代码规模不断增加,对RTOS构成挑战.针对星载计算机硬件平台多种多样、易受空间环境影响、在轨飞行出现故障后难以干预的特点,面向航天的实时操作系统需要满足以下需求:
(1)满足通用性的要求.为满足不同领域星载计算机的任务要求,面向航天的操作系统需要提供任务管理、中断管理、内存管理、时钟管理和任务间通信管理的功能.
(2)具有较高的实时性能,能够支持外部事件快速响应和任务实时调度.
(3)具有独立于硬件平台的灵活的体系结构,能够移植到不同的CPU中.
(4)可靠性要求.地面对在轨运行的卫星可干预手段较少,这就要求RTOS为航天应用提供高可靠的运行环境,不仅能够在单粒子效应广泛存在的空间辐照环境中稳定运行,而且具有一定的异常处理能力,能够在出错后识别异常并从异常中恢复,保证星载计算机长寿命运行.
实时性和可靠性是航天用RTOS的重要特性,两者相互影响又相互依赖.本文在面向航天的RTOS设计中将实时性和可靠性两者相结合,采取以下设计思路:
(1)分层次低耦合体系结构设计:现有的国外RTOS往往基于宏内核[7-8]的体系结构,将任务管理、中断管理、内存管理、时钟管理和任务间通信管理的功能模块聚合在内核中,其中一个模块出现错误往往引起其他模块的错误,内核的功能模块耦合度过高导致可靠性降低.而国内航天用RTOS大多是单体系统,较少区分用户层和系统层的概念,系统耦合度较高.本文采用分层次的体系结构设计,将RTOS分为用户层、功能层和板级支持层,功能层包含最小内核和内核扩展模块,将内核功能独立出来成为一个最小内核,而将其他功能作为内核功能的扩展模块实现,降低系统内核和其他模块之间的耦合度,以实现系统实时性和可靠性的统一.
(2)可靠性策略和措施相分离:可靠性设计分两级实现,在功能层仅提供可靠性策略接口,进行异常事件处理过程中仅进行必要的异常信息保存和恢复,而可靠性处置措施可交给用户层实现,由用户选择配置异常处理措施,实现可靠性策略和措施相分离.
2 体系结构与实时性设计
2.1 体系结构设计
为提高航天操作系统的可靠性和实时性,本文按照分层次低耦合体系结构设计原则,设计了一个基于最小内核的RTOS体系结构,将操作系统划分成小的、良好定义的模块,只有内核运行在内核态中,其他的模块作为普通用户进程运行.EVTROS从体系结构上划分为3个层次:板级支持层、功能层和用户层,如图1所示.
板级支持层:板级支持层为RTOS提供了特定于星载计算机硬件的板级驱动,可以屏蔽硬件平台的差异,有效保证内核的独立性和操作系统的移植性.板级支持层主要包括以下功能:系统配置和初始化模块完成系统和CPU的初始化;板级驱动程序主要实现了硬件设备的驱动;内核初始化模块为内核分配内存空间并且建立内核调度任务.
图1 EVTROS操作系统软件体系结构图Fig.1 Architecture of EVTROS
功能层:EVTROS内核设计尽可能小,只保留实现操作系统基本功能的模块,而把外围功能的实现放在最小内核之外,不仅处理时间较少,而且降低内核出异常的概率,能够起到提高可靠性的作用.功能层由最小内核和内核扩展模块组成,共同完成操作系统软件的任务管理、中断管理、内存管理、时钟管理和任务间通信管理的功能.其中内核扩展模块中的异常管理模块,对发生异常时的系统状态进行保存和恢复,是保证系统可靠性的关键.
用户层:用于屏蔽操作系统内核接口,提供应用软件需要的接口和功能,包括用户支持库和用户异常处理模块.用户异常处理模块将发生的异常信息记录到日志系统中并根据异常的类别分别处理,是可靠性设计的重要内容.
2.2 实时调度设计
系统调度是特定事件发生时根据系统资源的占用情况对任务状态的统一管理和调配,调度策略是影响操作系统实时性的重要因素.EVTROS调度时机是在特定事件下进行的,如图2所示,包括时钟中断和内核事件.时钟中断(也指时间片中断)是周期性触发的,首先保存当前任务(处于执行态的任务)的上下文(本文指CPU寄存器的值)到任务堆栈中,然后从就绪队列中获取第一个任务(优先级最高),从该任务的堆栈中加载上下文到CPU寄存器中并且执行.为了提高系统的实时性和任务切换的效率,本文还在执行调度程序之前进行了优化,首先比较当前任务的优先级和就绪队列任务的优先级,如果当前任务的优先级更高,则不重新执行调度,直接从该任务被中断的地方执行,只有当前任务的优先级低时才重新调度.这样,可以减少调度和任务切换的次数,提高系统性能.
图2EVTROS调度机制Fig.2 Scheduler of EVTROS
内核事件也能触发EVTROS重新调度,本文的内核事件是指能够引起内核重新调度的事件,由应用程序调用相关函数引发,包括任务延时、任务执行结束、任务挂起和恢复、信号量获取和释放、消息队列发送和接收.当这些内核事件发生时,系统会立即执行一次内核调度程序,而不必等到时钟中断到达时才调度.
内核事件触发的调度方式实现了系统对外部事件的实时响应,能够保证航天应用对紧急事件如实时程控指令的快速响应.在星载计算机运行过程中,如果任务间需要处理关键指令,可以在中断程序中释放信号量,通知系统软件执行一次内核事件调度,则获取该信号量的任务会被立即调度执行,而无需一直等待时间片轮转,从而减少了关键事件的等待调度时间.
3 可靠性设计
航天任务的特殊性,要求EVTROS操作系统不仅能够对正常情况下的系统资源进行有效管理,当系统发生异常情况时仍需要保持可靠运行.EVTROS操作系统主要在以下几个方面进行了可靠性设计:内存检查和冗余内存块自动替换、异常处理与故障日志记录、空间辐照下的单粒子翻转处理.
3.1 内存检查和冗余内存块自动替换
星载计算机内存检测有两个特点:第一是检测出现错误后不能够将程序段和数据段搬移到内存中执行,因为不可信的内存数据会对软件任务造成不可预见的影响;第二是检测出错后能够告知地面足够的信息,以便进行内存地址替换等措施.目前,大多数星载计算机在检测到内存错误后即直接复位,地面无法判断是内存错误所致还是系统的其他异常所致,无法准确定位错误.为解决这一问题,本文在检测到内存错误后,一方面给出遥测数据,另一方面隔离出错的内存块.
初始加电后,EVTROS进行内存检查:遍历所有内存空间,写入固定值序列后并读取,判断写入数据的正确性,如果内存数据读写均正确则正常加载到内存中运行,如果不正确则进行内存出错处理.航天用1553B总线通信的设备分为BC(bus controller)端和RT(remote terminal)端.如果是RT端,则进行1553B总线寄存器初始化后,向总线遥测子地址写入表明内存区有错误的事件码和内存出错地址,等待中央计算机(BC端)采集并且下行.如果是BC端,则向硬件遥测地址写入错误事件码并下行.这样,地面能够获取系统检测到内存错误的信息,并执行下一步操作.
EVTROS设计了冗余内存块自动替换的策略.在内存块检测的过程中,如果发现某一内存块错误,则记录发生错误的内存块;最终如果只有一个内存块有错误,则使用最后一个内存块替换出错的内存块,隔离出错的内存区,系统继续正常运行,如果多于一个内存块有错误,则设置内存错误遥测状态后下行,并设置狗咬复位.
3.2 异常处理与故障日志记录
异常[1]是指处理器由于某些指令自动产生的异常事件,如非法指令、除零等.当异常事件发生时,CPU能够捕获异常并转入异常处理代码执行.以TSC695F和BM3803处理器为例,EVTROS能够管理所有256级Trap,除15个中断和少数Trap(包括下溢、上溢、软指令关闭Trap)需要特殊处理外,其他异常均采用统一的方式进行处理.
根据可靠性策略和措施相分离的设计原则,本文针对这些异常处理分两个层次:内核层异常处理和用户层异常处理,将用户层异常处理挂接在内核层异常处理的末端.内核层的异常处理是“后台”程序,对发生异常时的系统状态进行保存和恢复.当异常发生时,首先保存异常发生时的CPU寄存器状态到内存中,然后转向执行用户层异常处理程序,执行完毕后再次转向“后台”程序,在异常退出前从内存中恢复CPU寄存器状态.
用户层的异常处理是用户软件操作导致异常时具体处理的过程,是用户可配置和修改的.内核层的异常处理是对发生异常时的处理器上下文信息进行保存和恢复的过程,对用户不可见.用户层的异常处理分两步进行.第一,以故障日志记录的形式保存异常信息,首先读取出错时CPU寄存器的值,生成一个异常记录结构(包括异常计数、异常源、异常类型、错误地址、PC寄存器值、处理器状态寄存器值、发生错误的任务ID),并且将这些信息保存到特定的存储区域.第二,保存完异常信息后,根据异常类型分别进行处理:如果是无法恢复的异常,包括除零错、非法指令、内存不对齐错误、数据访问错误,则设置复位;若为其它异常,则清除CPU寄存器错误状态后继续执行.星载应用软件读取故障日志记录并下传地面,以进行异常定位.
不同的处理器或者系统可以有不同的异常处理方式,应用程序可以对用户层的异常处理方式进行配置和更改,这样不仅可以实现内核层异常处理的通用化,而且适应了不同系统对异常处理的多变性需求,实现了可靠性策略和措施相分离的原则.
3.3 空间辐照下的单粒子翻转处理
单粒子效应是十分重要的空间环境效应之一,其影响也越来越严重,经常造成系统出错或损坏,导致航天器系统失控,其中,单粒子翻转(single event upset,SEU)是较为常见而又十分重要的一种单粒子效应[9].EVTROS对内存可能发生的单粒子翻转进行了防护,通过软件容错方式减少单粒子翻转对星载计算机系统的影响.通过设置 CPU寄存器将RAM错误检测与纠正[10](error detection and correction,EDAC)防护功能打开,软件就能响应单粒子翻转事件.
用户异常处理模块实现单粒子翻转处理程序,一旦发生单粒子翻转,该程序记录单比特错计数,并且分别读取和回写发生单粒子翻转的内存中的数据,从而纠正内存中的错误数据.
4 实验验证
软件测试是保证RTOS可靠性的重要手段.EVTROS操作系统经历了多个测试阶段,一方面通过制定场景进行专项测试.另一方面,通过航天应用和在轨长期飞行进行测试,验证其正确性,例如某航天器中心计算机上的应用软件有十多个不同优先级的任务和数十个不同优先级的中断,不仅任务执行过程复杂,而且中断的发生具有随机性.经过多次飞行任务和连续四年不断电在轨飞行,实测数据表明EVTROS操作系统运行安全可靠.
本文对EVTROS的实时性和可靠性进行了测试验证.实时性是RTOS最重要的技术指标,任务切换时间和中断响应时间是影响RTOS实时性的重要性能指标,在航天任务中尤为突出.任务切换时间是从当前任务运行的最后一条指令放弃CPU,到下一个就绪任务的首条指令开始执行的时间,中断响应时间是从中断发生到开始执行用户中断服务程序的第一条指令之间的时间.本文对这两个性能指标进行了100次测试,统计了EVTROS的平均时间,运行环境为国产BM3803处理器(主频20MHZ),任务数20个,并与VXWORKS和RTEMS实时操作系统的性能进行了比较,如表1所示.
表1 性能指标测试结果Tab.1 Testing results of the performance
多任务切换和外部中断响应是RTOS运行过程中频繁发生的事件.表1的测试结果表明EVTROS相对于VXWORKS和RTEMS,具有更好的实时性.
本文对EVTROS的可靠性设计进行了测试,测试过程和方法如表2所示,结果表明软件能够正确处理系统发生的异常,满足可靠性设计要求.
表2 可靠性设计测试方法和结果Tab.2 Testing methods and results of the reliability design
5 结束语
本文设计的一种面向航天的可靠实时操作系统,具有实时性高、异常可靠处理的特点,多次成功应用于中国航天器的中心计算机中,已连续无故障运行四年,其功能性能和可靠性得到了有效的验证,可以推广到其他航天器中使用.
[1] 程胜,蔡铭.航天高可靠嵌入式实时操作系统原理与技术[M].北京:中国宇航出版社,2012.CHENG S,CAI M.The principle and technique of space highly reliable embedded real time operating system[M].Beijing:China Astronautics Press,2012.
[2] ANH T.Real-time operating systems for small microcontrollers[J].Micro,2008,29(5):30-45.
[3] HILDE B D.An architecture overview of QNX[C]// Proceedings of the workshop on micro kernels and other kernel architectures.New York:IEEE,1992.
[4] 徐建,杨桦.基于微内核的星载实时操作系统设计与实现[J].空间控制技术与应用,2011,37(2):38-43.XU J,YANG Y.Design and implementation of microkernel-based satellite real time operating system[J].Aerospace Control and Application,2011,37(2):38-43.
[5] Atmel Corporation.Rad-hard 32 bit SPARC embedded processor TSC695F[Z].Atmel Corporation,2003.
[6] 詹盼盼,郭廷源,高建军,等.基于BM3803处理器的即插即用星载计算机系统设计[J].航天器工程,2013,22(6):92-96.ZHAN P P,GUO T Y,GAO J J.Plug-and-play onboard computer system design based on bm3803 processor[J].Spacecraft Engineering,2013,22(6):92-96.
[7] LIEDTKE J.On μ-Kernel construction[C]//The 15thACM Symposium on Operation Systems,Coper Mountain,1995.
[8] ANDREW S T.Modern operating systems[M].New York:Pearson Education,2008
[9] 黄建国,韩建伟,林云龙,等.一种SEU实验数据的处理方法[J].空间科学学报,2002,22(3):268-273.HUANG J G,HAN J W,LIN Y.A method for processing SEU data[J].Chinese Journal of Space Science,2002,22(3):268-273.
[10] SHIRVANI P P,SAXENA N R,MCCLUSKEY E J.Software implemented EDAC protection against SEUs [J].IEEE Transactions on Reliability,2000,49(3): 273-284.
Design of Reliable Real Time Operating System in Aerospace
ZHAN Panpan,GUO Jian,HE Xiongwen,ZHANG Hongjun
(Beijing Institute of Spacecraft System Engineering,Beijing 100094,China)
Since the space mission has a specific demand on real time operation system(RTOS),a space high reliability real time operating system—extremely valuable time-critical reliable operating system(EVTROS)is designed.It involves the functions of task management,interrupt management,memory management,synchronization and communication,time management and exception handling.The software architecture are elaborated based on the smallest kernel and real time task scheduling.The reliability of space RTOS is improved via three approaches:two-level exception handling and fault log recording mechanism,memory checking and automatic replacement of redundant memory blocks,handling of single event upset under space radiation.Measured data show that the designed RTOS has good performance and can handle reliably when exception occurs.The designed RTOS is applied to space on-board computers of several missions and the reliability is verified.
on-board computer;operating system;real time scheduling;reliable;exception handling
V446.2
A 文章编号:1674-1579(2016)05-0047-06
10.3969/j.issn.1674-1579.2016.05.009
詹盼盼(1987—),男,工程师,研究方向为空间数据系统设计;郭 坚(1977—),男,研究员,研究方向为空间数据系统设计;何熊文(1982—),男,高级工程师,研究方向为空间数据系统设计;张红军(1980—),男,高级工程师,研究方向为空间数据系统设计.
*空间信息网络业务特征与流量分析理论研究(91438102)资助项目。
2016-07-05