當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式操作系統(tǒng)μLC/OS-Ⅱ面向數(shù)控系統(tǒng)的改進(jìn)

摘要:為了使嵌入式操作系統(tǒng)μC/OS-Ⅱ更加適合數(shù)控系統(tǒng)的應(yīng)用,對(duì)μC/OS-Ⅱ的任務(wù)分類(lèi)和任務(wù)調(diào)度做了改進(jìn)。將任務(wù)分為普通任務(wù)和搶占式任務(wù)。普通任務(wù)指通過(guò)操作系統(tǒng)調(diào)度器調(diào)度運(yùn)行的任務(wù),它又分為周期任務(wù)和隨機(jī)任務(wù)。周期任務(wù)對(duì)應(yīng)數(shù)控系統(tǒng)中要求定期執(zhí)行的任務(wù),隨機(jī)任務(wù)對(duì)應(yīng)數(shù)控系統(tǒng)中由信號(hào)觸發(fā)執(zhí)行的任務(wù)。搶占式任務(wù)不通過(guò)調(diào)度器調(diào)度運(yùn)行,而在中斷處理中直接運(yùn)行。搶占式任務(wù)對(duì)應(yīng)數(shù)控系統(tǒng)中執(zhí)行頻率高,執(zhí)行時(shí)間短的任務(wù)。實(shí)驗(yàn)證明,改進(jìn)后的μC/OS-Ⅱ更適合數(shù)控系統(tǒng)任務(wù)的添加。
關(guān)鍵詞:數(shù)控系統(tǒng);μC/OS-Ⅱ;任務(wù)分類(lèi);任務(wù)調(diào)度

    嵌入式操作系統(tǒng)μC/OS-Ⅱ是一個(gè)可裁剪、源碼開(kāi)放、結(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)作開(kāi)始(或者結(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ù)分類(lèi)、任務(wù)調(diào)度和中斷服務(wù)策略做了改進(jìn),使其更加適合于數(shù)控系統(tǒng)的應(yīng)用。

1 μC/OS-Ⅱ?qū)θ蝿?wù)的分類(lèi)
    μ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ù),沒(méi)有得到CPU控制權(quán);任務(wù)得到CPU控制權(quán)后就處于運(yùn)行狀態(tài);等待事件發(fā)生的任務(wù)處于等待狀態(tài),事件可以是I/O操作完成、共享資源可以利用、時(shí)鐘周期到等;任務(wù)執(zhí)行過(guò)程被中斷服務(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ù),這里所說(shuō)的信號(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ù)分為兩類(lèi):普通任務(wù)和搶占式任務(wù)。普通任務(wù)指通過(guò)操作系統(tǒng)調(diào)度器調(diào)度運(yùn)行的任務(wù),調(diào)度方法如圖1所示;搶占式任務(wù)指那些不通過(guò)調(diào)度器調(diào)度運(yùn)行,而是在中斷處理中直接運(yùn)行的任務(wù)。下面詳細(xì)說(shuō)明這兩種任務(wù)。
2.2.1 普通任務(wù)
    根據(jù)數(shù)控系統(tǒng)任務(wù)多為周期任務(wù)和信號(hào)觸發(fā)任務(wù)這一特點(diǎn),將普通任務(wù)分為兩種:定時(shí)運(yùn)行的周期任務(wù)(簡(jiǎn)稱(chēng)周期任務(wù))和信號(hào)觸發(fā)運(yùn)行的隨機(jī)任務(wù)(簡(jiǎn)稱(chēng)隨機(jī)任務(wù))。相應(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)行,等待事件或資源到來(lái)的狀態(tài);等待態(tài)是周期任務(wù)完成一次運(yùn)行,等待運(yùn)行周期到再次運(yùn)行時(shí)的狀態(tài);停止態(tài)是隨機(jī)任務(wù)等待其觸發(fā)信號(hào)的狀態(tài)。這里去掉了休眠態(tài),即沒(méi)有任務(wù)的刪除,所有的任務(wù)一旦建立,在系統(tǒng)運(yùn)行期間一直存在。這樣的處理是因?yàn)樵跀?shù)控系統(tǒng)應(yīng)用中,所有建立的任務(wù)一定是有用的,即在系統(tǒng)運(yùn)行期間一定會(huì)被執(zhí)行,無(wú)用的代碼和任務(wù)不會(huì)被添加。在μC/OS-Ⅱ中,設(shè)定每個(gè)任務(wù)都是一個(gè)無(wú)限的循環(huán),即任務(wù)函數(shù)永不返回,這樣做是不合適的。該操作系統(tǒng)允許任務(wù)函數(shù)返回,返回后調(diào)用函數(shù)OSTaskEndDeal(),該函數(shù)根據(jù)任務(wù)的類(lèi)別,把周期任務(wù)放入等待隊(duì)列,把隨機(jī)任務(wù)放入停止隊(duì)列。
