新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式操作系統(tǒng)μC/OS-Ⅱ面向數(shù)控系統(tǒng)的改進(jìn)

嵌入式操作系統(tǒng)μC/OS-Ⅱ面向數(shù)控系統(tǒng)的改進(jìn)

作者: 時(shí)間:2013-10-26 來源:網(wǎng)絡(luò) 收藏
嵌入式操作系統(tǒng)μC/OS-Ⅱ是一個(gè)可裁剪、源碼開放、結(jié)構(gòu)小巧、搶先式的實(shí)時(shí)多任務(wù)內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高,占用空間小,可移植性強(qiáng),實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn)。數(shù)控系統(tǒng)是一個(gè)典型的強(qiáng)實(shí)時(shí)性系統(tǒng),具有可確定性??纱_定性主要是確保條件出現(xiàn)到由此引起的動(dòng)作開始(或者結(jié)束)的時(shí)間在一個(gè)準(zhǔn)確的時(shí)段內(nèi)。在數(shù)控系統(tǒng)中,條件是由操作員的指令(如:緊急停止、移動(dòng)x軸等)或是機(jī)床的狀態(tài)(如刀具破損等)引起的。本文分析了數(shù)控系統(tǒng)任務(wù)的特點(diǎn),結(jié)合μC/OS-Ⅱ的內(nèi)核體系,對(duì)μC/OS-Ⅱ的任務(wù)分類、任務(wù)調(diào)度和中斷服務(wù)策略做了改進(jìn),使其更加適合于數(shù)控系統(tǒng)的應(yīng)用。

1 μC/OS-Ⅱ?qū)θ蝿?wù)的分類

μC/OS-Ⅱ中每個(gè)任務(wù)有5種狀態(tài):休眠(DORMANT)、就緒(READY)、運(yùn)行(RUNNING)、等待(WAITING)、中斷(ISR)。休眠狀態(tài)的任務(wù)駐留在存儲(chǔ)器中,還未被內(nèi)核使用;就緒狀態(tài)的任務(wù)準(zhǔn)備執(zhí)行,優(yōu)先級(jí)低于當(dāng)前執(zhí)行的任務(wù),沒有得到CPU控制權(quán);任務(wù)得到CPU控制權(quán)后就處于運(yùn)行狀態(tài);等待事件發(fā)生的任務(wù)處于等待狀態(tài),事件可以是I/O操作完成、共享資源可以利用、時(shí)鐘周期到等;任務(wù)執(zhí)行過程被中斷服務(wù)例程中斷,任務(wù)就處于中斷狀態(tài)。

2 μC/OS-Ⅱ面向數(shù)控系統(tǒng)的改進(jìn)

2.1 數(shù)控系統(tǒng)任務(wù)的特點(diǎn)

在數(shù)控系統(tǒng)中,任務(wù)可分為兩種:周期運(yùn)行的任務(wù)和信號(hào)觸發(fā)運(yùn)行的任務(wù),這里所說的信號(hào)即包括硬件信號(hào),也包括軟件信號(hào)。周期運(yùn)行的任務(wù)有定時(shí)信號(hào)采樣、定時(shí)I/O口掃描、定時(shí)通信等。信號(hào)觸發(fā)運(yùn)行的任務(wù)有中斷信號(hào)(硬件信號(hào))觸發(fā)的中斷服務(wù)任務(wù),命令消息信號(hào)(軟件信號(hào))觸發(fā)的命令解釋任務(wù)等。另外,數(shù)控系統(tǒng)中,有些任務(wù)還具有運(yùn)行時(shí)間短,運(yùn)行頻率高,要求實(shí)時(shí)性高的特點(diǎn),如信號(hào)采樣、數(shù)控機(jī)床中的插補(bǔ)控制等。

2.2 改進(jìn)后的任務(wù)劃分

在改進(jìn)后的嵌入式操作系統(tǒng)中任務(wù)分為兩類:普通任務(wù)和。普通任務(wù)指通過操作系統(tǒng)調(diào)度器調(diào)度運(yùn)行的任務(wù),調(diào)度方法如圖1所示;指那些不通過調(diào)度器調(diào)度運(yùn)行,而是在中斷處理中直接運(yùn)行的任務(wù)。下面詳細(xì)說明這兩種任務(wù)。


