新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式實(shí)現(xiàn)地鐵雜散電流監(jiān)測(cè)裝置

嵌入式實(shí)現(xiàn)地鐵雜散電流監(jiān)測(cè)裝置

作者: 時(shí)間:2011-08-08 來源:網(wǎng)絡(luò) 收藏
3. 4 任務(wù)的劃分和構(gòu)成

本文引用地址:http://2s4d.com/article/150392.htm

  系統(tǒng)中并行存在的幾個(gè)任務(wù)按優(yōu)先級(jí)從高到低依次是:顯示任務(wù)、鍵盤管理任務(wù)、輸出任務(wù)、各路數(shù)據(jù)數(shù)據(jù)采集任務(wù)和數(shù)據(jù)處理任務(wù)。系統(tǒng)采用靜態(tài)優(yōu)先級(jí),這樣系統(tǒng)的控制會(huì)相對(duì)比較簡(jiǎn)單。

  系統(tǒng)中的每個(gè)任務(wù)包括應(yīng)用程序、任務(wù)堆棧以及任務(wù)控制塊( TCB) 三部分。任務(wù)控制塊是一個(gè)數(shù)據(jù)結(jié)構(gòu),當(dāng)任務(wù)的CPU 使用權(quán)被剝奪時(shí),ucosII 用它來保存該任務(wù)的狀態(tài)。當(dāng)任務(wù)重新獲得CPU 的使用權(quán)時(shí),任務(wù)控制塊能確保任務(wù)從被中斷的那一點(diǎn)執(zhí)行下去。操作系統(tǒng)可以通過查詢?nèi)蝿?wù)控制塊的內(nèi)容從而對(duì)任務(wù)進(jìn)行管理。系統(tǒng)中任務(wù)的狀態(tài)有5 種:休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、中斷服務(wù)和等待態(tài)。狀態(tài)之間的轉(zhuǎn)換如圖5所示。

  休眠態(tài)時(shí)任務(wù)駐留在程序空間中,還沒有交給uc/ os2II 管理。當(dāng)任務(wù)一旦建立,就進(jìn)入就緒態(tài)。就緒態(tài)中優(yōu)先級(jí)最高的任務(wù)轉(zhuǎn)為運(yùn)行態(tài)。如果系統(tǒng)的運(yùn)行導(dǎo)致就緒態(tài)中的一個(gè)任務(wù)優(yōu)先級(jí)高于運(yùn)行態(tài)的任務(wù)優(yōu)先級(jí),則系統(tǒng)通過調(diào)度使運(yùn)行態(tài)任務(wù)喪失對(duì)CPU 的控制權(quán)轉(zhuǎn)為等待態(tài)或者就緒態(tài),轉(zhuǎn)而運(yùn)行就緒態(tài)中的那個(gè)任務(wù)。這樣就了任務(wù)的切換。

  每個(gè)處于等待態(tài)的任務(wù)都對(duì)應(yīng)一個(gè)等待時(shí)間,時(shí)間管理函數(shù)可將等待時(shí)間已過的等待態(tài)的任務(wù)轉(zhuǎn)為就緒態(tài),這實(shí)際上也就是時(shí)鐘中斷的中斷服務(wù)程序。

  3.5 任務(wù)的通信和調(diào)度

  本系統(tǒng)中任務(wù)間的通信采用消息隊(duì)列來完成的。消息隊(duì)列是uc/ os2II 中的一種通信機(jī)制,可以使一個(gè)任務(wù)或者中斷服務(wù)子程序向另一任務(wù)發(fā)送以指針方式定義的變量。為方便易用,采用消息隊(duì)列,用于數(shù)據(jù)采集任務(wù)、數(shù)據(jù)處理任務(wù)、鍵盤管理任務(wù)、輸出任務(wù)、顯示任務(wù)之間的通信。系統(tǒng)通過隊(duì)列控制塊來管理消息隊(duì)列,每個(gè)消息隊(duì)列對(duì)應(yīng)一個(gè)隊(duì)列控制塊。消息的存取基于優(yōu)先級(jí)原則,隊(duì)列控制塊中等待任務(wù)列表內(nèi)優(yōu)先級(jí)任務(wù)最高的任務(wù)先從消息隊(duì)列中取消息,系統(tǒng)采用搶占式內(nèi)核,調(diào)度函數(shù)總是保證優(yōu)先級(jí)最高的就緒態(tài)任務(wù)轉(zhuǎn)為運(yùn)行態(tài)。當(dāng)就緒態(tài)的任務(wù)搶占CPU 時(shí),系統(tǒng)執(zhí)行一次中斷服務(wù)程序。當(dāng)任務(wù)中的消息發(fā)送完成以及中斷返回時(shí),系統(tǒng)調(diào)用調(diào)度函數(shù),將任務(wù)從等待態(tài)轉(zhuǎn)為就緒態(tài),這樣就緒態(tài)中任務(wù)的最高優(yōu)先級(jí)就會(huì)發(fā)生變化,進(jìn)而影響到運(yùn)行態(tài)和就緒態(tài)間的任務(wù)切換。在本系統(tǒng)中,正在運(yùn)行的任務(wù)需要通過消息(調(diào)用OSQPEND( ) 函數(shù)) 來等待一個(gè)事件的發(fā)生。假如該事件一直沒有出現(xiàn),調(diào)用該函數(shù)的任務(wù)將被置于等待狀態(tài)(優(yōu)先級(jí)最低的任務(wù)可不需要等待某個(gè)消息) 。此時(shí)下一個(gè)優(yōu)先級(jí)最高的任務(wù)將立即獲得CPU 控制權(quán)。

  4 系統(tǒng)的工作過程

  本系統(tǒng)采用兩種方式顯示采集的大小,循環(huán)顯示和指定顯示,在正常工作情況下,采用循環(huán)顯示方式顯示8路采集大小,每采集完一路電壓,就向數(shù)據(jù)處理任務(wù)發(fā)送一條消息,而數(shù)據(jù)處理任務(wù)每處理完一路就向顯示任務(wù)發(fā)送一條消息,由于鍵盤掃描任務(wù)優(yōu)先級(jí)比數(shù)據(jù)采集任務(wù)最高,每當(dāng)用戶鍵盤選擇時(shí),就搶斷當(dāng)前采集任務(wù),而去處理用戶需要選擇的那路電壓,并相應(yīng)顯示。當(dāng)采集超過一定標(biāo)準(zhǔn)時(shí),系統(tǒng)會(huì)報(bào)警,以告之人員,另外本系統(tǒng)還留有串行232接口,用于和微機(jī)通信,以儲(chǔ)存雜散電流的歷史情況。當(dāng)所有任務(wù)運(yùn)行完后,開始下一個(gè)周期的運(yùn)行。應(yīng)用程序與uc/ os2II 的內(nèi)核是一起下載到單片機(jī)系統(tǒng)中。成功的移植需要對(duì)內(nèi)核程序進(jìn)行一定的修改,主要是修改內(nèi)核中與硬件密切相關(guān)的幾個(gè)文件,具體可參考相關(guān)文獻(xiàn).

  5  結(jié)束語

  本系統(tǒng)經(jīng)調(diào)試,軟硬件工作均正常。實(shí)驗(yàn)證明,本系統(tǒng)較傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)在安全性和實(shí)時(shí)性方面都有了很大的提高,完全能夠適應(yīng)復(fù)雜系統(tǒng)的需要。

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

基爾霍夫電流相關(guān)文章:基爾霍夫電流定律



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

評(píng)論


相關(guān)推薦

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

關(guān)閉