实时操作系统在星载计算机中的应用
随着我国航天技术的不断发展,越来越多的卫星应用在通讯、资源探测、遥感、气象、对地观察等领域。卫星的功能越来越强,对星务管理和有效载荷控制的星载计算机提出了更高的要求。星载计算机软硬件系统日趋复杂,传统的星载计算机软硬件设计方法,特别是软件的设计方法和开发手段已逐渐不适应这种要求。引入实时操作系统(RTOS)能够有效地解决这些问题。RTOS把任务管理调度、任务间通信、内存管理等系统功能以函数调用的方式提供给用户,使用户能够将精力放在应用程序的开发上,有助于星载软件的通用化和模块化设计,缩短软件产品的研制周期,提高星载软件的可靠性。
RTOS已经成功运用在包括航天在内的许多嵌入式领域,如SJ-5小卫星就成功应用了pSOS操作系统。但这种无法获得源码的操作系统,无法确定其安全性。因此应该选用源码开放的RTOS或者自己独立设计一种适合自身系统的RTOS。本文将介绍一种适合于航天应用,特别是面向关键任务(Critical Oriented)的源码开放的RTOS--RTEMS;探索自己开发RTOS的设计方法,并对两种方案进行比较。
1 星载计算机与星载操作系统的特点
星载计算机是RTOS运行的硬件环境,了解其特点对于RTOS的选用和设计将更有针对性。星载计算机主要用于卫星的星务管理、数据处理、姿态控制以及对有效载荷进行控制等。根据空间环境、可靠性、安全性、寿命、功耗、重量等方面的要求,星载计算机应具有如下特点:
·硬件资源有限,受功耗、尺寸的限制,星载计算机只有有限的内存空间;
·CPU型号多样,但不属于通用型CPU,配套的调试工具少。从8位的8031到16位的1750A、8086,到32位的ERC32、80X86,不同的型号任务,不同的研制单位采用不同的CPU型号;
·需要考虑空间抗辐射能力,必须考虑单粒子翻转(SEU)和单粒子锁定(SEL)对星载计算机的影响;
·对安全性与可靠性要求高;
·需要具有在轨可编程功能,对在地面考虑不周和出现意外情况时,能有所补救。
针对星载计算机的这些特点,星载操作系统也具有如下特征:
·微内核,由于硬件资源有限,因此星载RTOS必须做成微内核的操作系统;
·可裁减,能够根据不同的应用对操作系统进行不同的配置,做到量体裁衣,也能更充分地利用硬件资源,减少软件多余物;
·强实时性,星载系统都是强实时系统,对实时性要求很高;
·高稳定性与高可靠性;
·代码可固化,在现在的星载计算机中仍然采用PROM对代码进行固化,这就要求星载RTOS必须是代码可固化的。
2 采用RTEMS作为星载实时操作系统
2.1 RTEMS实时操作系统
RTEMS(Real-Time Executive for Multiprocessor Systems)实时操作系统最初是美国军方为了实时导弹系统而开发的。当时RTEMS的全称是:Real-Time Executive for Missile Systems。随着该系统功能的逐步完善,应用范围也从Missile扩大到Military,再到Multiprocessor,而形成现在的RTEMS。RTEMS从1988年开始开发,并于1999年开始对外开放源代码,并由OAR公司进行维护和升级。现在最新版本为4.6.0,在OAR的网站(www.oarcorp.com)上可以下载到相关资料。RTEMS由于具有开放源代码的优势,以及能与最优秀的商业RTOS相媲美的性能,使得它最适合应用到星载计算机中。RTEMS有如下特点:
·支持多处理器;
·支持事件驱动和基于优先级的多任务实时系统;
·支持优先级同级调度,支持单调速率(RMS)算法;
·支持多种任务间通信与同步方法;
·支持中断管理;
·支持动态内存分配与管理;
·支持符合POSIX标准的文件系统;
·支持多种网络协议,RTEMS带有完整的TCP/IP协议栈,具有强大的网络功能;
·RTEMS提供了符合POSIX1003.1b标准,以及ITRON规范的API接口;
·RTEMS支持C/Ada语言;
·RTEMS现在能支持包括ERC32(欧空局用于航天项目的CPU)在内的11种类型的CPU(包括Motorola MC68K系列、ColdFire、Hitachi SH、intel i386、i960、MIPS、PowerPC、SPARC、AMD A29K、HP PA-RISC)。
2.2 RTEMS的使用与开发方法
RTEMS的开发工具采用GNU的相关开发工具,但需要打上RTEMS的补丁。如编译器采用GCC,调试工具采用GDB。
用户编写应用程序,就是根据RTEMS提供的系统服务,通过API调用编写任务程序。RTEMS提供的系统服务相当丰富,包括:任务管理、中断管理、时钟管理、定时器管理、信号量服务、消息服务、事件服务、信号服务、内存分区(Partition)与区域(Region)管理、双口内存管理、I/O管理以及多任务调度等。
当需要将开发完成的程序向硬件板卡下载时,还需要修改BSP板级支持包文件。BSP部分是与硬件相关的,把BSP作为单独的一部分是为了使RTEMS具有更好的可移植性。因为相同的代码,加上不同的BSP就可以应用到不同的CPU板上。
在调试程序时,可以先把串口打通,这样可以方便下载程序,也可以利用GDB工具或者它的图形界面方式DDD调试程序。方便软件的开发与调试。
采用RTEMS操作系统的开发方法,可以不用关心操作系统内部如何实现多任务之间的协调工作等RTOS具体的技术细节,只需要按照RTOS提供的API调用系统服务即可。能够充分利用成熟的技术,快速开发星载软件。但也有一定局限性,RTEMS是属于比较复杂的RTOS,至少需要60KB左右的内存空间才能使系统运转起来。因此对硬件要求相对苛刻一些。而且有些CPU,RTEMS还不支持,如国内在航天领域常用的1750A CPU,RTEMS就不支持。
因此,使用RTEMS有一定的局限性,当RTEMS不适合使用时,可以考虑自行研制星载实时操作系统。下面以笔者开发的SAR-RTOS为例介绍星载实时操作系统的设计。
- 实践9号B卫星SoC接轨国际先进技术 完全自主研发(06-05)
- 基于机器视觉的公路车流量检测系统研究(03-24)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- 嵌入式实时操作系统设计探讨(10-15)
- 嵌入式实时操作系统μC/OS-II 在P89V51RD2中的移植(04-09)