中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

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

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

        作者: 時間:2011-07-22 來源:網(wǎng)絡(luò) 收藏

        3 需要修改的內(nèi)核數(shù)據(jù)和函數(shù)
        3.1 任務(wù)控制塊的修改
        (1)修改OSTCBDly的含義。在μC/Ⅱ中,OSTCBDly表示任務(wù)延時的時鐘節(jié)拍數(shù),或者任務(wù)掛起時的超時時鐘節(jié)拍數(shù)。如果這個變量為0,則表示任務(wù)不延時,或者表示等待事件發(fā)生的時間沒有限制,修改后,OSTCBDly描述任務(wù)自運行的周期數(shù),其計算公式如式(1)所示。若該項為零,任務(wù)為信號觸發(fā)的隨機任務(wù)。
        b.JPG
        (2)在TCB增加一項OSTCBDlyD作為任務(wù)自運行周期動態(tài)值。
        INT16UOSTCBDlyD; /*任務(wù)自運行周期動態(tài)值*/其中,OSTCBDlyD是任務(wù)等待運行時間的動態(tài)值。若任務(wù)在等待態(tài),其初值為OSTCBD-ly;若任務(wù)為掛起態(tài),其初值為超時限制值。系統(tǒng)時鐘處理函數(shù)OSTimeTick()對OSTCBDlyD減1,當(dāng)OSTCBDlyD小于0時,則將該任務(wù)放入就緒隊列。
        (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 時鐘節(jié)拍函數(shù)的OSTimeTick()修改
        通過TCB數(shù)組掃描全部TCB,根據(jù)OSTCBStat的值做不同處理,具體處理如下:
        就緒態(tài)的任務(wù),OSTCBDlyD--,若有超時,則進行超時處理。
        掛起態(tài)的任務(wù),OSTCBDlyD--,若有超時,則將其插入就緒表。
        等待態(tài)的任務(wù),OSTCBDlyD--,若到時,則將其加入就緒表。
        運行態(tài)的任務(wù)和停止態(tài)的任務(wù),不做處理。
        3.3 增加函數(shù)OSTaskEndDeal()
        當(dāng)前任務(wù)的函數(shù)運行完返回時,調(diào)用函數(shù)OSTaskEndDeal(),該函數(shù)完成工作:首先調(diào)用OSTaskStkInit()將該任務(wù)的堆棧初始化;然后判斷任務(wù)是否為最低優(yōu)先級任務(wù),若是,則保持該任務(wù)在就緒態(tài),這樣做的目的是使最低優(yōu)先級任務(wù)始終處于就緒態(tài),就緒表不會為空。若否,則根據(jù)OSTCBCUR→OSTCBDly決定任務(wù)該插入哪個隊列,該值等于零,任務(wù)進入停止狀態(tài);
        不等于零,任務(wù)進入等待狀態(tài)。最后,調(diào)用OSStart()選擇新任務(wù)運行。
        3.4 搶占式任務(wù)的實現(xiàn)
        搶占式任務(wù)的設(shè)計需要根據(jù)實際情況做處理,這里以中的插補控制為例介紹搶占式任務(wù)的實現(xiàn)。
        3.4.1 插補控制任務(wù)的功能
        插補控制任務(wù)是根據(jù)加工命令和當(dāng)前點的位置,實時計算各坐標軸運動的位移和方向。插補時需要用一個定時器作為插補速度的控制,每次定時中斷觸發(fā)一步插補運算和輸出,當(dāng)插補到終點,定時器停止,插補完成。
        3.4.2 插補控制任務(wù)的實現(xiàn)
        (1)選擇一個硬件定時器作為插補專用定時器,將插補任務(wù)的代碼放入該硬件定時器的中斷服務(wù)程序中。
        (2)為該中斷設(shè)置一組專用的寄存器組,以減少中斷環(huán)境保存和恢復(fù)的時間。
        (3)將需要執(zhí)行插補任務(wù)的當(dāng)前位置值和加工命令(如:加工曲線線形、終點值)等信息定義成全局變量,以便與其他任務(wù)實現(xiàn)快速的信息交互。
        (4)插補控制任務(wù)的啟動。根據(jù)插補速度設(shè)定定時器初值,初始化插補所用的全局變量,啟動定時器。

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

        本文引用地址:http://www.antipu.com.cn/article/150447.htm

        e.JPG



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

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