姓名:屈彥維
學(xué)號(hào):16020610026
引自:http://lw.3edu.net/qrs/lw_46608.html
嵌牛導(dǎo)讀:介紹在星載計(jì)算機(jī)中應(yīng)用實(shí)時(shí)操作系統(tǒng)的兩種方式:使用一種源碼開(kāi)放的RTOS——RTEMS和自主開(kāi)發(fā)RTOS十饥,并對(duì)兩種方法進(jìn)行比較。
嵌牛鼻子:實(shí)時(shí)操作系統(tǒng) 星載計(jì)算機(jī) RTOS
嵌牛提問(wèn):如何實(shí)現(xiàn)實(shí)時(shí)操作系統(tǒng)在星載計(jì)算機(jī)中的應(yīng)用肥隆?
隨著我國(guó)航天技術(shù)的不斷發(fā)展,越來(lái)越多的衛(wèi)星應(yīng)用在通訊布持、資源探測(cè)筐眷、遙感肿孵、氣象澳眷、對(duì)地觀察等領(lǐng)域胡嘿。衛(wèi)星的功能越來(lái)越強(qiáng),對(duì)星務(wù)管理和有效載荷控制的星載計(jì)算機(jī)提出了更高的要求钳踊。星載計(jì)算機(jī)軟硬件系統(tǒng)日趨復(fù)雜衷敌,傳統(tǒng)的星載計(jì)算機(jī)軟硬件設(shè)計(jì)方法,特別是軟件的設(shè)計(jì)方法和開(kāi)發(fā)手段已逐漸不適應(yīng)這種要求箍土。引入實(shí)時(shí)操作系統(tǒng)(RTOS)能夠有效地解決這些問(wèn)題逢享。RTOS把任務(wù)管理調(diào)度、任務(wù)間通信吴藻、內(nèi)存管理等系統(tǒng)功能以函數(shù)調(diào)用的方式提供給用戶,使用戶能夠?qū)⒕Ψ旁趹?yīng)用程序的開(kāi)發(fā)上弓柱,有助于星載軟件通用化和模塊化設(shè)計(jì)沟堡,縮短軟件產(chǎn)品的研制周期,提高星載軟件 可靠性矢空。
RTOS已經(jīng)成功運(yùn)用在包括航天在內(nèi)的許多嵌入式領(lǐng)域航罗,如SJ-5小衛(wèi)星就成功應(yīng)用了pSOS操作系統(tǒng)。但這種無(wú)法獲得源碼的操作系統(tǒng)屁药,無(wú)法確定其安全性粥血。因此應(yīng)該選用源碼開(kāi)放的RTOS或者自己獨(dú)立設(shè)計(jì)一種適合自身系統(tǒng)的RTOS。本文將介紹一種適合于航天應(yīng)用酿箭,特別是面向關(guān)鍵任務(wù)(Critical Oriented)的源碼開(kāi)放的RTOS——RTEMS复亏;探索自己開(kāi)發(fā)RTOS設(shè)計(jì)方法,并對(duì)兩種方案進(jìn)行比較缭嫡。
1 星載計(jì)算機(jī)與星載操作系統(tǒng)的特點(diǎn)
星載計(jì)算機(jī)是RTOS運(yùn)行的硬件環(huán)境缔御,了解其特點(diǎn)對(duì)于RTOS的選用和設(shè)計(jì)將更有針對(duì)性。星載計(jì)算機(jī)主要用于衛(wèi)星的星務(wù)管理妇蛀、數(shù)據(jù)處理耕突、姿態(tài)控制以及對(duì)有效載荷進(jìn)行控制等。根據(jù)空間環(huán)境评架、可靠性眷茁、安全性、壽命纵诞、功耗上祈、重量等方面的要求,星載計(jì)算機(jī)應(yīng)具有如下特點(diǎn):
·硬件資源有限,受功耗雇逞、尺寸的限制荤懂,星載計(jì)算機(jī)只有有限的內(nèi)存空間;
·CPU型號(hào)多樣塘砸,但不屬于通用型CPU节仿,配套的調(diào)試工具少。從8位的8031到16位的1750A掉蔬、8086廊宪,到32位的ERC32、80X86女轿,不同的型號(hào)任務(wù)箭启,不同的研制單位采用不同的CPU型號(hào);
·需要考慮空間抗輻射能力蛉迹,必須考慮單粒子翻轉(zhuǎn)(SEU)和單粒子鎖定(SEL)對(duì)星載計(jì)算機(jī)的影響傅寡;
·對(duì)安全性與可靠性要求高;
·需要具有在軌可編程功能北救,對(duì)在地面考慮不周和出現(xiàn)意外情況時(shí)荐操,能有所補(bǔ)救。
針對(duì)星載計(jì)算機(jī)的這些特點(diǎn)珍策,星載操作系統(tǒng)也具有如下特征:
·微內(nèi)核托启,由于硬件資源有限,因此星載RTOS必須做成微內(nèi)核的操作系統(tǒng)攘宙;
*可裁減屯耸,能夠根據(jù)不同的應(yīng)用對(duì)操作系統(tǒng)進(jìn)行不同的配置,做到量體裁衣蹭劈,也能更充分地利用硬件資源疗绣,減少軟件多余物;
·強(qiáng)實(shí)時(shí)性链方,星載系統(tǒng)都是強(qiáng)實(shí)時(shí)系統(tǒng)持痰,對(duì)實(shí)現(xiàn)性要求很高;
·高穩(wěn)定性與高可靠性祟蚀;
·代碼可固化工窍,在現(xiàn)在的星載計(jì)算機(jī)中仍然采用PROM對(duì)代碼進(jìn)行固化,這就要求星載RTOS必須是代碼可固化的前酿。
2 采用RTEMS作為星載實(shí)時(shí)操作系統(tǒng)
2.1 RTEMS實(shí)時(shí)操作系統(tǒng)
RTEMS(Real-Time Executive for Multiprocessor Systems)實(shí)時(shí)操作系統(tǒng)最初是美國(guó)軍方為了實(shí)時(shí)導(dǎo)彈系統(tǒng)而開(kāi)發(fā)的患雏。當(dāng)時(shí)RTEMS的全稱是:Real-Time Executive for Missile Systems。隨著該系統(tǒng)功能的逐步完善罢维,應(yīng)用范圍也從Missile擴(kuò)大到Military淹仑,再到Multiprocessor,而形成現(xiàn)在的RTEMS。RTEMS從1993年開(kāi)始開(kāi)發(fā)匀借,并于1999年開(kāi)始地外開(kāi)放源代碼颜阐,并由OAR公司進(jìn)行維護(hù)和升級(jí)。現(xiàn)在最新版本為4.6.0吓肋,在OAR的網(wǎng)站(www.oarcorp.com)上可以下載到相關(guān)資源凳怨。RTEMS由于具有開(kāi)放源代碼的優(yōu)勢(shì),以及能與最優(yōu)秀的商業(yè)RTOS相的性能是鬼,使得它最適合應(yīng)用到星載計(jì)算機(jī)中肤舞。RTEMS有如下特點(diǎn):
·支持多處理器;
·支持事件驅(qū)動(dòng)和基于優(yōu)先級(jí)的多任務(wù)實(shí)時(shí)系統(tǒng)均蜜;
·支持優(yōu)先級(jí)同級(jí)調(diào)度李剖,支持單調(diào)速率(RMS)算法;
·支持多種任務(wù)間通信與同步方法囤耳;
·支持中斷管理篙顺;
·支持動(dòng)態(tài)內(nèi)存分配與管理;
·支持符合POSIX標(biāo)準(zhǔn)的文件系統(tǒng)充择;
·支持多種網(wǎng)絡(luò)協(xié)議慰安,RTEMS帶有完整的TCP/IP協(xié)議棧,具有強(qiáng)大的網(wǎng)絡(luò)功能聪铺;
·RTEMS提供了符合POSIX1003.1b標(biāo)準(zhǔn),以及ITRON規(guī)范的API接口萄窜;
·RTEMS支持C/Ada語(yǔ)言铃剔;
·RTEMS現(xiàn)在能支持包括ERC32(歐空局用于航天項(xiàng)目的CPU)在內(nèi)的11種類(lèi)型的CPU(包括Motorola MC68K系列、ColdFire查刻、Hitachi SH键兜、intel i386、i960穗泵、MIPS普气、PowerPC、SPARC佃延、AMD现诀、A29K、HP PA-RISC)履肃。
2.2 RTEMS的使用與開(kāi)發(fā)方法
RTEMS的開(kāi)發(fā)工具采用GNU的相關(guān)開(kāi)發(fā)工具仔沿,但需要打上RTEMS的補(bǔ)丁。如編譯器采用GCC尺棋,調(diào)試工具采用GDB封锉。
用戶編寫(xiě)應(yīng)用程序,就是根據(jù)RTEMS提供的系統(tǒng)服務(wù),通過(guò)API調(diào)用編寫(xiě)任務(wù)程序成福。RTEMS提供的系統(tǒng)服務(wù)相當(dāng)豐富碾局,包括:任務(wù)管理、中斷管理奴艾、時(shí)鐘管理净当、定時(shí)器管理、信號(hào)量服務(wù)握侧、消息服務(wù)蚯瞧、事件服務(wù)、信號(hào)服務(wù)品擎、內(nèi)存分區(qū)(Partition)與區(qū)域(Region)管理埋合、雙口內(nèi)存管理、I/O管理以及多任務(wù)調(diào)度等萄传。
當(dāng)需要將開(kāi)發(fā)完成的程序向硬件板卡下載時(shí)甚颂,還需要修改BSP板級(jí)支持包文件。BSP部分是與硬件相關(guān)的秀菱,把BSP作為單獨(dú)的一部分是為了使RTEMS具有更好的可移植性振诬。因?yàn)橄嗤拇a,加上不同的BSP就可以應(yīng)用到不同的CPU板上衍菱。
在調(diào)試程序時(shí)赶么,可以先把串口打通,這樣可以方便下載程序脊串,也可以利用GDB工具或者它的圖形界面方式DDD調(diào)試程序辫呻。方便軟件的開(kāi)發(fā)與調(diào)試。
采用RTEMS操作系統(tǒng)的開(kāi)發(fā)方法琼锋,可以不用關(guān)心操作系統(tǒng)內(nèi)部如何實(shí)現(xiàn)多任務(wù)之間的協(xié)調(diào)工作等RTOS具體的技術(shù)細(xì)節(jié)放闺,只需要按照RTOS提供的API調(diào)用系統(tǒng)服務(wù)即可。能夠充分利用成熟的技術(shù)缕坎,快速開(kāi)發(fā)星載軟件怖侦。但也有一定局限性,RTEMS是屬于比較復(fù)雜的RTOS谜叹,至少需要60KB左右的內(nèi)存空間才能使系統(tǒng)運(yùn)轉(zhuǎn)起來(lái)匾寝。因此對(duì)硬件要求相對(duì)苛刻一些。而且有些CPU叉谜,RTEMS還不支持旗吁,如國(guó)內(nèi)在航天領(lǐng)域常用的1750ACPU,RTEMS就不不支持停局。
因此很钓,使用RTEMS有一定的局限性香府,當(dāng)RTEMS不適合使用時(shí),可以考慮自行研制星載實(shí)時(shí)操作系統(tǒng)码倦。下面以筆者開(kāi)發(fā)的SAR-RTOS為例介紹星載實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)企孩。
3 星載實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)
3.1 實(shí)時(shí)操作系統(tǒng)內(nèi)核的原理
實(shí)時(shí)操作系統(tǒng)(RTOS)的核心是其內(nèi)核。筆者認(rèn)為:通用操作系統(tǒng)的本質(zhì)特點(diǎn)是硬件資源的管理者袁稽,而RTOS的本質(zhì)特點(diǎn)是引入了多任務(wù)和實(shí)時(shí)性的保證勿璃。當(dāng)然引入多任務(wù)也是提高實(shí)時(shí)性的一種方法。實(shí)時(shí)性的保證主要是靠任務(wù)調(diào)度方法和任務(wù)調(diào)度時(shí)機(jī)來(lái)決定推汽。引入多任務(wù)相應(yīng)地帶來(lái)了任務(wù)競(jìng)爭(zhēng)與同步补疑、任務(wù)的切換等問(wèn)題。而這些問(wèn)題在現(xiàn)代操作系統(tǒng)理論里已經(jīng)有了比較完備的解決方案歹撒。
實(shí)時(shí)操作系統(tǒng)內(nèi)核原理莲组,概括起來(lái)就是:引入了多任務(wù),并且為每個(gè)任務(wù)分配自己的堆椗玻空間锹杈,由任務(wù)調(diào)度器來(lái)決定讓哪個(gè)任務(wù)獲得CPU。被掛起的任務(wù)把當(dāng)前的CPU狀態(tài)保存在自己的堆棧區(qū)中迈着,獲得CPU的任務(wù)把它被掛起時(shí)保存的CPU寄存器從堆棧區(qū)中恢復(fù)竭望,這樣新任務(wù)就從掛起時(shí)的狀態(tài)重新執(zhí)行,從而完成了一次任務(wù)切換裕菠。而信號(hào)量咬清、消息隊(duì)列、郵箱奴潘、事件等系統(tǒng)提供的服務(wù)是為了解決多任務(wù)間對(duì)資源的競(jìng)爭(zhēng)以及任務(wù)間的通信和同步枫振。它們的共同點(diǎn)是從實(shí)現(xiàn)的角度,有效為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)作支撐萤彩,而對(duì)于用戶來(lái)講用法很簡(jiǎn)單。例如信號(hào)量(Semaphore)斧拍,建立好(Create)后雀扶,對(duì)其進(jìn)行的操作就只有等信號(hào)(Pend)和發(fā)展信號(hào)(Post)。
3.2 星載實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)要素
(1)總體設(shè)計(jì)
星載RTOS的設(shè)計(jì)屬于復(fù)雜的軟件設(shè)計(jì)肆汹,因此應(yīng)該按照軟件工程規(guī)定的V型模型的開(kāi)發(fā)方法實(shí)話開(kāi)發(fā)愚墓。在總體設(shè)計(jì)中,應(yīng)確定操作系統(tǒng)的結(jié)構(gòu)昂勉、支持的任務(wù)數(shù)浪册、采用的調(diào)度方案、提供哪些系統(tǒng)服務(wù)等問(wèn)題岗照。在SARRTOS的體系結(jié)構(gòu)設(shè)計(jì)中采用了將整體式和客戶/服務(wù)器模型結(jié)合的方法村象。將它定義為四個(gè)層次:硬件層笆环、硬件接口層、OS層和應(yīng)用層厚者,如圖1所示躁劣。
(2)任務(wù)調(diào)度
為了保證系統(tǒng)的實(shí)時(shí)性,可以采用基于優(yōu)先級(jí)的搶占式調(diào)度库菲,也就是一旦更高優(yōu)先級(jí)的任務(wù)就緒账忘,就能獲得CPU的使用權(quán),使任務(wù)響應(yīng)時(shí)間最短熙宇。SAR-RTOS中就是采和了這種調(diào)度方案鳖擒,調(diào)度時(shí)間確定、速度快烫止、實(shí)時(shí)性好蒋荚。
SAR-RTOS中關(guān)于任務(wù)管理的實(shí)現(xiàn)方法為:考慮到星載系統(tǒng)的ROM和RAM資源有限,為了保證SAR-RTOS的微內(nèi)核性烈拒,將其設(shè)計(jì)為最多能支持64個(gè)任務(wù)圆裕。給每個(gè)任務(wù)賦予不同的優(yōu)先級(jí),以優(yōu)先級(jí)為基礎(chǔ)建立任務(wù)就緒表荆几。當(dāng)某個(gè)任務(wù)就緒時(shí)吓妆,將就緒表中相應(yīng)位置位,執(zhí)行任務(wù)調(diào)度時(shí)按照優(yōu)先級(jí)矢量位圖算法查找任務(wù)就緒表吨铸,找出最高優(yōu)先級(jí)任務(wù)行拢,執(zhí)行任務(wù)切換。
任務(wù)切換需要完成以下工作诞吱,但需要注意的是執(zhí)行任務(wù)切換屬于臨界區(qū)代碼(不可被中斷)舟奠,必須關(guān)中斷,切抽象完成后再開(kāi)中斷:
*判斷需要調(diào)度的任務(wù)是否是當(dāng)前正在運(yùn)行的任務(wù)房维,如果是就不切換沼瘫,避免不必要的切換,縮短CPU執(zhí)行時(shí)間咙俩;
*將被掛起的任務(wù)CPU寄存器壓入堆棧耿戚;
*將當(dāng)前堆棧指針保存在即將掛起任務(wù)的任務(wù)控制塊中;
*把高優(yōu)先級(jí)任務(wù)的CPU寄存器從堆棧中恢復(fù)阿趁;
*將高優(yōu)先級(jí)任務(wù)的任務(wù)控制塊中保存的堆棧指針恢復(fù)膜蛔;
*執(zhí)行中斷返回指令,讓高優(yōu)先級(jí)任務(wù)運(yùn)行脖阵。
(3)任務(wù)管理
任務(wù)在RTOS中通常同時(shí)作為系統(tǒng)調(diào)度和資源分配的最小單位皂股,也是用戶編寫(xiě)應(yīng)用程序的基礎(chǔ),對(duì)任務(wù)的管理是RTOS最基本的功能命黔。對(duì)任務(wù)的管理內(nèi)容包括任務(wù)狀態(tài)的設(shè)計(jì)以及任務(wù)狀態(tài)變遷的實(shí)現(xiàn)呜呐。在SAR-RTOS中任務(wù)的狀態(tài)總共有四種就斤,如表1所示。
表1 SAR-RTOS中的任務(wù)狀態(tài)
運(yùn)行態(tài)(Running)任務(wù)占有CPU卵史,并得以執(zhí)行的狀態(tài)
就緒態(tài)(Ready)任務(wù)已經(jīng)具備運(yùn)行的條件战转,等待內(nèi)核調(diào)度
阻塞態(tài)(Block)任務(wù)由于某種原因被迫放棄CPU的使用
休眠態(tài)(Dormant)任務(wù)不具備爭(zhēng)取CPU的使用資格的狀態(tài),也就是說(shuō)不會(huì)被調(diào)度
任務(wù)狀態(tài)的變遷如圖2所示以躯。
(4)任務(wù)間通信與同步
任務(wù)間的同步與通信是多任務(wù)操作系統(tǒng)都需要解決的問(wèn)題槐秧。實(shí)時(shí)操作系統(tǒng)的核心就是要支持多任務(wù)的并發(fā)執(zhí)行,相應(yīng)地也就引入了任務(wù)與任務(wù)之間忧设、任務(wù)與中斷服務(wù)程序之間必須協(xié)調(diào)動(dòng)作刁标、相互配合的問(wèn)題。即常說(shuō)的任務(wù)間的同步與通信問(wèn)題址晕。所謂任務(wù)間的同步是指多個(gè)任務(wù)中發(fā)生的事件存在某種時(shí)序關(guān)系膀懈,必須協(xié)同動(dòng)作、相互配合谨垃,以共同完成一個(gè)任務(wù)启搂。任務(wù)間通信就是任務(wù)在運(yùn)行時(shí)與別的任務(wù)進(jìn)行信息交換。其實(shí)刘陶,同步本質(zhì)上也是一種信息交換胳赌,是為了保證在正確的時(shí)間和條件下進(jìn)行信息交換,使任務(wù)間不會(huì)產(chǎn)生混亂匙隔。在現(xiàn)場(chǎng)操作系統(tǒng)中已經(jīng)對(duì)任務(wù)的同步與通信有比較完備的解決辦法疑苫。信號(hào)量以及事件機(jī)制等都是RTOS常用的同步機(jī)制,RTOS為任務(wù)間通信提供郵箱及消息隊(duì)列等服務(wù)纷责。
在SAR-RTOS中捍掺,提供的任務(wù)間通信的服務(wù)包括:消息郵箱(Message Mailbox)和消息隊(duì)列(Message Queue);提供的任務(wù)間同步的服務(wù)包括:信號(hào)量(Semaphore)和事件標(biāo)志(Event Flag)。
(5)時(shí)間管理
RTOS由于其實(shí)時(shí)性再膳,在系統(tǒng)運(yùn)行過(guò)程中必須提供可靠的時(shí)間保證挺勿,因此RTOS通常都在硬件定時(shí)器的基礎(chǔ)上提供系統(tǒng)時(shí)鐘服務(wù)。每一個(gè)時(shí)鐘滴答(Tick)就是一次系統(tǒng)的脈動(dòng)喂柒,指揮系統(tǒng)各部分協(xié)調(diào)工作满钟,因此定時(shí)管理是RTOS的基礎(chǔ)。時(shí)間管理一般提供以下功能:
*管理日歷時(shí)間和日期胳喷,有的系統(tǒng)也可以是相對(duì)時(shí)間;
*任務(wù)等候消息夭织、信號(hào)量吭露、事件的超時(shí)時(shí)間或者任務(wù)長(zhǎng)期占用CPU的超時(shí)時(shí)間;
*在預(yù)定時(shí)間間隔或指定時(shí)間到達(dá)后喚醒一個(gè)指定任務(wù)尊惰。
(6)其它服務(wù)
內(nèi)存管理和I/O管理讲竿,以及中斷管理等服務(wù)不是系統(tǒng)必需的服務(wù)泥兰,可根據(jù)不同的應(yīng)用需要決定是否提供上述服務(wù),在SAR-RTOS中上述三種服務(wù)都提供题禀。
(7)星載操作系統(tǒng)的可靠性措施
星載軟件的可靠性設(shè)計(jì)是關(guān)鍵鞋诗,通常可以采用如下措施:
*將任務(wù)的重要參數(shù)以“三取二”的方式保存在任務(wù)控制塊中迈嘹;
*通過(guò)任務(wù)的狀態(tài)檢查削彬,對(duì)檢測(cè)不正常的任務(wù)進(jìn)行相應(yīng)的出錯(cuò)處理;
*采用看門(mén)狗技術(shù)秀仲,實(shí)現(xiàn)冷熱啟動(dòng)的判定融痛。當(dāng)盾門(mén)狗啟動(dòng)后,從程序跑飛的地方自動(dòng)往下執(zhí)行神僵;
*可以在內(nèi)存中開(kāi)辟一段系統(tǒng)內(nèi)存區(qū)雁刷,定時(shí)將CPU環(huán)境和主要參數(shù)放入其中。
4 兩種方法的比較
選用成熟的RTOS(如RTEMS)可以有效地縮短開(kāi)發(fā)周期保礼,代碼質(zhì)量可以得到保證沛励;自行開(kāi)發(fā)RTOS代碼需要經(jīng)過(guò)嚴(yán)格的測(cè)試,難度相對(duì)更大炮障,開(kāi)發(fā)周期更長(zhǎng)目派。但可以根據(jù)需要增減相關(guān)功能,有更大的靈活性铝阐。如果使用RTEMS支持的CPU址貌,那么推薦使用RTEMS作為星載軟件的開(kāi)發(fā),畢竟RTEMS經(jīng)過(guò)了十多年的驗(yàn)證徘键,源代碼公開(kāi)也有幾年的時(shí)間练对,這樣的代碼質(zhì)量和可靠性應(yīng)該是很高的。如果由于條件限制不能使用RTEMS吹害,可以自行研制星載RTOS螟凭,但必須按照軟件工程的開(kāi)發(fā)方法,從設(shè)計(jì)它呀、編程到測(cè)試螺男,每一項(xiàng)都需要嚴(yán)格把關(guān)。
把RTOS引腳到星載計(jì)算機(jī)系統(tǒng)纵穿,能使星載軟件從傳統(tǒng)的單線程前后臺(tái)系統(tǒng)轉(zhuǎn)向多任務(wù)編程下隧,不至于一個(gè)環(huán)節(jié)的失效就引起整個(gè)軟件的失效,增加了可靠性谓媒。另一方面淆院,使用操作系統(tǒng)后,使星載軟件的平臺(tái)軟件和功能軟件分離句惯,用戶可以集中精力編寫(xiě)應(yīng)用程序土辩,提高開(kāi)發(fā)效率支救。而且如果使用相同的RTOS,一些通用的模塊或任務(wù)可以在不同型號(hào)繼承和使用拷淘,提高軟件的復(fù)用性各墨。引入 星載RTOS將帶來(lái)星載軟件開(kāi)發(fā)的一次技術(shù)變革。