实时操作系统在星载计算机中的应用
·支持多种任务间通信与同步方法;
·支持中断管理;
·支持动态内存分配与管理;
·支持符合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还不支持,如国内在航天领域常用的1750ACPU,RTEMS就不不支持。
因此,使用RTEMS有一定的局限性,当RTEMS不适合使用时,可以考虑自行研制星载实时操作系统。下面以笔者开发的SAR-RTOS为例介绍星载实时操作系统的设计。
3 星载实时操作系统的设计
3.1 实时操作系统内核的原理
实时操作系统(RTOS)的核心是其内核。笔者认为:通用操作系统的本质特点是硬件资源的管理者,而RTOS的本质特点是引入了多任务和实时性的保证。当然引入多任务也是提高实时性的一种方法。实时性的保证主要是靠任务调度方法和任务调度时机来决定。引入多任务相应地带来了任务竞争与同步、任务的切换等问题。而这些问题在现代操作系统理论里已经有了比较完备的解决方案。
实时操作系统内核原理,概括起来就是:引入了多任务,并且为每个任务分配自己的堆栈空间,由任务调度器来决定让哪个任务获得CPU。被挂起的任务把当前的CPU状态保存在自己的堆栈区中,获得CPU的任务把它被挂起时保存的CPU寄存器从堆栈区中恢复,这样新任务就从挂起时的状态重新执行,从而完成了一次任务切换。而信号量、消息队列、邮箱、事件等系统提供的服务是为了解决多任务间对资源的竞争以及任务间的通信和同步。它们的共同点是从实现的角度,有效为复杂的数据结构作支撑,而对于用户来讲用法很简单。例如信号量(Semaphore),建立好(Create)后,对其进行的操作就只有等信号(Pend)和发展信号(Post)。
3.2 星载实时操作系统的设计要素
(1)总体设计
星载RTOS的设计属于复杂的软件设计,因此应该按照软件工程规定的V型模型的开发方法实话开
《实时操作系统在星载计算机中的应用(第2页)》