基于μC/OS-II的無線調(diào)度策略分析與實現(xiàn)
2.2嵌入式實時操作系統(tǒng)調(diào)度管理
為完成調(diào)度機制的靈活實現(xiàn),提高系統(tǒng)調(diào)度實時性,這里采用嵌入式操作系統(tǒng)對系統(tǒng)進行管理。μC/OS-II是一種免費公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實時內(nèi)核的實時操作系統(tǒng),其內(nèi)核提供任務調(diào)度與管理、時間管理、任務間同步與通信、內(nèi)存管理和中斷服務等功能。它適用于小型控制系統(tǒng),具有執(zhí)行效率高、占有空間小、實時性能優(yōu)良和擴展性強等特點,最小內(nèi)核可以編譯至2K左右。
μC/OS-II實時內(nèi)核采用占先式調(diào)度策略,不支持時間片輪調(diào)度法,核心是始終運行就緒條件下的優(yōu)先級最高的任務。在具體實現(xiàn)中就可以根據(jù)這一特點將無線調(diào)度系統(tǒng)劃分為多個任務,每一個任務賦予一個明確的并且與其他任務不同的優(yōu)先級,根據(jù)各個任務的優(yōu)先級,動態(tài)地切換各個任務,從而保證了對實時性的要求。如果希望某個任務的優(yōu)先級根據(jù)條件的變化而發(fā)生改變,則可以通過調(diào)用改變?nèi)蝿諆?yōu)先級的函數(shù)來實現(xiàn)。
3 調(diào)度任務劃分及設計
3.1多任務劃分
任務和中斷的劃分主要根據(jù)調(diào)度平臺設備完成的功能來劃分,要求每個任務職責清晰,任務間的信息交換和同步互斥應該簡潔明了,任務優(yōu)先級定義明確。
無線調(diào)度平臺設備任務可劃分為四個任務:設備聲明任務,信息分發(fā)任務,信息接收任務,令牌輪循任務。設備聲明任務主要完成設備身份認證,設備在網(wǎng)絡中聲明是主設備還是從設備,如果是主設備則進行調(diào)度平臺星型網(wǎng)絡的組建,從設備則直接加入新組建的網(wǎng)絡。信息分發(fā)任務作用是將當前網(wǎng)絡狀態(tài)、設備狀態(tài)和數(shù)據(jù)信息發(fā)送網(wǎng)絡中指定設備。信息接收任務是依靠串口中斷來觸發(fā)的,作用是接收網(wǎng)絡中的數(shù)據(jù)信息和主設備發(fā)送的或從設備返回的令牌。令牌輪循任務主要是針對主設備,當調(diào)度網(wǎng)絡組建完成,主設備根據(jù)網(wǎng)絡中節(jié)點信息(單獨開辟存儲區(qū)存儲的節(jié)點號)進行令牌信息分發(fā),一般情況是根據(jù)節(jié)點號從大到小,得到令牌的節(jié)點才是當前網(wǎng)絡中的活動節(jié)點。對于從設備,令牌輪循任務僅完成令牌返回功能。
3.2多任務優(yōu)先級裁決
在多任務系統(tǒng)的設計中優(yōu)先級的裁決至關重要,如果優(yōu)先級設定有誤,難以保證調(diào)度策略的正確實施,嚴重影響調(diào)度精確性。基于μC/OS-II操作系統(tǒng)的任務優(yōu)先級設計遵循以下原則:(1)緊急任務優(yōu)先,(2)完成得快的任務優(yōu)先,(3)優(yōu)先級不能動態(tài)變化,(4)不要出現(xiàn)多個同一優(yōu)先級的任務。
基于以上四點原則,分析無線調(diào)度系統(tǒng)任務,安排任務優(yōu)先級示意圖如圖3所示,任務優(yōu)先級由高至低依次為:信息接收任務,令牌輪循任務,信息分發(fā)任務,設備聲明任務。在系統(tǒng)任務中設備聲明任務只需定期進行發(fā)送聲明信息,表明設備在線,其周期較長,故可安排較低優(yōu)先級;信息接收任務由中斷觸發(fā),為了提高調(diào)度精度,防止中斷延遲時間過長,可安排信息接收任務為較高優(yōu)先級,當中斷發(fā)生確保能較快的切換到信息接收任務接收信息。令牌輪循任務功能單一,處理時間較短,故安排優(yōu)先級高于信息發(fā)送任務。
圖3 任務優(yōu)先級示意圖 |
μC/OS-II是基于搶占式內(nèi)核,當一個任務正在執(zhí)行時,如果任務就緒表中有更高級別任務就緒,就中止當前任務切換到高優(yōu)先級任務。如圖3所示,信息分發(fā)任務在執(zhí)行過程中,信息接收任務就緒,系統(tǒng)立刻中止信息分發(fā)任務,保留當前狀態(tài)在堆棧中,然后切換到高優(yōu)先級的信息接收任務,信息接收完成再返回到信息發(fā)送任務繼續(xù)執(zhí)行。
3.3任務間信息交換和同步設計與實現(xiàn)
在嵌入式多任務系統(tǒng)中,多任務之間信息交換和同步主要通過消息郵箱、消息隊列以及信號量來完成,μC/OS-II分別提供了相關函數(shù)供用戶調(diào)用,如任務,消息,信號量的創(chuàng)建,消息和信號量的請求和發(fā)送等。
根據(jù)調(diào)度策略無線調(diào)度平臺主從設備信息交換設計圖如圖4所示:
任務間信息交換和同步設計是無線調(diào)度機制實現(xiàn)的重要環(huán)節(jié),在具體實現(xiàn)過程中主要利用μC/OS-II的消息隊列函數(shù),其中OSQPend()為消息請求函數(shù),OSQPost()為消息發(fā)送函數(shù)。
串口中斷與信息接收任務間通過消息隊列進行信息傳遞代碼實現(xiàn)如下,SERIAL2RecData作為是否接收信息標志位,由中斷置位,有信息接收時,串口服務程序向信息接收任務發(fā)送消息。
void SERIAL2_ISR(void) interrupt 20 //串口接收中斷服務程序
{ SERIAL2RecBuffer[SERIAL2RecBufferTail] = SBUF1;
SERIAL2RecData = 1; //接收數(shù)據(jù)標志位
}
void task_serial2(void) ADD_REENTRANT //串口服務程序
{ if(SERIAL2RecData == 1)
OSQPost(bt_msg_queue, (void *)pmsg);
}
評論