2.2.1 普通任務(wù)

根據(jù)數(shù)控系統(tǒng)任務(wù)多為周期任務(wù)和信號(hào)觸發(fā)任務(wù)這一特點(diǎn),將普通任務(wù)分為兩種:定時(shí)運(yùn)行的周期任務(wù)(簡(jiǎn)稱周期任務(wù))和信號(hào)觸發(fā)運(yùn)行的(簡(jiǎn)稱)。相應(yīng)的,任務(wù)狀態(tài)被劃分為6種:運(yùn)行態(tài)、就緒態(tài)、等待態(tài)、停止態(tài)、掛起態(tài)和中斷態(tài)。圖1為改進(jìn)后的任務(wù)狀態(tài)切換圖。

在這六種狀態(tài)中,運(yùn)行態(tài)、就緒態(tài)和中斷態(tài)對(duì)應(yīng)μC/OS-Ⅱ的READY,RUNNING和ISR;掛起態(tài)是任務(wù)在執(zhí)行完成前,因等待某事件或資源而被迫停止運(yùn)行,等待事件或資源到來的狀態(tài);等待態(tài)是周期任務(wù)完成一次運(yùn)行,等待運(yùn)行周期到再次運(yùn)行時(shí)的狀態(tài);停止態(tài)是等待其觸發(fā)信號(hào)的狀態(tài)。這里去掉了休眠態(tài),即沒有任務(wù)的刪除,所有的任務(wù)一旦建立,在系統(tǒng)運(yùn)行期間一直存在。這樣的處理是因?yàn)樵跀?shù)控系統(tǒng)應(yīng)用中,所有建立的任務(wù)一定是有用的,即在系統(tǒng)運(yùn)行期間一定會(huì)被執(zhí)行,無用的代碼和任務(wù)不會(huì)被添加。在μC/OS-Ⅱ中,設(shè)定每個(gè)任務(wù)都是一個(gè)無限的循環(huán),即任務(wù)函數(shù)永不返回,這樣做是不合適的。該操作系統(tǒng)允許任務(wù)函數(shù)返回,返回后調(diào)用函數(shù)OSTaskEndDeal(),該函數(shù)根據(jù)任務(wù)的類別,把周期任務(wù)放入等待隊(duì)列,把隨機(jī)任務(wù)放入停止隊(duì)列。

2.2.2

搶占式任務(wù)為執(zhí)行時(shí)間短且執(zhí)行頻率高于OS系統(tǒng)時(shí)鐘頻率(如信號(hào)采樣),或?qū)崟r(shí)要求高(如數(shù)控機(jī)床中的插補(bǔ)控制)的任務(wù)。調(diào)度任務(wù)時(shí)間(主要是任務(wù)切換所花費(fèi)的時(shí)間)往往比這類任務(wù)運(yùn)行一次的時(shí)間還多,這顯然是不合理的,搶占式任務(wù)正是為解決這種不合理而設(shè)計(jì)的。搶占式任務(wù)不通過OS調(diào)度器調(diào)度運(yùn)行,也不采用TCB(任務(wù)控制塊)標(biāo)識(shí)它們,而是在它們的中斷觸發(fā)信號(hào)到達(dá)時(shí),在中斷中_直接處理,這樣做節(jié)省了調(diào)度、任務(wù)切換的時(shí)間。但是,由于搶占式任務(wù)沒有TCB,也就沒有相應(yīng)的任務(wù)堆棧,所以搶占式任務(wù)在使用資源上要特別注意:一定要使用獨(dú)立的資源。這樣既可以使搶占式任務(wù)正常運(yùn)行,又可以避免搶占式任務(wù)對(duì)被中斷程序的環(huán)境造成破壞。具體辦法如下:

(1)專用寄存器組。若處理程序中使用了寄存器,則為其分配專用的寄存器組,這樣也省去了保存/恢復(fù)寄存器的時(shí)間消耗。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