文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.170141
中文引用格式: 趙建坤,,張大松,,胡愛(ài)蘭,等. 基于VxWorks的星務(wù)管理系統(tǒng)軟件多任務(wù)實(shí)時(shí)性調(diào)度設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2017,,43(12):116-119.
英文引用格式: Zhao Jiankun,Zhang Dasong,,Hu Ailan,,et al. Design of satellite management system software of multi task real time scheduling based on VxWorks[J].Application of Electronic Technique,2017,,43(12):116-119.
0 引言
隨著科學(xué)技術(shù)的不斷進(jìn)步,實(shí)時(shí)嵌入式操作系統(tǒng)得以廣泛應(yīng)用,,而VxWorks操作系統(tǒng)在絕大多數(shù)的嵌入式操作系統(tǒng)中具有良好的實(shí)時(shí)性效果,,它于1983年由美國(guó)的WindRiver公司設(shè)計(jì)出來(lái),。正是因?yàn)閂xWorks操作系統(tǒng)的高實(shí)時(shí)性的特性,,它被廣泛應(yīng)用在通信、軍事,、航空,、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中[1]。
目前,,對(duì)于航天事業(yè)的發(fā)展不斷深入,,對(duì)星務(wù)管理系統(tǒng)軟件的功能越來(lái)越多,越來(lái)越復(fù)雜,,同時(shí)性能要求也越來(lái)越高,,而在這樣的復(fù)雜多任務(wù)的情況下,同樣需要保證任務(wù)處理的實(shí)時(shí)性[2],。
為此,,本文以VxWorks操作系統(tǒng)為核心,分析星務(wù)管理系統(tǒng)軟件的基本功能任務(wù),結(jié)合VxWorks操作系統(tǒng)高效的實(shí)時(shí)性多任務(wù)調(diào)度,、中斷管理以及實(shí)時(shí)的系統(tǒng)資源等特點(diǎn),,設(shè)計(jì)討論在諸多星務(wù)任務(wù)情況下,確保每個(gè)任務(wù)能夠被合理調(diào)度,,提高星務(wù)管理系統(tǒng)軟件的高可實(shí)時(shí)性要求,。
1 VxWorks的多任務(wù)特性
VxWorks操作系統(tǒng)采用微內(nèi)核的設(shè)計(jì)風(fēng)格,由微內(nèi)核提供基本的多任務(wù)環(huán)境及對(duì)多任務(wù)進(jìn)行管理[3],。在VxWorks操作系統(tǒng)中,,每個(gè)任務(wù)都會(huì)具有就緒狀態(tài)、掛起狀態(tài),、延遲狀態(tài),、休眠狀態(tài)4種基本的狀態(tài)[4]。
這些任務(wù)的狀態(tài)會(huì)隨著調(diào)用相應(yīng)的系統(tǒng)函數(shù)發(fā)生從當(dāng)前狀態(tài)跳轉(zhuǎn)為相應(yīng)的下一個(gè)狀態(tài),,在任何狀態(tài)下的任務(wù)也都能夠被刪除,。
VxWorks提供了兩種任務(wù)調(diào)度算法:基于任務(wù)優(yōu)先級(jí)的搶占式調(diào)度算法、基于時(shí)間片輪轉(zhuǎn)的調(diào)度算法,。對(duì)于具有多任務(wù)環(huán)境下的系統(tǒng),,必須采用以上的其中一種調(diào)度算法,并將CPU的資源賦給處于就緒狀態(tài)的任務(wù),。而對(duì)于高實(shí)時(shí)性要求的系統(tǒng),,若能將以上兩種任務(wù)調(diào)度的協(xié)調(diào)配合很好地實(shí)現(xiàn)在系統(tǒng)中,系統(tǒng)的實(shí)時(shí)性便能得到更好的保證,。時(shí)間片輪轉(zhuǎn)的調(diào)度及優(yōu)先級(jí)的搶占式調(diào)度結(jié)合實(shí)例如圖1所示,。
圖1中任務(wù)1和任務(wù)2的優(yōu)先級(jí)相同,任務(wù)3的優(yōu)先級(jí)高于任務(wù)1和任務(wù)2,,任務(wù)4的優(yōu)先級(jí)高于任務(wù)3,。任務(wù)1和任務(wù)2按照基于時(shí)間片輪轉(zhuǎn)的調(diào)度算法根據(jù)時(shí)間片的長(zhǎng)度輪詢占用CPU資源;當(dāng)任務(wù)3來(lái)到時(shí),,搶占了任務(wù)1的資源,,任務(wù)1被掛起,而任務(wù)3開始執(zhí)行,;當(dāng)任務(wù)4到來(lái)時(shí),,搶占了任務(wù)3的資源,任務(wù)3被掛起,,任務(wù)4開始執(zhí)行,;當(dāng)任務(wù)4執(zhí)行完畢后,任務(wù)3被喚醒繼續(xù)執(zhí)行,;當(dāng)任務(wù)3執(zhí)行完畢后,,任務(wù)1被喚醒并繼續(xù)執(zhí)行,。
2 星務(wù)管理系統(tǒng)軟件多任務(wù)設(shè)計(jì)
2.1 架構(gòu)分析
在復(fù)雜的星務(wù)管理系統(tǒng)軟件中,需要考慮軟件的復(fù)用性,、各個(gè)任務(wù)的內(nèi)聚性和耦合性,,從而保證星務(wù)管理系統(tǒng)軟件高可靠性[5]。為此,,結(jié)合VxWorks操作系統(tǒng)的特點(diǎn),,可將星務(wù)管理系統(tǒng)軟件分為4層:板級(jí)包驅(qū)動(dòng)層、系統(tǒng)內(nèi)核層,、由VxWorks提供的公共系統(tǒng)函數(shù)層以及應(yīng)用層,。
圖2為星務(wù)管理系統(tǒng)軟件的結(jié)構(gòu)圖。
圖2中,,板級(jí)包驅(qū)動(dòng)層提供與硬件接口的底層驅(qū)動(dòng)程序,,包括對(duì)中斷控制器的初始化、定時(shí)器的初始化,、串口的初始化等其他硬件的初始化,;系統(tǒng)內(nèi)核層是整個(gè)系統(tǒng)的核心層,它為多任務(wù)提供管理,、任務(wù)間切換,、調(diào)度分配CPU資源和對(duì)一些異常情況進(jìn)行處理;公共系統(tǒng)函數(shù)層則起到了很好中間層作用,,為應(yīng)用層訪問(wèn)系統(tǒng)內(nèi)核層提供了系統(tǒng)接口函數(shù),;應(yīng)用層實(shí)現(xiàn)復(fù)雜的任務(wù)處理,如:姿態(tài)控制任務(wù),、遙測(cè)控制任務(wù),、軌跡控制任務(wù)、載荷控制任務(wù),、溫度控制任務(wù)等,。
2.2 多任務(wù)調(diào)度
2.2.1 基于任務(wù)優(yōu)先級(jí)的搶占式調(diào)度設(shè)計(jì)
由第1節(jié)介紹有關(guān)VxWorks多任務(wù)特性的設(shè)計(jì)思想,根據(jù)星務(wù)管理系統(tǒng)軟件自身功能的需要,,對(duì)任務(wù)進(jìn)行合理有效的劃分和優(yōu)先級(jí)適當(dāng)?shù)脑O(shè)置,,可以較好地簡(jiǎn)化星務(wù)管理系統(tǒng)軟件的復(fù)雜度,,也可以增加星務(wù)管理系統(tǒng)軟件的穩(wěn)定性,。保證任務(wù)調(diào)度的正確性,則更好地保證了整個(gè)系統(tǒng)實(shí)時(shí)性[6],。
星務(wù)管理系統(tǒng)軟件按照設(shè)置周期性地運(yùn)行,,通過(guò)內(nèi)部總線和網(wǎng)絡(luò)接收內(nèi)部傳感器和外部指令控制單元的命令和數(shù)據(jù),經(jīng)分析可對(duì)相應(yīng)的任務(wù)進(jìn)行控制操作,。根據(jù)星務(wù)管理系統(tǒng)軟件各功能特點(diǎn),,本文對(duì)一部分基本任務(wù)進(jìn)行劃分,,各個(gè)任務(wù)的優(yōu)先級(jí)由高到低分別為:(1)看門狗定時(shí)器中斷處理任務(wù);(2)遙控接收分析數(shù)據(jù)任務(wù),;(3)飛行軌跡任務(wù),;(4)姿態(tài)控制任務(wù);(5)載荷控制任務(wù),;(6)遙測(cè)采集任務(wù),;(7)溫度控制任務(wù);(8)數(shù)據(jù)存取任務(wù),。
圖3為星務(wù)管理系統(tǒng)軟件任務(wù)運(yùn)行關(guān)系圖,。
圖3中,對(duì)于星務(wù)管理系統(tǒng)軟件的初始化任務(wù)也可視為父任務(wù),,由父任務(wù)創(chuàng)建各個(gè)任務(wù),。設(shè)計(jì)中看門狗任務(wù)的優(yōu)先級(jí)最高,這是為了保證系統(tǒng)在運(yùn)行中,,當(dāng)出現(xiàn)異常情況導(dǎo)致整個(gè)系統(tǒng)死機(jī)或者癱瘓時(shí),,看門狗中斷處理函數(shù)會(huì)被觸發(fā),令整個(gè)系統(tǒng)進(jìn)入重啟,,保證了整個(gè)系統(tǒng)的安全性,、可靠性;遙控接收分析數(shù)據(jù)任務(wù)的優(yōu)先級(jí)要高于看門狗中中斷處理任務(wù)以外的其他任務(wù),,遙控接收分析數(shù)據(jù)的結(jié)果將會(huì)影響到其他任務(wù)內(nèi)的執(zhí)行流程,;數(shù)據(jù)存取任務(wù)的優(yōu)先級(jí)最低,因?yàn)槿魏稳蝿?wù)都可以搶占其CPU資源,,所以需要為數(shù)據(jù)存取任務(wù)開辟一段較大的數(shù)據(jù)存儲(chǔ)緩存,,保證當(dāng)被高于數(shù)據(jù)存取任務(wù)優(yōu)先級(jí)的任務(wù)搶占資源后,不會(huì)丟失需要存儲(chǔ)的數(shù)據(jù),,保證數(shù)據(jù)的完整性,、可靠性。
通過(guò)以上分析不難得出,,在對(duì)以上任務(wù)進(jìn)行時(shí)間片劃分時(shí),,對(duì)于看門狗任務(wù)以及遙控接收分析數(shù)據(jù)任務(wù)的時(shí)間片設(shè)置時(shí)間應(yīng)盡量短,而其他任務(wù)的時(shí)間片設(shè)置應(yīng)適當(dāng)合理,,進(jìn)而保證整個(gè)系統(tǒng)的實(shí)時(shí)性,。
2.2.2 基于時(shí)間片輪轉(zhuǎn)的調(diào)度設(shè)計(jì)
在沒(méi)有接收到指令要求改變衛(wèi)星姿態(tài),或者調(diào)整衛(wèi)星運(yùn)行軌跡時(shí),,姿態(tài)任務(wù)和軌跡任務(wù)應(yīng)當(dāng)會(huì)按照初始設(shè)定的姿態(tài)和軌跡執(zhí)行[7],,即這每個(gè)任務(wù)按照時(shí)間片輪轉(zhuǎn)方式進(jìn)行調(diào)度。
不同型號(hào)的處理器芯片有不同的工作頻率,,因此,,設(shè)星務(wù)管理系統(tǒng)軟件的調(diào)度周期為TS,。以飛行軌跡任務(wù)、姿態(tài)控制任務(wù),、遙測(cè)采集任務(wù)和數(shù)據(jù)存取任務(wù)為例,,分別為以上4個(gè)任務(wù)分配時(shí)間片,具體參數(shù)如表1所示,。
根據(jù)表1可以確定星務(wù)管理系統(tǒng)軟件的調(diào)度周期最小為:TS=20te,。為了便于任務(wù)分配,可將星務(wù)管理系統(tǒng)軟件的調(diào)度周期細(xì)化成幾段小周期f,。小周期f需要滿足如下條件:
(1)小周期f≥最大執(zhí)行時(shí)間(t),;
(2)小周期f能夠被星務(wù)管理系統(tǒng)軟件的調(diào)度周期TS整除;
(3)因?yàn)檎{(diào)度執(zhí)行發(fā)生在每個(gè)小周期的開始,,為了便于確定在時(shí)限到達(dá)前,,任務(wù)是否可以完成,要求在任務(wù)開始和到達(dá)時(shí)限之間至少有個(gè)小周期f的時(shí)間,,可用式(1)表示:
綜合以上3個(gè)條件得到的結(jié)構(gòu)可以得出小周期f的取值為4te,。由此可以繪制出一個(gè)調(diào)度周期為TS=20te的調(diào)度結(jié)果圖,如圖4所示,。
圖4中,,T1、T2,、T3和T4分別代表行軌跡任務(wù),、姿態(tài)控制任務(wù)、遙測(cè)采集任務(wù)和數(shù)據(jù)存取任務(wù),。根據(jù)表1和圖4中對(duì)每個(gè)任務(wù)的時(shí)間片的劃分,,通過(guò)上述計(jì)算可以保證每個(gè)任務(wù)能夠被正確、合理地調(diào)度,,保證了整個(gè)系統(tǒng)的實(shí)時(shí)性,。
2.3 多任務(wù)間通信
星務(wù)管理系統(tǒng)軟件的復(fù)雜多任務(wù)之間需要一些通信機(jī)制來(lái)協(xié)調(diào)各自的活動(dòng)[5]。VxWorks操作體系提供任務(wù)間通信的方式包括:信號(hào)量,、消息隊(duì)列,、管道、共享內(nèi)存和Socket套接字等,。在本系統(tǒng)軟件中采用了信號(hào)量和消息隊(duì)列兩種任務(wù)間通信方式,。
2.3.1 信號(hào)量
本文星務(wù)管理系統(tǒng)軟件采用二進(jìn)制信號(hào)量的同步和互斥功能,來(lái)改變每個(gè)任務(wù)的狀態(tài)機(jī),。如圖5所示,,在遙控接收分析數(shù)據(jù)任務(wù)中,根據(jù)數(shù)據(jù)分析得到需要發(fā)生變化的任務(wù)指令,,進(jìn)而釋放對(duì)應(yīng)任務(wù),,如:姿態(tài)控制任務(wù),令姿態(tài)控制任務(wù)改變?cè)瓉?lái)姿態(tài)為當(dāng)前指令需要的姿態(tài),。
在數(shù)據(jù)存取任務(wù)時(shí),,在數(shù)據(jù)緩存區(qū)二進(jìn)制信號(hào)量的互斥功能,保證在寫數(shù)據(jù)時(shí)不去進(jìn)行讀數(shù)據(jù)操作,,讀數(shù)據(jù)時(shí)不進(jìn)行寫數(shù)據(jù)操作,,確保數(shù)據(jù)的準(zhǔn)確性。
2.3.2 消息隊(duì)列
本文星務(wù)管理系統(tǒng)軟件采用消息隊(duì)列的FIFO方式,,用于遙測(cè)采集任務(wù)和數(shù)據(jù)存取任務(wù)間的通信,,根據(jù)需求設(shè)置消息的大小,當(dāng)遙測(cè)傳感器采集到數(shù)據(jù)后,,將采集處理的數(shù)據(jù)通過(guò)消息隊(duì)列發(fā)送給數(shù)據(jù)存取任務(wù),,并在數(shù)據(jù)存取任務(wù)占用CPU資源時(shí)將數(shù)據(jù)記錄存儲(chǔ),如圖6所示,。
3 分析驗(yàn)證
根據(jù)第2節(jié)對(duì)星務(wù)管理系統(tǒng)軟件的設(shè)計(jì)分析,,使用Tornado2.2開發(fā)環(huán)境中搭建星務(wù)管理系統(tǒng)軟件,實(shí)現(xiàn)遙控接收分析數(shù)據(jù)任務(wù),、飛行軌跡任務(wù),、姿態(tài)控制任務(wù)、溫度控制任務(wù),、數(shù)據(jù)存取任務(wù)等多任務(wù)之間的切換,,以及多任務(wù)之間的通信。
采用Tornado2.2開發(fā)環(huán)境的WindViwe調(diào)試工具來(lái)觀測(cè)星務(wù)管理系統(tǒng)軟件多任務(wù)并發(fā)運(yùn)行的結(jié)果,,如圖7所示,。
圖7中顯示飛行任務(wù)、姿態(tài)控制任務(wù)以及讀取數(shù)據(jù)任務(wù)在遙控指令任務(wù)的協(xié)調(diào)下,,進(jìn)行任務(wù)的切換和任務(wù)之間的通信,,數(shù)據(jù)采集任務(wù)和數(shù)據(jù)存儲(chǔ)任務(wù)的優(yōu)先級(jí)要低于其他任務(wù),并沒(méi)有影響到采集數(shù)據(jù)任務(wù)以及采集數(shù)據(jù)的分析處理任務(wù)的運(yùn)行,。
在每個(gè)任務(wù)中加入輸出語(yǔ)句代碼來(lái)進(jìn)一步驗(yàn)證本系統(tǒng)能夠保證多任務(wù)合理的執(zhí)行,。通過(guò)Tornado2.2開發(fā)環(huán)境的調(diào)試后臺(tái)觀察結(jié)果,如圖8所示,。
從圖8中可以看出,,當(dāng)姿態(tài)控制任務(wù)和軌跡任務(wù)接收到指令時(shí),發(fā)生了姿態(tài)以及軌跡的改變,;能夠?qū)崟r(shí)地檢測(cè),、采集、分析溫度變化,并根據(jù)溫度的變化反應(yīng)溫度的適度情況,。
通過(guò)以上驗(yàn)證描述,,表明了對(duì)于星務(wù)管理系統(tǒng)軟件的多任務(wù)的設(shè)計(jì)合理性,同時(shí)也能夠保證軟件框架的有效性,,滿足星務(wù)管理系統(tǒng)軟件的實(shí)時(shí)性的要求,。
4 結(jié)論
本文描述了一個(gè)基于VxWorks實(shí)時(shí)操作系統(tǒng)的星務(wù)管理系統(tǒng)軟件多任務(wù)實(shí)時(shí)性調(diào)度設(shè)計(jì)和實(shí)現(xiàn)。根據(jù)本文描述中的設(shè)計(jì)方法,,通過(guò)模擬測(cè)試結(jié)果表明了多任務(wù)調(diào)度的可靠性,、整體軟件架構(gòu)的有效性,并滿足實(shí)時(shí)性的要求,。本文描述的設(shè)計(jì)方法將移植到某架構(gòu)平臺(tái)上進(jìn)一步進(jìn)行驗(yàn)證,。
參考文獻(xiàn)
[1] 周啟平,張楊.VxWorks下設(shè)備驅(qū)動(dòng)程序及BSP開發(fā)指南[M].北京:中國(guó)電力出版社,,2004.
[2] 李孝同.小衛(wèi)星星務(wù)管理技術(shù)[J].中國(guó)空間科學(xué)技術(shù),,2001,2(1):29-36.
[3] 包海超,,楊根慶,,李華旺.小衛(wèi)星星載軟件微內(nèi)核的設(shè)計(jì)[J].計(jì)算機(jī)工程,2008,,34(9):81-82.
[4] 王才善,,陳光武.基于VxWorks的實(shí)時(shí)多任務(wù)程序設(shè)計(jì)機(jī)制分析[J].鐵路計(jì)算機(jī)應(yīng)用,2009,,18(5):12-15.
[5] 王婷,,朱莊生.星務(wù)管理軟件框架設(shè)計(jì)與實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2010,,22(1):30-33.
[6] 李俊.VxWorks下多任務(wù)間通信方式的比較與分析[J].科技資訊,,2009(25):24-25.
[7] 張凱,趙宏坤,,劉海濤.CX-l小衛(wèi)星實(shí)時(shí)多任務(wù)操作系統(tǒng)的設(shè)計(jì)[J].量子電子學(xué)報(bào),,2002,19(2):158-161.
作者信息:
趙建坤,,張大松,,胡愛(ài)蘭,李建宏
(華北計(jì)算機(jī)系統(tǒng)工程研究所,,北京100083)