《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技术 > 设计应用 > 基于VxWorks的星务管理系统软件多任务实时性调度设计
基于VxWorks的星务管理系统软件多任务实时性调度设计
2017年电子技术应用第12期
赵建坤,张大松,胡爱兰,李建宏
华北计算机系统工程研究所,北京100083
摘要: 在星务管理系统软件的设计开发中,为了更好地满足系统的高实时性、高安全性、高可靠性等要求,提出采用实时性强的操作系统——VxWorks操作系统作为卫星星务系统的核心。采用VxWorks操作系统的多任务调度机制,并结合基于时间片轮转调度实现多任务设计算法的特点,进而制定出星务管理系统软件的架构。结果表明,该设计满足卫星星务系统软件设计的可靠性、实时性的要求。
中圖分類號: TP391.9
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.170141
中文引用格式: 趙建坤,張大松,胡愛蘭,等. 基于VxWorks的星務管理系統(tǒng)軟件多任務實時性調(diào)度設計[J].電子技術(shù)應用,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.
Design of satellite management system software of multi task real time scheduling based on VxWorks
Zhao Jiankun,Zhang Dasong,Hu Ailan,Li Jianhong
National Computer System Engineering Research Institute of China,Beijing 100083,China
Abstract: In the process of the design and development of star management system software, in order to satisfy the requirements of high real-time performance, high security and high reliability, this paper proposes a real-time operating system VxWorks operating system as the core of the satellite service system. VxWorks operating system employs the multi-task scheduling mechanism, combined with the method of calculation based on the round robin scheduling, moreover, developing the architecture of star management system. The results manifests that in the premise of fulfilling the satellite on-board system software design requirements, the real-time performance is improved.
Key words : satellite management system;VxWorks RTOS;multi task scheduling mechanism

0 引言

    隨著科學技術(shù)的不斷進步,實時嵌入式操作系統(tǒng)得以廣泛應用,而VxWorks操作系統(tǒng)在絕大多數(shù)的嵌入式操作系統(tǒng)中具有良好的實時性效果,它于1983年由美國的WindRiver公司設計出來。正是因為VxWorks操作系統(tǒng)的高實時性的特性,它被廣泛應用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領域中[1]。

    目前,對于航天事業(yè)的發(fā)展不斷深入,對星務管理系統(tǒng)軟件的功能越來越多,越來越復雜,同時性能要求也越來越高,而在這樣的復雜多任務的情況下,同樣需要保證任務處理的實時性[2]。

    為此,本文以VxWorks操作系統(tǒng)為核心,分析星務管理系統(tǒng)軟件的基本功能任務,結(jié)合VxWorks操作系統(tǒng)高效的實時性多任務調(diào)度、中斷管理以及實時的系統(tǒng)資源等特點,設計討論在諸多星務任務情況下,確保每個任務能夠被合理調(diào)度,提高星務管理系統(tǒng)軟件的高可實時性要求。

1 VxWorks的多任務特性

    VxWorks操作系統(tǒng)采用微內(nèi)核的設計風格,由微內(nèi)核提供基本的多任務環(huán)境及對多任務進行管理[3]。在VxWorks操作系統(tǒng)中,每個任務都會具有就緒狀態(tài)、掛起狀態(tài)、延遲狀態(tài)、休眠狀態(tài)4種基本的狀態(tài)[4]。

    這些任務的狀態(tài)會隨著調(diào)用相應的系統(tǒng)函數(shù)發(fā)生從當前狀態(tài)跳轉(zhuǎn)為相應的下一個狀態(tài),在任何狀態(tài)下的任務也都能夠被刪除。

    VxWorks提供了兩種任務調(diào)度算法:基于任務優(yōu)先級的搶占式調(diào)度算法、基于時間片輪轉(zhuǎn)的調(diào)度算法。對于具有多任務環(huán)境下的系統(tǒng),必須采用以上的其中一種調(diào)度算法,并將CPU的資源賦給處于就緒狀態(tài)的任務。而對于高實時性要求的系統(tǒng),若能將以上兩種任務調(diào)度的協(xié)調(diào)配合很好地實現(xiàn)在系統(tǒng)中,系統(tǒng)的實時性便能得到更好的保證。時間片輪轉(zhuǎn)的調(diào)度及優(yōu)先級的搶占式調(diào)度結(jié)合實例如圖1所示。

