??? 摘? 要: 介紹在星載" title="星載">星載計算機中應用實時操作系統(tǒng)" title="實時操作系統(tǒng)">實時操作系統(tǒng)的兩種方法:使用一種源碼開放的RTOS——RTEMS和自主開發(fā)RTOS,,并對兩種方法進行比較,。
??? 關鍵詞: 實時操作系統(tǒng)? 星載計算機? RTOS
?
??? 隨著我國航天技術的不斷發(fā)展,,越來越多的衛(wèi)星應用在通訊,、資源探測,、遙感,、氣象,、對地觀察等領域,。衛(wèi)星的功能越來越強,,對星務管理和有效載荷控制的星載計算機提出了更高的要求。星載計算機軟硬件系統(tǒng)日趨復雜,,傳統(tǒng)的星載計算機軟硬件設計方法,,特別是軟件的設計方法和開發(fā)手段已逐漸不適應這種要求。引入實時操作系統(tǒng)(RTOS)能夠有效地解決這些問題,。RTOS把任務管理調度,、任務間通信、內存管理等系統(tǒng)功能以函數(shù)調用的方式提供給用戶,,使用戶能夠將精力放在應用程序的開發(fā)上,,有助于星載軟件的通用化和模塊化設計,縮短軟件產品的研制周期,,提高星載軟件的可靠性,。
??? RTOS已經(jīng)成功運用在包括航天在內的許多嵌入式領域,如SJ-5小衛(wèi)星就成功應用了pSOS操作系統(tǒng),。但這種無法獲得源碼的操作系統(tǒng),,無法確定其安全性。因此應該選用源碼開放的RTOS或者自己獨立設計一種適合自身系統(tǒng)的RTOS,。本文將介紹一種適合于航天應用,,特別是面向關鍵任務(Critical Oriented)的源碼開放的RTOS——RTEMS;探索自己開發(fā)RTOS的設計方法,,并對兩種方案進行比較,。
1 星載計算機與星載操作系統(tǒng)的特點
??? 星載計算機是RTOS運行的硬件環(huán)境,了解其特點對于RTOS的選用和設計將更有針對性,。星載計算機主要用于衛(wèi)星的星務管理,、數(shù)據(jù)處理、姿態(tài)控制以及對有效載荷進行控制等,。根據(jù)空間環(huán)境,、可靠性、安全性,、壽命,、功耗,、重量等方面的要求,星載計算機應具有如下特點:
??? ·硬件資源有限,,受功耗,、尺寸的限制,星載計算機只有有限的內存空間,;
??? ·CPU型號多樣,,但不屬于通用型CPU,配套的調試工具少,。從8位的8031到16位的1750A,、8086,到32位的ERC32,、80X86,,不同的型號任務,不同的研制單位采用不同的CPU型號,;
??? ·需要考慮空間抗輻射能力,,必須考慮單粒子翻轉(SEU)和單粒子鎖定(SEL)對星載計算機的影響;
??? ·對安全性與可靠性要求高,;
??? ·需要具有在軌可編程功能,,對在地面考慮不周和出現(xiàn)意外情況時,能有所補救,。
??? 針對星載計算機的這些特點,,星載操作系統(tǒng)也具有如下特征:
??? ·微內核,,由于硬件資源有限,,因此星載RTOS必須做成微內核的操作系統(tǒng);
??? ·可裁減,,能夠根據(jù)不同的應用對操作系統(tǒng)進行不同的配置,,做到量體裁衣,也能更充分地利用硬件資源,,減少軟件多余物,;
??? ·強實時性" title="實時性">實時性,星載系統(tǒng)都是強實時系統(tǒng),,對實時性要求很高,;
??? ·高穩(wěn)定性與高可靠性;
??? ·代碼可固化,,在現(xiàn)在的星載計算機中仍然采用PROM對代碼進行固化,,這就要求星載RTOS必須是代碼可固化的。
2 采用RTEMS作為星載實時操作系統(tǒng)
2.1 RTEMS實時操作系統(tǒng)
??? RTEMS(Real-Time Executive for Multiprocessor Systems)實時操作系統(tǒng)最初是美國軍方為了實時導彈系統(tǒng)而開發(fā)的,。當時RTEMS的全稱是:Real-Time Executive for Missile Systems,。隨著該系統(tǒng)功能的逐步完善,,應用范圍也從Missile擴大到Military,再到Multiprocessor,,而形成現(xiàn)在的RTEMS,。RTEMS從1988年開始開發(fā),并于1999年開始對外開放源代碼,,并由OAR公司進行維護和升級?,F(xiàn)在最新版本為4.6.0,在OAR的網(wǎng)站(www.oarcorp.com)上可以下載到相關資料,。RTEMS由于具有開放源代碼的優(yōu)勢,,以及能與最優(yōu)秀的商業(yè)RTOS相媲美的性能,使得它最適合應用到星載計算機中,。RTEMS有如下特點:
??? ·支持多處理器,;
??? ·支持事件驅動和基于優(yōu)先級的多任務" title="多任務">多任務實時系統(tǒng);
??? ·支持優(yōu)先級同級調度,,支持單調速率(RMS)算法,;
??? ·支持多種任務間通信與同步方法;
??? ·支持中斷管理,;
??? ·支持動態(tài)內存分配與管理,;
??? ·支持符合POSIX標準的文件系統(tǒng);
??? ·支持多種網(wǎng)絡協(xié)議,,RTEMS帶有完整的TCP/IP協(xié)議棧,,具有強大的網(wǎng)絡功能;
??? ·RTEMS提供了符合POSIX1003.1b標準,,以及ITRON規(guī)范的API接口,;
??? ·RTEMS支持C/Ada語言;
??? ·RTEMS現(xiàn)在能支持包括ERC32(歐空局用于航天項目的CPU)在內的11種類型的CPU(包括Motorola MC68K系列,、ColdFire,、Hitachi SH、intel i386,、i960,、MIPS、PowerPC,、SPARC,、AMD A29K、HP PA-RISC),。
2.2 RTEMS的使用與開發(fā)方法
??? RTEMS的開發(fā)工具采用GNU的相關開發(fā)工具,,但需要打上RTEMS的補丁。如編譯器采用GCC,,調試工具采用GDB,。
??? 用戶編寫應用程序,,就是根據(jù)RTEMS提供的系統(tǒng)服務,通過API調用編寫任務程序,。RTEMS提供的系統(tǒng)服務相當豐富,,包括:任務管理、中斷管理,、時鐘管理,、定時器管理、信號量" title="信號量">信號量服務,、消息服務,、事件服務、信號服務,、內存分區(qū)(Partition)與區(qū)域(Region)管理,、雙口內存管理、I/O管理以及多任務調度等,。
??? 當需要將開發(fā)完成的程序向硬件板卡下載時,,還需要修改BSP板級支持包文件。BSP部分是與硬件相關的,,把BSP作為單獨的一部分是為了使RTEMS具有更好的可移植性,。因為相同的代碼,加上不同的BSP就可以應用到不同的CPU板上,。
??? 在調試程序時,,可以先把串口打通,這樣可以方便下載程序,,也可以利用GDB工具或者它的圖形界面方式DDD調試程序,。方便軟件的開發(fā)與調試。
??? 采用RTEMS操作系統(tǒng)的開發(fā)方法,,可以不用關心操作系統(tǒng)內部如何實現(xiàn)多任務之間的協(xié)調工作等RTOS具體的技術細節(jié),,只需要按照RTOS提供的API調用系統(tǒng)服務即可,。能夠充分利用成熟的技術,,快速開發(fā)星載軟件。但也有一定局限性,,RTEMS是屬于比較復雜的RTOS,,至少需要60KB左右的內存空間才能使系統(tǒng)運轉起來。因此對硬件要求相對苛刻一些,。而且有些CPU,,RTEMS還不支持,如國內在航天領域常用的1750A CPU,,RTEMS就不支持,。
??? 因此,,使用RTEMS有一定的局限性,當RTEMS不適合使用時,,可以考慮自行研制星載實時操作系統(tǒng),。下面以筆者開發(fā)的SAR-RTOS為例介紹星載實時操作系統(tǒng)的設計。
3 星載實時操作系統(tǒng)的設計
3.1實時操作系統(tǒng)內核的原理
??? 實時操作系統(tǒng)(RTOS)的核心是其內核,。筆者認為:通用操作系統(tǒng)的本質特點是硬件資源的管理者,,而RTOS的本質特點是引入了多任務和實時性的保證。當然引入多任務也是提高實時性的一種方法,。實時性的保證主要是靠任務調度方法和任務調度時機來決定,。引入多任務相應地帶來了任務競爭與同步、任務的切換等問題,。而這些問題在現(xiàn)代操作系統(tǒng)理論里已經(jīng)有了比較完備的解決方案,。
??? 實時操作系統(tǒng)內核原理,概括起來就是:引入了多任務,,并且為每個任務分配自己的堆??臻g,由任務調度器來決定讓哪個任務獲得CPU,。被掛起的任務把當前的CPU狀態(tài)保存在自己的堆棧區(qū)中,,獲得CPU的任務把它被掛起時保存的CPU寄存器從堆棧區(qū)中恢復,這樣新任務就從掛起時的狀態(tài)重新執(zhí)行,,從而完成了一次任務切換,。而信號量、消息隊列,、郵箱,、事件等系統(tǒng)提供的服務是為了解決多任務間對資源的競爭以及任務間的通信和同步。它們的共同點是從實現(xiàn)的角度,,有較為復雜的數(shù)據(jù)結構作支撐,,而對于用戶來講用法很簡單。例如信號量(Semaphore),,建立好(Create)后,,對其進行的操作就只有等信號(Pend)和發(fā)信號(Post)。
3.2 星載實時操作系統(tǒng)的設計要素
??? (1)總體設計
??? 星載RTOS的設計屬于復雜的軟件設計,,因此應該按照軟件工程規(guī)定的V型模型的開發(fā)方法實施開發(fā),。在總體設計中,應確定操作系統(tǒng)的結構,、支持的任務數(shù),、采用的調度方案、提供哪些系統(tǒng)服務等問題。在SAR-RTOS的體系結構設計中采用了將整體式和客戶/服務器模型結合的方法,。將它定義為四個層次:硬件層,、硬件接口層、OS層和應用層,,如圖1所示,。
?
??? (2)任務調度
??? 為了保證系統(tǒng)的實時性,可以采用基于優(yōu)先級的搶占式調度,,也就是一旦更高優(yōu)先級的任務就緒,,就能獲得CPU的使用權,使任務級響應時間最短,。SAR-RTOS中就是采用了這種調度方案,,調度時間確定、速度快,、實時性好,。
??? SAR-RTOS中關于任務管理的實現(xiàn)方法為:考慮到星載系統(tǒng)的ROM和RAM資源有限,為了保證SAR-RTOS的微內核性,,將其設計為最多能支持64個任務,。給每個任務賦予不同的優(yōu)先級,以優(yōu)先級為基礎建立任務就緒表,。當某個任務就緒時,,將就緒表中相應位置位,執(zhí)行任務調度時按照優(yōu)先級矢量位圖算法查找任務就緒表,,找出最高優(yōu)先級任務,,執(zhí)行任務切換。
??? 任務切換需要完成以下工作,,但需要注意的是執(zhí)行任務切換屬于臨界區(qū)代碼(不可被中斷),,必須關中斷,切換完成后再開中斷:
??? ·判斷需要調度的任務是否是當前正在運行的任務,,如果是就不切換,,避免不必要的切換,縮短CPU執(zhí)行時間,;
??? ·將被掛起的任務CPU寄存器壓入堆棧,;
??? ·將當前堆棧指針保存在即將掛起任務的任務控制塊中;
??? ·把高優(yōu)先級任務的CPU寄存器從堆棧中恢復,;
??? ·將高優(yōu)先級任務的任務控制塊中保存的堆棧指針恢復,;
??? ·執(zhí)行中斷返回指令,讓高優(yōu)先級任務運行,。
??? (3)任務管理
??? 任務在RTOS中通常同時作為系統(tǒng)調度和資源分配的最小單位,也是用戶編寫應用程序的基礎,對任務的管理是RTOS最基本的功能,。對任務的管理內容包括任務狀態(tài)的設計以及任務狀態(tài)變遷的實現(xiàn),。在SAR-RTOS中任務的狀態(tài)總共有四種,如表1所示,。
?
?
??? 任務狀態(tài)的變遷如圖2所示,。
?
??? (4)任務間通信與同步
??? 任務間的同步與通信是多任務操作系統(tǒng)都需要解決的問題。實時操作系統(tǒng)的核心就是要支持多任務的并發(fā)執(zhí)行,,相應地也就引入了任務與任務之間,、任務與中斷服務程序之間必須協(xié)調動作、相互配合的問題,。即常說的任務間的同步與通信問題,。所謂任務間的同步是指多個任務中發(fā)生的事件存在某種時序關系,必須協(xié)同動作,、相互配合,,以共同完成一個任務。任務間通信就是任務在運行時與別的任務進行信息交換,。其實,,同步本質上也是一種信息交換,是為了保證在正確的時間和條件下進行信息交換,,使任務間不會產生混亂,。在現(xiàn)代操作系統(tǒng)中已經(jīng)對任務的同步與通信有比較完備的解決辦法。信號量以及事件機制等都是RTOS常用的同步機制,,RTOS為任務間通信提供郵箱及消息隊列等服務,。
??? 在SAR-RTOS中,提供的任務間通信的服務包括:消息郵箱(Message Mailbox)和消息隊列(Message Queue),;提供的任務間同步的服務包括:信號量(Semaphore)和事件標志(Event Flag),。
??? (5)時間管理
??? RTOS由于其實時性,在系統(tǒng)運行過程中必須提供可靠的時間保證,,因此RTOS通常都在硬件定時器的基礎上提供系統(tǒng)時鐘服務,。每一個時鐘滴答(Tick)就是一次系統(tǒng)的脈動,指揮系統(tǒng)各部分協(xié)調工作,,因此定時管理是RTOS的基礎,。時間管理一般提供以下功能:
??? ·管理日歷時間和日期,有的系統(tǒng)也可以是相對時間,;
??? ·任務等候消息,、信號量、事件的超時時間或者任務長期占用CPU的超時時間,;
??? ·在預定時間間隔或指定時間到達后喚醒一個指定任務,。
??? (6)其它服務
??? 內存管理和I/O管理,以及中斷管理等服務不是系統(tǒng)必需的服務,可根據(jù)不同的應用需要決定是否提供上述服務,,在SAR-RTOS中上述三種服務都提供,。
??? (7)星載操作系統(tǒng)的可靠性措施
??? 星載軟件的可靠性設計是關鍵,通??梢圆捎萌缦麓胧?BR>??? ·將任務的重要參數(shù)以“三取二”的方式保存在任務控制塊中,;
??? ·通過任務的狀態(tài)檢查,對檢測不正常的任務進行相應的出錯處理,;
??? ·采用看門狗技術,,實現(xiàn)冷熱啟動的判定。當看門狗啟動后,,從程序跑飛的地方自動往下執(zhí)行,;
??? ·可以在內存中開辟一段系統(tǒng)內存區(qū),定時將CPU環(huán)境和主要參數(shù)放入其中,。
4 兩種方法的比較
??? 選用成熟的RTOS(如RTEMS)可以有效地縮短開發(fā)周期,,代碼質量可以得到保證;自行開發(fā)RTOS代碼需要經(jīng)過嚴格的測試,,難度相對更大,,開發(fā)周期更長。但可以根據(jù)需要增減相關功能,,有更大的靈活性,。如果使用RTEMS支持的CPU,那么推薦使用RTEMS作為星載軟件的開發(fā),,畢竟RTEMS經(jīng)過了十多年的驗證,,源代碼公開也有幾年的時間,這樣的代碼質量和可靠性應該是很高的,。如果由于條件限制不能使用RTEMS,,可以自行研制星載RTOS,但必須按照軟件工程的開發(fā)方法,,從設計,、編程到測試,每一項都需要嚴格把關,。
??? 把RTOS引入到星載計算機系統(tǒng),,能使星載軟件從傳統(tǒng)的單線程前后臺系統(tǒng)轉向多任務編程,不至于一個環(huán)節(jié)的失效就引起整個軟件的失效,,增加了可靠性,。另一方面,使用操作系統(tǒng)后,,使星載軟件的平臺軟件和功能軟件分離,,用戶可以集中精力編寫應用程序,,提高開發(fā)效率。而且如果使用相同的RTOS,,一些通用的模塊或任務可以在不同型號間繼承和使用,,提高軟件的復用性,。引入星載RTOS將帶來星載軟件開發(fā)的一次技術變革,。
參考文獻
1 Jane W. S. Liu. Real-Time Systems 1st ed. Prentice Hall,?Inc. 2003
2 OAR Corp.RTEMS Frequently Asked Questions.Edition 4.6.0 Pre4. 2003
3 OAR Corp. RTEMS C Users Guide. Edition 4.6.0 Pre4.2003
4 Jean J. Labrosse著. 邵貝貝譯.嵌入式實時操作系統(tǒng)uC/OS-II(第二版).北京:北京航空航天大學出版社,2003
5 王永恒,,廖明宏.小衛(wèi)星星載操作系統(tǒng)內核的設計. 計算機工程,,2002;11
6 張 凱.CX-1小衛(wèi)星實時多任務操作系統(tǒng)的設計.量子電子學報,2002;4
7 劉海濤.衛(wèi)星星載操作系統(tǒng)總體設計.微電子學與計算機,2000;6