为何选择RTEMS
摘要
%A
%A 为什么RTEMS非常适合嵌入式开发
%A
%A 在概论里面已经介绍过RTEMS的性能,为了连载的完整性,这里再介绍一下实时系统的特性以及为什么选择RTEMS。
%A
%A 在在国内,提到嵌入式系统,人们更多的想到的是Linux和ucOSII,一个是GPL的,一个是简单、开源的。但是另一方面,Linux很多设计理念更适合PC,所以资源占用较多,最后可能导致产品成本过高或者质量不可控。而uCOSII虽然开源,但是如果用于商业用途,则是要每个产品征收相应的费用(和 Vxworks类似,但是要便宜一些)。不少人直接把uCOSII放在自己的产品中。而没有申请商业版的Licence,这实际是非法的。(当然,现在盗版光盘也非法,但是也有不少人买卖)
%A
%A 对于RTEMS,很多人都很陌生,其实真是藏在闺中无人识。我不知道上天的神州五号有没有使用RTEMS,但是航天工业部里面,很多项目是基于RTEMS的。国内也有一些单位和个人把RTEMS改装一下,然后号称自主知识产权,骗取863、973基金。
%A
%A 那么,究竟RTEMS有什么独特之处,使他成为嵌入式系统里面的常青树呢,下面我将逐步介绍。
%A
%A RTEMS 诞生于20世纪80年代,最早用于美国国防部的导弹控制系统,他在诞生时就瞄准了高实时性和高可用性的标准,并且采用了面向对象技术、构件技术等到现在也非常先进的理念构造而成,不但有非常好的实时性和稳定性,也具有非常好的客复用性。当时RTEMS的全称是"实时导弹控制执行体"。现在RTEMS的全称是 "多处理器实时操作系统",是一个纯粹的32位系统(由于充分利用了32位的特性,所以无法像uCOSII那样用于8位和16位系统)。经过了20多年的持续开发,RTEMS拥有非常广泛的客户,也具有丰富的开发资源。尤其在实时性、稳定性、开发速度和多处理器支持上面都是非常优秀的。
%A
%A 实时系统是一种很特殊的系统,他在任务的调度上比普通操作系统如Linux和windows有更为严格的要求。实时系统最为关键的特性是他的实时性,所谓实时性指的是能够在规定的时间内处理外部的信息。有时候需要处理的信息可能是突发的大量信息,既可能是一串毫不相关的信息,也可能是一些相互关联具有同步关系的信息,还可能是循环信息。
%A
%A 实时嵌入式系统里任务的实时性可以分为硬实时和软实时,区分的标准是看任务在规定时间里面没有完成的时候的返回值。硬实时任务的规定时间到来的时候如果没有结束没有返回值,或者返回的值会导致系统异常。软实时则在任务没有结束的时候会有可供系统处理的返回值。
%A
%A 实时系统的另外一个特性是管理协调大规模并发进程的能力。任务是并发的,但是处理器以及硬件资源有限,指令只能一条一条的执行。虽然在现在的操作系统理论中提出了很多多进程并发执行的方法,但是多个进程间的同步和异步处理仍然让大多数设计者头疼,如果有了RTOS,设计者的工作就简单了很多。在RTEMS 中一个执行程序可以包含了若干的进程,每个进程都是可控的。每个进程在逻辑上都是同步执行。系统组件提供了为多个进程管理协调硬件资源的能力。同时,进程管理组件也能接受硬件中断以及驱动程序中断。经过RTEMS的扩展,实时系统的设计变得简单。
%A
%A 如果有多个处理器,或者一个处理器中有多个内核(比如ARM+DSP),设计就变得更为麻烦。多个处理器间的通信以及多个处理器间的资源共享需要RTOS 进行调度,在这一点上面,RTEMS做得比较好。RTEMS的多处理器扩展能协调分布在不同处理器上面的任务。通过扩展,系统的实时性更强,更加有效,也更为可靠。
%A
%A RTEMS提供了多种API的接口,除了RTEMS本身的API以外,还提供了POSIX接口(Linux以及VxWorks的程序能方便移植),pSOS的API以及ITRON的API。这些API能让软件设计者摆脱对多任务和多处理器控制的底层细节。此外RTEMS还提供内存管理、消息管理、互斥变量管理、GDB调试等一系列的API。这些API使用户能专心开发应用程序,大大提高了效率。
%A
%A 此外,RTEMS另一个独特之处在于他是面向对象的,RTEMS的是第一个面向对象的实时嵌入式系统。在RTEMS中,任务、中断、内存等等都是对象,RTEMS提供了大量的对象控制API,能动态管理这些对象。这些API能大大缩短程序的代码量和开发周期。
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。