<span id="plx27"><var id="plx27"></var></span>
<dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>

    第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng)

    上傳人:jkl****17 文檔編號(hào):248212963 上傳時(shí)間:2024-10-22 格式:PPT 頁數(shù):40 大?。?87.50KB
    收藏 版權(quán)申訴 舉報(bào) 下載
    第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng)_第1頁
    第1頁 / 共40頁
    第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng)_第2頁
    第2頁 / 共40頁
    第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng)_第3頁
    第3頁 / 共40頁

    下載文檔到電腦,查找使用更方便

    15 積分

    下載資源

    還剩頁未讀,繼續(xù)閱讀

    資源描述:

    《第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng)(40頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

    1、,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,單片機(jī)接口技術(shù),(C51,版,),第十三章,RTX51,實(shí)時(shí)多任務(wù)操作系統(tǒng),內(nèi)容概述,主要介紹多任務(wù)編程思想、,RTX51,操作系統(tǒng)的特點(diǎn)、模式及運(yùn)行要求,,RTX51,的工作原理、,RTX51 TINY,的配置及基于,RTX51 TINY,的鍵盤顯示系統(tǒng)設(shè)計(jì)。,教學(xué)目標(biāo),1.,了解多任務(wù)編程思想,理解多任務(wù)編程與單任務(wù)編程的區(qū)別及優(yōu)點(diǎn)。,2.,了解,RTX51,的完全模式和最小模式的區(qū)別。,3.,理解任務(wù)的幾種狀態(tài)及其定義,掌握任務(wù)切換過程,能進(jìn)行簡單的任務(wù)切換程序設(shè)計(jì);理解事件的定義,了解,RTX51

    2、,系統(tǒng)中的超時(shí)、間隔、信號(hào)、消息、中斷等幾個(gè)事件,能使用,os_wait,(),函數(shù)同步,2,個(gè)或幾個(gè)任務(wù),能使用信號(hào)控制任務(wù)的啟動(dòng)和停止。,4.,了解,RTX51,處理中斷的中斷函數(shù)和,RTX51,的任務(wù)中斷(分為快速任務(wù)中斷和標(biāo)準(zhǔn)任務(wù)中斷)及實(shí)現(xiàn)過程。,5.,了解,RTX51 TINY,的同步機(jī)制、調(diào)度規(guī)則、任務(wù)控制塊、存儲(chǔ)器管理等。掌握,RTX51 TINY,的配置,能夠修改,RTX51 TINY,配置文件,conf_tny.a51,。,6.,掌握基于,RTX51 TINY,的鍵盤、顯示系統(tǒng)的程序設(shè)計(jì)。,13,1,多任務(wù)編程思想,13.1.1,單任務(wù)機(jī)制工作原理,在單任務(wù)機(jī)制下,各功能模

    3、塊按固定順序構(gòu)成一個(gè)整體,作為一個(gè)任務(wù)得到執(zhí)行。各個(gè)模塊要求的執(zhí)行頻率不一致時(shí)程序難以滿足。,需在運(yùn)行時(shí)動(dòng)態(tài)改變執(zhí)行結(jié)構(gòu)的系統(tǒng),程序需用許多條件判斷和分枝轉(zhuǎn)移語句進(jìn)行控制,增加了程序的復(fù)雜性。,其可讀性和可維護(hù)性很差,調(diào)試不便。增加了系統(tǒng)擴(kuò)充難度。,13.1.2,多任務(wù)機(jī)制工作原理,各功能模塊處于等同地位。,各功能模塊執(zhí)行順序可在程序運(yùn)行過程中動(dòng)態(tài)地改變。,各功能模塊的執(zhí)行頻率表現(xiàn)為它們的優(yōu)先級(jí)。,各子任務(wù)在自已的時(shí)間片內(nèi)運(yùn)行,通過合理設(shè)計(jì)時(shí)間片大小和各任務(wù)的優(yōu)先級(jí),可以自然地滿足系統(tǒng)內(nèi)各種復(fù)雜的時(shí)序要求。,13.2 RTX51,的特點(diǎn)及運(yùn)行要求,RTX51,執(zhí)行循環(huán)多任務(wù)處理,允許幾個(gè)循環(huán)任

    4、務(wù)準(zhǔn)并行執(zhí)行。,任務(wù)并不同時(shí)執(zhí)行而是按時(shí)間分段執(zhí)行,有效的,CPU,時(shí)間劃分成時(shí)間段并由,RTX51,將時(shí)間段分配給每個(gè)任務(wù)。每個(gè)任務(wù)允許執(zhí)行預(yù)定數(shù)量的時(shí)間,然后,RTX51,切換到另一個(gè)任務(wù)運(yùn)行,時(shí)間段非常短,通常僅有幾個(gè)毫秒,因此任務(wù)看起來好象是同時(shí)執(zhí)行的。,RTX51,使用一個(gè)定時(shí)子程序,其中斷驅(qū)動(dòng)是由,8051,的硬件定時(shí)器產(chǎn)生周期性中斷來驅(qū)動(dòng),RTX51,時(shí)鐘。,RTX51,不要求程序中有主函數(shù)。它自動(dòng)從任務(wù),0,開始執(zhí)行,如果有主函數(shù),則必須使用,os_create_task(RTX51 Tiny),或,os_start_system(RTX51 Full),函數(shù)啟動(dòng),RTX51,

    5、。,13.2.1 RTX51,的特點(diǎn),RTX51,有,2,個(gè)模式:,RTX51,完全模式和最小模式。,RTX51 Tiny,是,RTX51,的一個(gè)子集,支持,RTX51,中絕大多數(shù)的特性,且不需要外部,RAM(XDATA),。,RTX51 Tiny,支持,RTX51 Full,的許多特性,但不具有以下功能:,由循環(huán)多任務(wù)處理和信號(hào)實(shí)現(xiàn)任務(wù)切換,不支持優(yōu)先任務(wù)切換,不包含信息子程序,無存儲(chǔ)器庫分配子程序,13.2.2 RTX51,對(duì)硬件的要求,13.2.3 RTX51,對(duì)軟件的要求,在使用實(shí)時(shí)多任務(wù)操作系統(tǒng),RTX51 TINY,時(shí),需要以下軟件支持:,1,),C51,編譯器,2,),BL51,

    6、連接定位器,3,),A51,宏匯編器,庫文件,RTX51TNY.LIB,必須存儲(chǔ)在,C51LIB,下,必須指定,C51,運(yùn)行庫的路徑。頭文件,RTX51TNY.H,必須存儲(chǔ)在,C51INC,下,必須指定,C51,包含文件的路徑。,RTX51 TINY,可以在沒有外部數(shù)據(jù)存儲(chǔ)器的單片機(jī),8051,系統(tǒng)中運(yùn)行,但應(yīng)用程序可以存取外部存儲(chǔ)器。,RTX51 TINY,可以使用,C51,編譯器支持的存儲(chǔ)器模式,存儲(chǔ)器模式的選擇僅影響應(yīng)用程序目標(biāo)文件的定位。,RTX51 TINY,的系統(tǒng)變量以及應(yīng)用程序的堆棧區(qū)總是位于,8051,的內(nèi)部數(shù)據(jù)存儲(chǔ)器中(,DATA/IDATA,),典型地,,RTX51 TIN

    7、Y,應(yīng)用程序應(yīng)采用,SMALL,編譯模式。,13.3 RTX51,基本概念及實(shí)例分析,13.3.1,任務(wù)的狀態(tài)及定義,RTX51,區(qū)分,2,類任務(wù):快速任務(wù)和標(biāo)準(zhǔn)任務(wù)。快速任務(wù)有很快的響應(yīng)速度,每個(gè)快速任務(wù)使用,8051,一個(gè)單獨(dú)的寄存器組,并且有自己的堆棧區(qū)域。,RTX51,支持最大同時(shí)有,3,個(gè)快速任務(wù)。標(biāo)準(zhǔn)任務(wù)需要多一點(diǎn)的時(shí)間來進(jìn)行任務(wù)切換,因此使用的內(nèi)部,RAM,相對(duì)快速任務(wù)要少,所有的標(biāo)準(zhǔn)任務(wù)共用,1,個(gè)寄存器組和堆棧。當(dāng)任務(wù)切換的時(shí)候,當(dāng)前任務(wù)的寄存器狀態(tài)和堆棧內(nèi)容轉(zhuǎn)移到外部存儲(chǔ)器中。,RTX51 FULL,支持任務(wù)最多達(dá),64,個(gè),但一般,RTX51 TINY,支持最大,16,個(gè)

    8、標(biāo)準(zhǔn)任務(wù)。,RTX51,任務(wù)狀態(tài),1),運(yùn)行,(RUNNING):,當(dāng)前正在運(yùn)行的任務(wù)處于,RUNNING,狀態(tài),同一時(shí)間只有,1,個(gè)任務(wù)可以運(yùn)行。,2),就緒,(READY):,等待運(yùn)行的任務(wù)處于,READY,狀態(tài),在當(dāng)前運(yùn)行的任務(wù)退出運(yùn)行狀態(tài)后,就緒隊(duì)列中優(yōu)先級(jí)最高的任務(wù)進(jìn)入到運(yùn)行狀態(tài)。,3),阻塞,(BLOCKED):,等待一個(gè)事件的任務(wù)處于,BLOCKED,狀態(tài),如果事件發(fā)生且優(yōu)先級(jí)比正在運(yùn)行的任務(wù)高,此任務(wù)進(jìn)入運(yùn)行狀態(tài);如果優(yōu)先級(jí)比正在運(yùn)行的任務(wù)低,此任務(wù)進(jìn)入,READY,狀態(tài)。,4),刪除,(DELETED):,沒有開始的任務(wù)處于刪除狀態(tài)。,RTX51,任務(wù)狀態(tài),5),任務(wù)切換,R

    9、TX51,是搶占式多任務(wù)系統(tǒng);在時(shí)間片輪轉(zhuǎn)模式下,同級(jí)別的任務(wù)是按照時(shí)間片分別占用,CPU,的。,RTX51,任務(wù)有,4,個(gè)優(yōu)先級(jí):,0,、,1,、,2,可以分配給標(biāo)準(zhǔn)任務(wù),優(yōu)先級(jí),3,是為快速任務(wù)保留的。每個(gè)任務(wù)都可以等待事件的發(fā)生,而并不增加系統(tǒng)的負(fù)擔(dān);任務(wù)可以等待消息、信號(hào)、中斷、超時(shí)事件或者它們的組合。,任務(wù)切換是按照一定規(guī)則進(jìn)行的,包括:進(jìn)入到“就緒”狀態(tài)的優(yōu)先級(jí)高的任務(wù)先執(zhí)行;如果“就緒”狀態(tài)的幾個(gè)任務(wù)是同一個(gè)優(yōu)先級(jí),那么最先進(jìn)入“就緒”狀態(tài)的先執(zhí)行。任務(wù)狀態(tài)切換如圖,13-3-1,所示。,圖,13-3-1,任務(wù)狀態(tài)切換圖,例,13-3-1,簡單的,RTX51,程序,該程序中的三個(gè)

    10、任務(wù)都是簡單的計(jì)數(shù)器循環(huán),并分別對(duì),P1.0,、,P1.1,、,P1.2,取反。,RTX51,開始執(zhí)行函數(shù)名為,job0,的任務(wù),0,,由該任務(wù)創(chuàng)建任務(wù),1,和任務(wù),2,。程序在任務(wù),0,執(zhí)行一段時(shí)間后到任務(wù),1,執(zhí)行一個(gè)時(shí)間段,再到任務(wù),2,執(zhí)行,在任務(wù),2,執(zhí)行一會(huì)兒后,,RTX51 TINY,切換到任務(wù),0,。該處理過程無限重復(fù)下去。,#include /*RTX-51 tiny,頭文件 *,/,#include,long counter0;/*,任務(wù),0,的計(jì)數(shù)器 *,/,long counter1;/*,任務(wù),1,的計(jì)數(shù)器 *,/,long counter2;/*,任務(wù),2,的計(jì)數(shù)器

    11、 *,/,sbit,P1_0=P10;,sbit,P1_1=P11;,sbit,P1_2=P12;,ob0()_task_ 0 ,int,i;,os_create_task,(1);/*,啟動(dòng)任務(wù),1 */,os_create_task,(2);/*,啟動(dòng)任務(wù),2 */,while(1)/*,無窮循環(huán) *,/,counter0+;/*counter0,加,1 */,for(i,=0;i1000;i+);,P1_0=!P1_0;,job1()_task_ 1 ,int,i;,while(1)/*,無窮循環(huán) *,/,counter1+;/*counter1,加,1 */,for(i,=0;i100

    12、0;i+);,P1_1=!P1_1;,job1()_task_ 1 ,int,i;,while(1)/*,無窮循環(huán) *,/,counter1+;/*counter1,加,1 */,for(i,=0;i1000;i+);,P1_1=!P1_1;,13.3.2 RTX51,事件,在等待一個(gè)任務(wù)的時(shí)間片到達(dá)時(shí),,RTX51,使用,os_wait,函數(shù)通知,RTX51,,讓另一個(gè)任務(wù)開始執(zhí)行。這個(gè)功能終止正在運(yùn)行的當(dāng)前任務(wù),然后等待指定事件的發(fā)生。這時(shí),任意數(shù)量的其它任務(wù)仍可以執(zhí)行。,RTX51,的等待功能支持以下事件:,*超時(shí),(timeout),:,掛起運(yùn)行的任務(wù)指定數(shù)量的時(shí)鐘周期。,*間隔,(i

    13、nterval),:,類似于超時(shí),但是軟件定時(shí)器沒有復(fù)位,典型應(yīng)用是產(chǎn)生時(shí)鐘。,*信號(hào),(signal),:,用于任務(wù)內(nèi)部同步協(xié)調(diào)。,RTX51,支持的事件,*消息,(message),:,適用于,RTX51 Full,用于信息的交換。我們可以把一個(gè)消息發(fā)送到一個(gè)特定的郵箱。消息由,2,字節(jié)組成,可以是用戶按照自己的需求定義的數(shù)據(jù),也可以是指向數(shù)據(jù)的指針。,如果郵箱的消息列表已滿,而且是中斷發(fā)送消息,這個(gè)消息將會(huì)丟失;如果是任務(wù)發(fā)送消息,那么任務(wù)將會(huì)進(jìn)入到等待狀態(tài),直到郵箱重新有了位置可以接收這一條信息。,郵箱是按照,FIFO,的原則來管理消息的,如果幾個(gè)任務(wù)都在等待接收消息,那么最先進(jìn)入等待

    14、接收隊(duì)列的將接收消息。一個(gè)郵箱最多可以存儲(chǔ),8,條消息。當(dāng)郵箱滿的時(shí)候,最多只能有,16,個(gè)等待任務(wù)。,RTX51,支持的事件,*中斷,(interrupt),:,適用于,RTX51 Full,,一個(gè)任務(wù)可以等待,8051,硬件中斷。,*信號(hào)量,(semaphore),:,適用于,RTX51 Full,,信號(hào)量用于管理共享的系統(tǒng)資源。通過使用“令牌”,允許在同一時(shí)刻只有一個(gè)任務(wù)使用某些資源。如果幾個(gè)任務(wù)申請(qǐng)?jiān)L問同一個(gè)資源,那么首先提出申請(qǐng)的將允許訪問,其它的任務(wù)進(jìn)入等待隊(duì)列,直到第,1,個(gè)任務(wù)操作完畢,下一個(gè)任務(wù)才能繼續(xù)。,1,使用,os_wait,函數(shù),os_wait,(),函數(shù)掛起一個(gè)任務(wù)

    15、來等待一個(gè)事件的發(fā)生。這樣可以同步,2,個(gè)或幾個(gè)任務(wù)。它的工作過程如下:當(dāng)任務(wù)等待的事件沒有發(fā)生的時(shí)候,系統(tǒng)掛起這個(gè)任務(wù);當(dāng)事件發(fā)生時(shí),系統(tǒng)根據(jù)任務(wù)切換規(guī)則切換任務(wù)。使用,os_wait,函數(shù)等待的最簡單的事件是,RTX51,時(shí)鐘報(bào)時(shí)信號(hào)中的超時(shí)周期,該類型的事件可用于需要產(chǎn)生延時(shí)的任務(wù)。這可用作代碼中的切換查詢?cè)谶@樣的情況下只需要每,50ms,檢查一次切換。,例,13-3-2,下面的例子演示在允許其它任務(wù)執(zhí)行時(shí),如何使用,os_wait,函數(shù)延遲執(zhí)行。,#include /*RTX-51 tiny functions&defines */,long counter0;/*,任務(wù),0,的計(jì)數(shù)器

    16、 *,/,long counter1;/*,任務(wù),1,的計(jì)數(shù)器 *,/,job0()_task_ 0 ,os_create_task,(1);/*,啟動(dòng)任務(wù),1 */,while(1)/*,無窮循環(huán) *,/,counter0+;/*counter0,加,1 */,os_wait,(K_TMO,5,0);/*,等待超時(shí)信號(hào),:5,個(gè)時(shí)鐘報(bào)時(shí) *,/,job1()_task_ 1 ,while(1)/*,無窮循環(huán) *,/,counter1+;/*counter1,加,1 */,os_wait,(K_TMO,10,0);/*,等待超時(shí)信號(hào),:10,個(gè)時(shí)鐘報(bào)時(shí)*,/,job0,先啟動(dòng),job1,,然后在,counter0,加,1,計(jì)數(shù)以后,job0,呼叫,os_wait,函數(shù)暫停,5,個(gè)時(shí)鐘報(bào)時(shí)信號(hào)。這時(shí),rtx51,切換到下一個(gè)任務(wù),job1,。在,job1,增加,counter1,計(jì)數(shù)以后,它也調(diào)用,os_wait,以暫停,10,個(gè)時(shí)鐘報(bào)時(shí)信號(hào)?,F(xiàn)在,rtx51,沒有其他的任務(wù)需要執(zhí)行。因此在它可以延續(xù)執(zhí)行,job0,之前,它進(jìn)入一個(gè)空循環(huán),等待,5,個(gè)時(shí)鐘報(bào)時(shí)信號(hào)過去。,本例子的結(jié)果是,

    展開閱讀全文
    溫馨提示:
    1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
    2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
    3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
    4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
    5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
    6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
    7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
    關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

    copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

    備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


    本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

    欧美久久久一区二区三区,国产精品亚洲一区二区无码,亚洲国产精品综合久久20声音,亚洲国产精品无码久久久蜜芽
    <span id="plx27"><var id="plx27"></var></span>
    <dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>