jsj3-t1.gif

    圖1中任務1和任務2的優(yōu)先級相同,任務3的優(yōu)先級高于任務1和任務2,任務4的優(yōu)先級高于任務3。任務1和任務2按照基于時間片輪轉(zhuǎn)的調(diào)度算法根據(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 架構(gòu)分析

    在復雜的星務管理系統(tǒng)軟件中,需要考慮軟件的復用性、各個任務的內(nèi)聚性和耦合性,從而保證星務管理系統(tǒng)軟件高可靠性[5]。為此,結(jié)合VxWorks操作系統(tǒng)的特點,可將星務管理系統(tǒng)軟件分為4層:板級包驅(qū)動層、系統(tǒng)內(nèi)核層、由VxWorks提供的公共系統(tǒng)函數(shù)層以及應用層。

    圖2為星務管理系統(tǒng)軟件的結(jié)構(gòu)圖。

jsj3-t2.gif

    圖2中,板級包驅(qū)動層提供與硬件接口的底層驅(qū)動程序,包括對中斷控制器的初始化、定時器的初始化、串口的初始化等其他硬件的初始化;系統(tǒng)內(nèi)核層是整個系統(tǒng)的核心層,它為多任務提供管理、任務間切換、調(diào)度分配CPU資源和對一些異常情況進行處理;公共系統(tǒng)函數(shù)層則起到了很好中間層作用,為應用層訪問系統(tǒng)內(nèi)核層提供了系統(tǒng)接口函數(shù);應用層實現(xiàn)復雜的任務處理,如:姿態(tài)控制任務、遙測控制任務、軌跡控制任務、載荷控制任務、溫度控制任務等。

2.2 多任務調(diào)度

2.2.1 基于任務優(yōu)先級的搶占式調(diào)度設計

    由第1節(jié)介紹有關(guān)VxWorks多任務特性的設計思想,根據(jù)星務管理系統(tǒng)軟件自身功能的需要,對任務進行合理有效的劃分和優(yōu)先級適當?shù)脑O置,可以較好地簡化星務管理系統(tǒng)軟件的復雜度,也可以增加星務管理系統(tǒng)軟件的穩(wěn)定性。保證任務調(diào)度的正確性,則更好地保證了整個系統(tǒng)實時性[6]。

    星務管理系統(tǒng)軟件按照設置周期性地運行,通過內(nèi)部總線和網(wǎng)絡接收內(nèi)部傳感器和外部指令控制單元的命令和數(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)軟件任務運行關(guān)系圖。

