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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于RTX51 的單片機(jī)軟件設(shè)計

          基于RTX51 的單片機(jī)軟件設(shè)計

          作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          1 概述

          很多單片機(jī)的應(yīng)用中都需要同時執(zhí)行很多任務(wù),對于這樣的應(yīng)用,我們可以利用實時操作系統(tǒng)來靈活地安排系統(tǒng)資源。RTX51是美國Keil公司開發(fā)的一種小型的應(yīng)用于MCS51系列單片機(jī)的實時多任務(wù)操作系統(tǒng),它可以工作所有8051單片機(jī)以及派生家族中,簡化了復(fù)雜的軟件設(shè)計,縮短了項目周期。我們實踐中用RTX51來開發(fā)單片機(jī)軟件。設(shè)計單片機(jī)控制的GPS接收板軟件,取得了很好的效果。

          2 RTX51介紹

          RTX51有2個模式:RTX51完全模式和最小模式。RTX51最小模式版是RTX51完全版的一個子集,可以很容易地運(yùn)行在8051系統(tǒng)上,而不需要外部RAM(DXATA)。RTX51完全模式有4個任務(wù)優(yōu)先級,可以和中斷函數(shù)并行處理,各個任務(wù)之間通過使用“郵箱”系統(tǒng)來進(jìn)行信號和消息的傳遞,可以從內(nèi)存池中申請和釋放內(nèi)存;同時,可以強(qiáng)制一個任務(wù)停止執(zhí)行,等待一個中斷,或者是其它中斷傳來的信號量或者消息。RTX51對系統(tǒng)硬件的要求如表1所列。

          2.1 RTX51任務(wù)

          RTX51區(qū)分2類任務(wù):快速任務(wù)和標(biāo)準(zhǔn)任務(wù)。快速任務(wù)有很快的響應(yīng)速度,每個快速任務(wù)使用8051一個單獨的寄存器組,并且有自己的堆棧區(qū)域。RTX51支持最大同時有3個快速任務(wù)。標(biāo)準(zhǔn)任務(wù)需要多一點的時間來進(jìn)行任務(wù)切換,因此使用的內(nèi)部RAM相對快速任務(wù)要少,所有的標(biāo)準(zhǔn)任務(wù)共用1個寄存器組和堆棧。當(dāng)任務(wù)切換的時候,當(dāng)前任務(wù)的寄存器狀態(tài)和堆棧內(nèi)容轉(zhuǎn)移到外部存儲器中。RTX51支持最大16個標(biāo)準(zhǔn)任務(wù)。

          RTX51任務(wù)狀態(tài):

          ①運(yùn)行(RUNNIGN)——當(dāng)前正在運(yùn)行的任務(wù)處于RUNNING狀態(tài),同一時間只有1個任務(wù)可以運(yùn)行。

          ②就緒(READY)——等待運(yùn)行的任務(wù)處于READY狀態(tài),在當(dāng)前運(yùn)行的任務(wù)退出運(yùn)行狀態(tài)后,就緒隊列中優(yōu)先級最高的任務(wù)進(jìn)入到運(yùn)行狀態(tài)。

          ③阻塞(BLOCKED)——等待一個事件的任務(wù)處于BLOCKED狀態(tài),如果事件發(fā)生且優(yōu)先級比正在運(yùn)行的任務(wù)高,此任務(wù)進(jìn)入運(yùn)行狀態(tài);如果優(yōu)先級比正在運(yùn)行的任務(wù)低,此任務(wù)進(jìn)入READY狀態(tài)。

          ④刪除(DELETED)——沒有開始的任務(wù)處于刪除狀態(tài)。

          ⑤任務(wù)切換——RTX51包含一個事件驅(qū)動的任務(wù)切換機(jī)制,它能夠按照任務(wù)的優(yōu)先級進(jìn)行切換,也就是搶占式多任務(wù)系統(tǒng);另外還有一個可選的時間片輪轉(zhuǎn)切換任務(wù)模式,在時間片輪轉(zhuǎn)模式下,同級別的任務(wù)是按照時間片分別占用CPU的。RTX51任務(wù)有4個優(yōu)先級:0、1、2可以分配給標(biāo)準(zhǔn)任務(wù),優(yōu)先級3是為快速任務(wù)保留的。每個任務(wù)都可以等待事件的發(fā)生,而并不增加系統(tǒng)的負(fù)擔(dān);任務(wù)可以等待消息、信號、中斷、超時事件或者它們的組合。任務(wù)切換是按照一定規(guī)則進(jìn)行的,包括:進(jìn)入到“就緒”狀態(tài)的優(yōu)先級高的任務(wù)先執(zhí)行;如果“就緒”狀態(tài)的幾個任務(wù)是同一個優(yōu)先級,那么最先進(jìn)入“就緒”狀態(tài)的先執(zhí)行。

          RTX51任務(wù)切換圖如圖1所示。



          2.2 RTX51事件

          ◇超時(timeout):掛起運(yùn)行的任務(wù)指定數(shù)量的時間周期。

          ◇間隔(interval):類似于超時,但是軟件定時器沒有復(fù)位,典型應(yīng)用是產(chǎn)生時鐘。

          ◇信號(signal):用于任務(wù)內(nèi)部同步協(xié)調(diào)。

          ◇消息(message):適用于RTX51 Full,用于信息的交換。我們可以把一個消息交送到一個特定的郵箱。消息由2字節(jié)組成,可以是用戶按照自己的需求定主的數(shù)據(jù),也可以是指向數(shù)據(jù)的指針。如果郵箱的消息列表滿,而且是中斷發(fā)送消息,這個消息將會丟失;如果是任務(wù)發(fā)送消息,那么任務(wù)將會進(jìn)入到等待狀態(tài),直到郵箱重新有了位置可以接收這一條消息。郵箱是按照FIFO的原則來管理消息的,如果幾個任務(wù)都在等待接收消息,那么最先進(jìn)入等待接收隊列的將接收消息。一個郵箱最多可以存儲8條消息。當(dāng)郵箱滿的時候,最多只能有16個等待任務(wù)。

          ◇中斷(interrup):適用于RTX51 Full,信號量用于管理共享的系統(tǒng)資源。通過使用“令牌”,允許在同一時刻只有一個任務(wù)使用某些資源。如果幾個任務(wù)申請訪問同一個資源,那么首先提出申請的將允許訪問,其它的任務(wù)進(jìn)入等待隊列,直到第1個任務(wù)操作完畢,下一個任務(wù)才能繼續(xù)。

          Os_wait()函數(shù)掛起一個任務(wù)來等待一個事件的發(fā)生。這樣可以同步2個或幾個任務(wù)。它的工作過程如下:當(dāng)任務(wù)等待的事件沒有發(fā)生的時候,系統(tǒng)掛起這個任務(wù);當(dāng)事件發(fā)生時,系統(tǒng)根據(jù)任務(wù)切換規(guī)則切換任務(wù)。

          上一頁 1 2 下一頁

          評論


          技術(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); })();