<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于嵌入式的地鐵雜散電流監(jiān)測裝置的設(shè)計

          基于嵌入式的地鐵雜散電流監(jiān)測裝置的設(shè)計

          作者: 時間:2009-05-21 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/152477.htm

          可以看到,傳統(tǒng)的程序是單任務(wù)機制的,各個模塊構(gòu)成一個整體,作為一個任務(wù)運行。在實際應(yīng)用中,這種程序的安全性差,只要一個系統(tǒng)的模塊出了錯誤,整個系統(tǒng)工作就會被打亂,只有利用看門狗進行復(fù)位。這對于比較復(fù)雜的系統(tǒng),在實際運行中看門狗就會頻繁地發(fā)生復(fù)位操作。而且由于數(shù)據(jù)采集和鍵盤程序的執(zhí)行頻率可能相差很多,這樣對系統(tǒng)的定時要求就會很高,傳統(tǒng)的程序流程對實時性就難以很好地滿足。
          3.3.2  ucosII 的系統(tǒng)程序流程
          ucosII 的程序流程如圖4所示。程序中,每個模塊對應(yīng)一個任務(wù),彼此之間是并行的,但每個模塊都對應(yīng)著一個不同的優(yōu)先級,由進行調(diào)度運行。系統(tǒng)可以通過監(jiān)控模塊對其他模塊的工作進行監(jiān)控,從而減少看門狗的復(fù)位次數(shù)。而且通過ucosII 內(nèi)核的任務(wù)調(diào)度,系統(tǒng)的實時性會提高很多。

          3. 4 任務(wù)的劃分和構(gòu)成
          系統(tǒng)中并行存在的幾個任務(wù)按優(yōu)先級從高到低依次是:顯示任務(wù)、鍵盤管理任務(wù)、輸出任務(wù)、各路數(shù)據(jù)數(shù)據(jù)采集任務(wù)和數(shù)據(jù)處理任務(wù)。系統(tǒng)采用靜態(tài)優(yōu)先級,這樣系統(tǒng)的控制會相對比較簡單。
          系統(tǒng)中的每個任務(wù)包括應(yīng)用程序、任務(wù)堆棧以及任務(wù)控制塊( TCB) 三部分。任務(wù)控制塊是一個數(shù)據(jù)結(jié)構(gòu),當(dāng)任務(wù)的CPU 使用權(quán)被剝奪時,ucosII 用它來保存該任務(wù)的狀態(tài)。當(dāng)任務(wù)重新獲得CPU 的使用權(quán)時,任務(wù)控制塊能確保任務(wù)從被中斷的那一點執(zhí)行下去。可以通過查詢?nèi)蝿?wù)控制塊的內(nèi)容從而對任務(wù)進行管理。系統(tǒng)中任務(wù)的狀態(tài)有5 種:休眠態(tài)、就緒態(tài)、運行態(tài)、中斷服務(wù)和等待態(tài)。狀態(tài)之間的轉(zhuǎn)換如圖5所示。

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

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

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




          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();