jsj3-t3.gif

    圖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ù)的結(jié)果將會影響到其他任務內(nèi)的執(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 基于時間片輪轉(zhuǎn)的調(diào)度設計

    在沒有接收到指令要求改變衛(wèi)星姿態(tài),或者調(diào)整衛(wèi)星運行軌跡時,姿態(tài)任務和軌跡任務應當會按照初始設定的姿態(tài)和軌跡執(zhí)行[7],即這每個任務按照時間片輪轉(zhuǎn)方式進行調(diào)度。

    不同型號的處理器芯片有不同的工作頻率,因此,設星務管理系統(tǒng)軟件的調(diào)度周期為TS。以飛行軌跡任務、姿態(tài)控制任務、遙測采集任務和數(shù)據(jù)存取任務為例,分別為以上4個任務分配時間片,具體參數(shù)如表1所示。

jsj3-b1.gif

    根據(jù)表1可以確定星務管理系統(tǒng)軟件的調(diào)度周期最小為:TS=20te。為了便于任務分配,可將星務管理系統(tǒng)軟件的調(diào)度周期細化成幾段小周期f。小周期f需要滿足如下條件:

    (1)小周期f≥最大執(zhí)行時間(t);

    (2)小周期f能夠被星務管理系統(tǒng)軟件的調(diào)度周期TS整除;

    (3)因為調(diào)度執(zhí)行發(fā)生在每個小周期的開始,為了便于確定在時限到達前,任務是否可以完成,要求在任務開始和到達時限之間至少有個小周期f的時間,可用式(1)表示:

jsj3-gs1-3.gif

    綜合以上3個條件得到的結(jié)構(gòu)可以得出小周期f的取值為4te。由此可以繪制出一個調(diào)度周期為TS=20te的調(diào)度結(jié)果圖,如圖4所示。

jsj3-t4.gif

    圖4中,T1、T2、T3和T4分別代表行軌跡任務、姿態(tài)控制任務、遙測采集任務和數(shù)據(jù)存取任務。根據(jù)表1和圖4中對每個任務的時間片的劃分,通過上述計算可以保證每個任務能夠被正確、合理地調(diào)度,保證了整個系統(tǒng)的實時性。

2.3 多任務間通信

    星務管理系統(tǒng)軟件的復雜多任務之間需要一些通信機制來協(xié)調(diào)各自的活動[5]。VxWorks操作體系提供任務間通信的方式包括:信號量、消息隊列、管道、共享內(nèi)存和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)。

jsj3-t5.gif

    在數(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所示。

jsj3-t6.gif

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調(diào)試工具來觀測星務管理系統(tǒng)軟件多任務并發(fā)運行的結(jié)果,如圖7所示。

jsj3-t7.gif

    圖7中顯示飛行任務、姿態(tài)控制任務以及讀取數(shù)據(jù)任務在遙控指令任務的協(xié)調(diào)下,進行任務的切換和任務之間的通信,數(shù)據(jù)采集任務和數(shù)據(jù)存儲任務的優(yōu)先級要低于其他任務,并沒有影響到采集數(shù)據(jù)任務以及采集數(shù)據(jù)的分析處理任務的運行。

    在每個任務中加入輸出語句代碼來進一步驗證本系統(tǒng)能夠保證多任務合理的執(zhí)行。通過Tornado2.2開發(fā)環(huán)境的調(diào)試后臺觀察結(jié)果,如圖8所示。

jsj3-t8.gif

    從圖8中可以看出,當姿態(tài)控制任務和軌跡任務接收到指令時,發(fā)生了姿態(tài)以及軌跡的改變;能夠?qū)崟r地檢測、采集、分析溫度變化,并根據(jù)溫度的變化反應溫度的適度情況。

    通過以上驗證描述,表明了對于星務管理系統(tǒng)軟件的多任務的設計合理性,同時也能夠保證軟件框架的有效性,滿足星務管理系統(tǒng)軟件的實時性的要求。

4 結(jié)論

    本文描述了一個基于VxWorks實時操作系統(tǒng)的星務管理系統(tǒng)軟件多任務實時性調(diào)度設計和實現(xiàn)。根據(jù)本文描述中的設計方法,通過模擬測試結(jié)果表明了多任務調(diào)度的可靠性、整體軟件架構(gòu)的有效性,并滿足實時性的要求。本文描述的設計方法將移植到某架構(gòu)平臺上進一步進行驗證。

參考文獻

[1] 周啟平,張楊.VxWorks下設備驅(qū)動程序及BSP開發(fā)指南[M].北京:中國電力出版社,2004.

[2] 李孝同.小衛(wèi)星星務管理技術(shù)[J].中國空間科學技術(shù),2001,2(1):29-36.

[3] 包海超,楊根慶,李華旺.小衛(wèi)星星載軟件微內(nè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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。