Rtems简介
RTEMS可谓嵌入式系统鼻祖,经过专家的评测,其性能毫不逊色于VxWorks, 远远把RtLinux甩在后面。
%A
%A 正文
%A
%A RTEMS是前美国军方研制的嵌入式系统, 最早用于美国国防系统,早期的名称为实时导弹系统(Real Time Executive for Missile Systems),后来改名为实时军用系统(Real Time Executive for Military Systems), 目前的全称是实时(Real Time Executive for Multiprocessor Systems)用,他的特点是非常的稳定,而且速度快。现在是一个开源项目的RTOS, 在全球还是有不少的用户,其中包括Motorola,朗讯等,他有下面的特点:
%A
%A 1. 非常好的实时性能(以前是控制导弹的,再差也差不到那里去)
%A 2. 极其稳定
%A 3. 使用面向对象技术构件,剪裁性和移植性好。
%A 4. 包含POSIX 1003.1b API,并且支持POSIX Thread
%A 5. 提供pSOS+的API
%A 6. 提供遵循ITRON的API
%A 7. 体系可伸缩(也就是常说的Scalable)
%A 8. 多任务,支持事件驱动,优先级调度,抢占调度(preemptive scheduling)
%A 9. 任务间的同步与通信
%A 10. 优化的基于统计的单调频率RMS调度(Rate Monotonic Scheduling)
%A 11. 优先级高度协议PCP(Priority Ceiling Protocols)
%A 12. 支持优先级继承用于解决优先级反转的问题
%A 13. 支持多处理器体系结构(不但支持同构的处理器,也支持异构处理器比如ARM+DSP)
%A 14. 负责任的中断管理
%A 15. 高度的可配置性
%A 16. 提供可重入的ANSI C库
%A 17. 提供TCP/IP协议栈以及WebServer等服务。
%A
%A 注: TRON全称是 (The Real-time Operating system Nucleus),ITRON(Industrial TRON)是一个由多家著名IT企业牵头的协议制定组织,同时IRTON也代表实时嵌入式系统的一个标准。ITRON提出了实时操作系统的一系列规范(包括系统调用接口规范,任务调度接口规范,TCP/IP网路链接API规范,本地与远程调试接口规范等等),遵循这个规范的操作系统上层软件可以相互移植,有点类似于UNIX世界里面的POSIX。日本所有的大型IT公司都开发了自己的基于ITRON的嵌入式系统
%A
%A 此外他还提供了很多有些的附加属性:
%A
%A 1. 优秀的网路支持,支持BSD套结字, TCP/IP, UDP/IP, TFTP, FTPd, HTTPd, SNMP, NTP, ICMP, ARP, DNS client, PPP, Remote Console, SNMP
%A 2. 支持图形界面:microwindows GUI
%A 3. 支持Webserver(GoAhead)
%A 4. 支持CORBA(omniORB)
%A 5. 支持大量的OpenSource库,比如:TCL, readline, zlib, ncurses, libavl
%A 6. 对大多数API提供C++支持(可选)
%A 7. 支持Ada
%A 8. 支持文件系统
%A
%A 目前RTEMS是GPL的开源项目(准确的说,是GPL的一个变种),广泛应用于军事,工业,科研等领域。很多专业的软件(比较注明的如EPICS)开始移植到RTEMS平台上。
%A RTEMS从设计初始就是为较少内存与较少CPU主频的嵌入式系统提供可靠的实时内核。该系统分为若干模块,用户可以根据实际应用需要进行剪裁。 在国际控制年会Straumann的一篇报道做过如下的测试,测试的硬件平台是PowerPC 604(300MHz),Rtlinux,RTEMS和VxWorks的BSP都是由Motorola提供,测试内容包括初始化、中断处理、普通程序(包括网路程序、SPI、串口等)。测试中产生了2,000,000次中断,中断的平均频率为4kHz。可以看出,这个测试程序对内核的实时性以及任务调度都是一个严格的考验。测试的结果如下表所示:(单位10-6s)
%A
%A 中断时延
%A
%A Context转换
%A
%A 系统负载中等
%A
%A 最大
%A
%A 平均
%A
%A 最大
%A
%A 平均
%A RtLinux
%A 13.5
%A
%A 1.7
%A
%A 33.1
%A
%A 8.7
%A RTEMS
%A 15.1
%A
%A 1.3
%A
%A 16.4
%A
%A 2.2
%A RTEMS1
%A 14.9
%A
%A 1.3
%A
%A 16.9
%A
%A 2.3
%A VxWorks
%A 13.1
%A
%A 2.0
%A
%A 19.0
%A
%A 3.1
%A
%A 重负载
%A RtLinux
%A 196.8
%A
%A 2.1
%A
%A 193.9
%A
%A 11.2
%A RTEMS
%A 20.5
%A
%A 2.9
%A
%A 51.3
%A
%A 3.7
%A RTEMS1
%A 19.2
%A
%A 2.4
%A
%A 213
%A
%A 10.4
%A VxWorks
%A 25.2
%A
%A 2.9
%A
%A 38.8
%A
%A 9.5
%A
%A 注:RTEMS1(使用Pthread库)
%A
%A 从表上的结果可以看出,RtLinux无论是实时性,还是线程任务迁移,都还远远不能满足要求。尤其是在重负载情况下,处理中断的时延波动非常厉害。想象一下,RtLinux他的中断处理平均时间是2.1us但是实际应用的时候可能要在200us才能处理。这在时间有严格要求的系统中是不能允许的。
%A
%A 同时也可以看到,RTEMS在测试重表现的性能指标非常理想,基本上达到或者超过老牌商业系统VxWorks。值得一提的是RTEMS在使用了 Pthread库后,RTEMS的性能有所下降。但是最差的情况也不会比RtLinux差。但让人欣喜的是,目前Pthread库的性能已经有了不少改善,详情可以参考RTEMS的邮件列表。
%A
%A 既然我把Rtems叫做嵌入式系统里面的老大哥,它支持的CPU类型自然是非常多的,可以说只要是GCC支持的,RTEMS就可以支持。其中值得一提的是一下的CPU
%A
%A * intel的i386,i960
%A * Hitachi的H8/300和SH系列
%A * Motorola的MC68xxx
%A * MIPS R46x0
%A * OPEN CORE的OR32
%A * PowerPC系列
%A * SPARC系列
%A * ARM系列
%A * AMD 29K
%A * HP PA-RISC
%A
%A 这些系列是比较成熟的工业级CPU,RTEMS在这些产品上面已经有多年的应用,所以对这些CPU支持的特别好。同时随着ARM和DSP的流行,RTEMS 也在几年前支持了多种DSP和多个系列的ARM(ARM只是一个核心,实际的ARM芯片有上千种,一个操作系统不可能支持全部的ARM芯片)。
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。