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