2.2.2 搶占式任務(wù)
    搶占式任務(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í)間)往往比這類(lèi)任務(wù)運(yùn)行一次的時(shí)間還多,這顯然是不合理的,搶占式任務(wù)正是為解決這種不合理而設(shè)計(jì)的。搶占式任務(wù)不通過(guò)OS調(diào)度器調(diào)度運(yùn)行,也不采用TCB(任務(wù)控制塊)標(biāo)識(shí)它們,而是在它們的中斷觸發(fā)信號(hào)到達(dá)時(shí),在中斷中_直接處理,這樣做節(jié)省了調(diào)度、任務(wù)切換的時(shí)間。但是,由于搶占式任務(wù)沒(méi)有TCB,也就沒(méi)有相應(yīng)的任務(wù)堆棧,所以搶占式任務(wù)在使用資源上要特別注意:一定要使用獨(dú)立的資源。這樣既可以使搶占式任務(wù)正常運(yùn)行,又可以避免搶占式任務(wù)對(duì)被中斷程序的環(huán)境造成破壞。具體辦法如下:
    (1)專(zhuān)用寄存器組。若處理程序中使用了寄存器,則為其分配專(zhuān)用的寄存器組,這樣也省去了保存/恢復(fù)寄存器的時(shí)間消耗。
    (2)全局變量。因?yàn)楹瘮?shù)內(nèi)部的局部變量是分配在堆棧中的,直接處理方式不形成任務(wù),沒(méi)有自己的堆棧,如果使用局部變量,其局部變量會(huì)分配在被中斷任務(wù)的堆棧內(nèi),所以在該方式下任務(wù)應(yīng)使用全局變量。用戶在設(shè)計(jì)搶占式任務(wù)時(shí)要有一定限制,否則會(huì)影響系統(tǒng)的響應(yīng)時(shí)間。具體限制如下:第一,數(shù)量不能太多,最好小于等于3個(gè);第二,必須是執(zhí)行時(shí)間短,執(zhí)行頻率高的任務(wù)才能被設(shè)為搶占式任務(wù)。
[!--empirenews.page--]
3 需要修改的內(nèi)核數(shù)據(jù)和函數(shù)
3.1 任務(wù)控制塊的修改
    (1)修改OSTCBDly的含義。在μC/OS-Ⅱ中,OSTCBDly表示任務(wù)延時(shí)的時(shí)鐘節(jié)拍數(shù),或者任務(wù)掛起時(shí)的超時(shí)時(shí)鐘節(jié)拍數(shù)。如果這個(gè)變量為0,則表示任務(wù)不延時(shí),或者表示等待事件發(fā)生的時(shí)間沒(méi)有限制,修改后,OSTCBDly描述任務(wù)自運(yùn)行的周期數(shù),其計(jì)算公式如式(1)所示。若該項(xiàng)為零,任務(wù)為信號(hào)觸發(fā)的隨機(jī)任務(wù)。
   
    (2)在TCB增加一項(xiàng)OSTCBDlyD作為任務(wù)自運(yùn)行周期動(dòng)態(tài)值。
    INT16UOSTCBDlyD; /*任務(wù)自運(yùn)行周期動(dòng)態(tài)值*/其中,OSTCBDlyD是任務(wù)等待運(yùn)行時(shí)間的動(dòng)態(tài)值。若任務(wù)在等待態(tài),其初值為OSTCBD-ly;若任務(wù)為掛起態(tài),其初值為超時(shí)限制值。系統(tǒng)時(shí)鐘處理函數(shù)OSTimeTick()對(duì)OSTCBDlyD減1,當(dāng)OSTCBDlyD小于0時(shí),則將該任務(wù)放入就緒隊(duì)列。
    (3)增加OSTCBStat的取值。OSTCBStat是任務(wù)的狀態(tài)字。由于增加了停止態(tài)和等待態(tài)兩種任務(wù)狀態(tài),因此需要增加OSTCBStat的取值,具體修改是在文件μCOS_II.H中增加下面信息。
    #define OS_STAT_wAIT 0x40 //任務(wù)狀態(tài)字為等待態(tài)
    #define OS_STAT_STOP 0x80 //任務(wù)狀態(tài)字為停止態(tài)
3.2 時(shí)鐘節(jié)拍函數(shù)的OSTimeTick()修改
    通過(guò)TCB數(shù)組掃描全部TCB,根據(jù)OSTCBStat的值做不同處理,具體處理如下:
    就緒態(tài)的任務(wù),OSTCBDlyD--,若有超時(shí),則進(jìn)行超時(shí)處理。
    掛起態(tài)的任務(wù),OSTCBDlyD--,若有超時(shí),則將其插入就緒表。
    等待態(tài)的任務(wù),OSTCBDlyD--,若到時(shí),則將其加入就緒表。
    運(yùn)行態(tài)的任務(wù)和停止態(tài)的任務(wù),不做處理。
