RTEMS,a rivail of VxWorks
作者 Ray
RTEMS版權所有,轉載請註明:來源http://www.rtems.net,作者Ray
RTEMS可謂嵌入式系統鼻祖,經過專家的評測,其性能毫不遜色於VxWorks, 遠遠把RtLinux甩在後面。
正文
RTEMS是前美國軍方研製的嵌入式系統, 最早用於美國國防系統,早期的名稱爲實時導彈系統(Real Time Executive for Missile Systems),後來改名爲實時軍用系統(Real Time Executive for Military Systems), 目前的全稱是實時(Real Time Executive for Multiprocessor Systems)用,他的特點是非常的穩定,而且速度快。現在是一個開源項目的RTOS, 在全球還是有不少的用戶,其中包括Motorola,朗訊等,他有下面的特點:
- 非常好的實時性能(以前是控制導彈的,再差也差不到那裏去)
- 極其穩定
- 使用面向對象技術構件,剪裁性和移植性好。
- 包含POSIX 1003.1b API,並且支持POSIX Thread
- 提供pSOS+的API
- 提供遵循ITRON的API
- 體系可伸縮(也就是常說的Scalable)
- 多任務,支持事件驅動,優先級調度,搶佔調度(preemptive scheduling)
- 任務間的同步與通信
- 優化的基於統計的單調頻率RMS調度(Rate Monotonic Scheduling)
- 優先級高度協議PCP(Priority Ceiling Protocols)
- 支持優先級繼承用於解決優先級反轉的問題
- 支持多處理器體系結構(不但支持同構的處理器,也支持異構處理器比如ARM+DSP)
- 負責任的中斷管理
- 高度的可配置性
- 提供可重入的ANSI C庫
- 提供TCP/IP協議棧以及WebServer等服務。
注:TRON全稱是 (The Real-time Operating system Nucleus),ITRON(Industrial TRON)是一個由多家著名IT企業牽頭的協議制定組織,同時IRTON也代表實時嵌入式系統的一個標準。ITRON提出了實時操作系統的一系列規範(包括系統調用接口規範,任務調度接口規範,TCP/IP網路鏈接API規範,本地與遠程調試接口規範等等),遵循這個規範的操作系統上層軟件可以相互移植,有點類似於UNIX世界裏面的POSIX。日本所有的大型IT公司都開發了自己的基於ITRON的嵌入式系統
此外他還提供了很多有些的附加屬性:
- 優秀的網路支持,支持BSD套結字, TCP/IP, UDP/IP, TFTP, FTPd, HTTPd, SNMP, NTP, ICMP, ARP, DNS client, PPP, Remote Console, SNMP
- 支持圖形界面:microwindows GUI
- 支持Webserver(GoAhead)
- 支持CORBA(omniORB)
- 支持大量的OpenSource庫,比如:TCL, readline, zlib, ncurses, libavl
- 對大多數API提供C++支持(可選)
- 支持Ada
- 支持文件系統
目前RTEMS是GPL的開源項目(準確的說,是GPL的一個變種),廣泛應用於軍事,工業,科研等領域。很多專業的軟件(比較註明的如EPICS)開始移植到RTEMS平臺上。
RTEMS從設計初始就是爲較少內存與較少CPU主頻的嵌入式系統提供可靠的實時內核。該系統分爲若干模塊,用戶可以根據實際應用需要進行剪裁。 在國際控制年會Straumann的一篇報道做過如下的測試,測試的硬件平臺是PowerPC 604(300MHz),Rtlinux,RTEMS和VxWorks的BSP都是由Motorola提供,測試內容包括初始化、中斷處理、普通程序(包括網路程序、SPI、串口等)。測試中產生了2,000,000次中斷,中斷的平均頻率爲4kHz。可以看出,這個測試程序對內核的實時性以及任務調度都是一個嚴格的考驗。測試的結果如下表所示:(單位10-6s)
中斷時延
|
Context轉換
|
|||
系統負載中等
|
||||
最大
|
平均
|
最大
|
平均
|
|
RtLinux |
13.5
|
1.7
|
33.1
|
8.7
|
RTEMS |
15.1
|
1.3
|
16.4
|
2.2
|
RTEMS1 |
14.9
|
1.3
|
16.9
|
2.3
|
VxWorks |
13.1
|
2.0
|
19.0
|
3.1
|
重負載
|
||||
RtLinux |
196.8
|
2.1
|
193.9
|
11.2
|
RTEMS |
20.5
|
2.9
|
51.3
|
3.7
|
RTEMS1 |
19.2
|
2.4
|
213
|
10.4
|
VxWorks |
25.2
|
2.9
|
38.8
|
9.5
|
注:RTEMS1(使用Pthread庫)
從表上的結果可以看出,RtLinux無論是實時性,還是線程任務遷移,都還遠遠不能滿足要求。尤其是在重負載情況下,處理中斷的時延波動非常厲害。想象一下,RtLinux他的中斷處理平均時間是2.1us但是實際應用的時候可能要在200us才能處理。這在時間有嚴格要求的系統中是不能允許的。
同時也可以看到,RTEMS在測試重表現的性能指標非常理想,基本上達到或者超過老牌商業系統VxWorks。值得一提的是RTEMS在使用了Pthread庫後,RTEMS的性能有所下降。但是最差的情況也不會比RtLinux差。但讓人欣喜的是,目前Pthread庫的性能已經有了不少改善,詳情可以參考RTEMS的郵件列表。
既然我把Rtems叫做嵌入式系統裏面的老大哥,它支持的CPU類型自然是非常多的,可以說只要是GCC支持的,RTEMS就可以支持。其中值得一提的是一下的CPU
- intel的i386,i960
- Hitachi的H8/300和SH系列
- Motorola的MC68xxx
- MIPS R46x0
- OPEN CORE的OR32
- PowerPC系列
- SPARC系列
- ARM系列
- AMD 29K
- HP PA-RISC
這些系列是比較成熟的工業級CPU,RTEMS在這些產品上面已經有多年的應用,所以對這些CPU支持的特別好。同時隨着ARM和DSP的流行,RTEMS也在幾年前支持了多種DSP和多個系列的ARM(ARM只是一個核心,實際的ARM芯片有上千種,一個操作系統不可能支持全部的ARM芯片)。