3.3 增加函數(shù)OSTaskEndDeal()
    當(dāng)前任務(wù)的函數(shù)運(yùn)行完返回時(shí),調(diào)用函數(shù)OSTaskEndDeal(),該函數(shù)完成工作:首先調(diào)用OSTaskStkInit()將該任務(wù)的堆棧初始化;然后判斷任務(wù)是否為最低優(yōu)先級(jí)任務(wù),若是,則保持該任務(wù)在就緒態(tài),這樣做的目的是使最低優(yōu)先級(jí)任務(wù)始終處于就緒態(tài),就緒表不會(huì)為空。若否,則根據(jù)OSTCBCUR→OSTCBDly決定任務(wù)該插入哪個(gè)隊(duì)列,該值等于零,任務(wù)進(jìn)入停止?fàn)顟B(tài);
不等于零,任務(wù)進(jìn)入等待狀態(tài)。最后,調(diào)用OSStart()選擇新任務(wù)運(yùn)行。
3.4 搶占式任務(wù)的實(shí)現(xiàn)
    搶占式任務(wù)的設(shè)計(jì)需要根據(jù)實(shí)際情況做處理,這里以數(shù)控系統(tǒng)中的插補(bǔ)控制為例介紹搶占式任務(wù)的實(shí)現(xiàn)。
3.4.1 插補(bǔ)控制任務(wù)的功能
    插補(bǔ)控制任務(wù)是根據(jù)加工命令和當(dāng)前點(diǎn)的位置,實(shí)時(shí)計(jì)算各坐標(biāo)軸運(yùn)動(dòng)的位移和方向。插補(bǔ)時(shí)需要用一個(gè)定時(shí)器作為插補(bǔ)速度的控制,每次定時(shí)中斷觸發(fā)一步插補(bǔ)運(yùn)算和輸出,當(dāng)插補(bǔ)到終點(diǎn),定時(shí)器停止,插補(bǔ)完成。
3.4.2 插補(bǔ)控制任務(wù)的實(shí)現(xiàn)
    (1)選擇一個(gè)硬件定時(shí)器作為插補(bǔ)專(zhuān)用定時(shí)器,將插補(bǔ)任務(wù)的代碼放入該硬件定時(shí)器的中斷服務(wù)程序中。
    (2)為該中斷設(shè)置一組專(zhuān)用的寄存器組,以減少中斷環(huán)境保存和恢復(fù)的時(shí)間。
    (3)將需要執(zhí)行插補(bǔ)任務(wù)的當(dāng)前位置值和加工命令(如:加工曲線線形、終點(diǎn)值)等信息定義成全局變量,以便與其他任務(wù)實(shí)現(xiàn)快速的信息交互。
    (4)插補(bǔ)控制任務(wù)的啟動(dòng)。根據(jù)插補(bǔ)速度設(shè)定定時(shí)器初值,初始化插補(bǔ)所用的全局變量,啟動(dòng)定時(shí)器。

4 基于改進(jìn)后的μC/OS-Ⅱ的數(shù)控機(jī)床執(zhí)行控制器的軟件設(shè)計(jì)
    數(shù)控機(jī)床系統(tǒng)采用兩級(jí)結(jié)構(gòu)。上位機(jī)由專(zhuān)用軟件IPC構(gòu)成,用于實(shí)現(xiàn)人機(jī)交互;下位機(jī)由C8051020及其外圍電路的嵌入式執(zhí)行控制器構(gòu)成,負(fù)責(zé)實(shí)時(shí)、可靠的控制。嵌入式執(zhí)行控制器軟件基于改進(jìn)后的μC/OS-Ⅱ設(shè)計(jì),主要包括下面一些功能:與IPC的通信(發(fā)送任務(wù)和接受任務(wù))、命令解釋(命令解釋任務(wù))和命令執(zhí)行(加工監(jiān)控任務(wù)、插補(bǔ)計(jì)算任務(wù)、間隙電壓檢測(cè)和限位開(kāi)關(guān)狀態(tài)檢測(cè)任務(wù))。其中,通信有發(fā)送和接收兩方面內(nèi)容;命令解釋時(shí),對(duì)開(kāi)關(guān)量控制命令直接執(zhí)行;命令執(zhí)行中需要進(jìn)行插補(bǔ)計(jì)算、檢測(cè)間隙電壓和限位開(kāi)關(guān)狀態(tài)及加工監(jiān)測(cè)。各任務(wù)具體設(shè)計(jì)如表1所示。



5 結(jié)語(yǔ)
    本文根據(jù)數(shù)控系統(tǒng)任務(wù)特點(diǎn),對(duì)μC/OS-Ⅱ的任務(wù)劃分和任務(wù)調(diào)度做了改進(jìn),更加方便數(shù)控系統(tǒng)任務(wù)的在μC/OS-Ⅱ上的添加,同時(shí)也便于μC/OS-Ⅱ?qū)Σ煌蝿?wù)的管理。搶占式任務(wù)減少了任務(wù)切換花費(fèi)的時(shí)間,并提高了硬件資源的利用率,但應(yīng)注意搶占式任務(wù)的數(shù)量不能過(guò)多,最好小于等于3個(gè),否則會(huì)影響OS正常運(yùn)行。改進(jìn)后的內(nèi)核已應(yīng)用到了實(shí)際項(xiàng)目中,系統(tǒng)穩(wěn)定可靠。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