第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng).ppt_第1頁
第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng).ppt_第2頁
第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng).ppt_第3頁
第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng).ppt_第4頁
第十三章 RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng).ppt_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、包括單片機(jī)接口技術(shù)(C51版本)、第13章RTX51實(shí)時(shí)多任務(wù)操作系統(tǒng)、內(nèi)容概述、主要多任務(wù)編程思想、RTX51操作系統(tǒng)的特性、模式和操作要求、RTX51工作原理、RTX51 TINY配置和基于RTX51 TINY的鍵盤顯示系統(tǒng)設(shè)計(jì)。教育目標(biāo)1。理解多任務(wù)編程思想,理解多任務(wù)編程和單任務(wù)編程的區(qū)別和優(yōu)點(diǎn)。2.了解RTX51的完全模式和最小模式之間的區(qū)別。3.您可以了解任務(wù)的不同狀態(tài)和定義,了解任務(wù)轉(zhuǎn)換過程,并設(shè)計(jì)簡單的任務(wù)轉(zhuǎn)換程序。您可以了解事件的定義,了解RTX51系統(tǒng)中的不同事件(如超時(shí)、間隔、信號、消息、中斷等),使用os_wait()函數(shù)同步兩個(gè)或多個(gè)任務(wù),使用信號控制任務(wù)的啟動和停止

2、。4.了解RTX51處理中斷的中斷功能和RTX51中的任務(wù)中斷(快速任務(wù)中斷和標(biāo)準(zhǔn)任務(wù)中斷)以及實(shí)現(xiàn)過程。5.了解RTX51 TINY的同步機(jī)制、調(diào)度規(guī)則、操作控制塊和存儲管理。掌握RTX51 TINY配置后,可以修改RTX51 TINY配置文件conf_tny.a51。6.熟悉基于RTX51 TINY的鍵盤、顯示系統(tǒng)的編程。131多任務(wù)編程思想,13.1.1單工作機(jī)制工作原理在單工作機(jī)制中,每個(gè)功能模塊以作為單個(gè)任務(wù)執(zhí)行的固定順序構(gòu)成一個(gè)整體。如果每個(gè)模塊所需的執(zhí)行頻率不匹配,程序就很難滿足。需要在運(yùn)行時(shí)動態(tài)更改執(zhí)行結(jié)構(gòu)的系統(tǒng)需要由許多條件判斷和分支傳輸語句控制,從而增加了程序的復(fù)雜性??勺x

3、性和可維護(hù)性不好,調(diào)試不便。增加了系統(tǒng)擴(kuò)展的困難。13.1.2多任務(wù)機(jī)制工作原理,每個(gè)功能模塊處于同等位置。每個(gè)功能模塊的執(zhí)行順序可以在程序執(zhí)行過程中動態(tài)更改。每個(gè)功能模塊的執(zhí)行頻率按優(yōu)先級顯示。每個(gè)子任務(wù)在自己的時(shí)間切片內(nèi)運(yùn)行,可以合理設(shè)計(jì)時(shí)間切片大小和每個(gè)任務(wù)的優(yōu)先級,以自然滿足系統(tǒng)內(nèi)各種復(fù)雜的計(jì)時(shí)要求。13.2 RTX51功能和操作要求,RTX51可執(zhí)行循環(huán)多任務(wù)、準(zhǔn)并行執(zhí)行多周期任務(wù)。作業(yè)不是同時(shí)運(yùn)行,而是按時(shí)間分段運(yùn)行,將有效的CPU時(shí)間劃分為時(shí)間段,并由RTX51為每個(gè)作業(yè)分配持續(xù)時(shí)間??梢詫TX51切換到其他作業(yè),每個(gè)作業(yè)允許計(jì)劃數(shù)量的時(shí)間。這段時(shí)間很短,通常只渡邊杏幾毫秒,因

4、此任務(wù)看起來同時(shí)運(yùn)行。RTX51使用定時(shí)子程序,其中8051的硬件計(jì)時(shí)器定期生成中斷以驅(qū)動RTX51時(shí)鐘。RTX51程序不需要基本函數(shù)。從任務(wù)0開始自動運(yùn)行。如果有默認(rèn)函數(shù),則必須使用os_create_task(RTX51 Tiny)或os_start_system(RTX51 Full)函數(shù)啟動RTX51。13.2.1 RTX51的特性;RTX51有兩種模式:RTX 51完全模式和最小模式。RTX51 Tiny是RTX51的子集,支持RTX51的大部分功能,不需要外部RAM (XDATA)。RTX51 Tiny支持RTX51完整版的許多功能,但不支持以下功能:循環(huán)多任務(wù)和按信號切換任務(wù)不支

5、持優(yōu)先級任務(wù)切換。沒有信息子程序存儲分配子程序,13.2.2 RTX51硬件要求,13.2.3 RTX51軟件要求,如果使用實(shí)時(shí)多任務(wù)操作系統(tǒng)RTX51 TINY,則需要以下軟件支持:1) C51編譯器2)BL51連接定位器3)A51宏匯編程序庫文件RTX51TNY。LIB必須存儲在C51LIB中,并且必須指定C51運(yùn)行時(shí)庫的路徑。頭文件RTX51TNY。h必須存儲在C51INC中,并且必須指定C51包含文件的路徑。RTX51 TINY可以在沒有外部數(shù)據(jù)存儲的單芯片8051系統(tǒng)上運(yùn)行,但應(yīng)用程序可以訪問外部存儲。RTX51 TINY可以使用C51編譯器支持的存儲模式,存儲模式選擇僅影響應(yīng)用程序

6、目標(biāo)文件的位置。RTX51 TINY系統(tǒng)變量和應(yīng)用程序的堆棧區(qū)域始終位于8051的內(nèi)部數(shù)據(jù)存儲(DATA/IDATA)中,RTX51 TINY應(yīng)用程序通常需要使用SMALL編譯模式。、13.3 RTX51基本概念和案例分析、13.3.1作業(yè)的狀態(tài)和定義RTX51將兩種類型的作業(yè)區(qū)分開來:快速作業(yè)和標(biāo)準(zhǔn)作業(yè)??焖俨僮骶哂锌焖夙憫?yīng)速度,每個(gè)快速操作使用8051個(gè)單獨(dú)的寄存器組,并有自己的堆棧區(qū)域。RTX51支持最大大同時(shí)有三個(gè)快速任務(wù)。由于標(biāo)準(zhǔn)操作需要更多的時(shí)間來切換操作,因此內(nèi)部RAM比快速操作少,所有標(biāo)準(zhǔn)操作共享一組寄存器和堆棧。切換作業(yè)時(shí),當(dāng)前作業(yè)的寄存器狀態(tài)和堆棧內(nèi)容將發(fā)送到外部存儲。RT

7、X51 FULL最多支持64個(gè)操作,而普通RTX51 TINY最多支持16個(gè)標(biāo)準(zhǔn)操作。RTX51作業(yè)狀態(tài),1)運(yùn)行:當(dāng)前運(yùn)行的作業(yè)處于運(yùn)行狀態(tài),一次只能運(yùn)行一個(gè)作業(yè)。2)READY :等待運(yùn)行的作業(yè)處于READY狀態(tài),當(dāng)前正在運(yùn)行的作業(yè)在運(yùn)行狀態(tài)結(jié)束后,準(zhǔn)備隊(duì)列中優(yōu)先級最高的作業(yè)進(jìn)入運(yùn)行狀態(tài)。3)等待阻塞:事件的作業(yè)處于鎖定狀態(tài),當(dāng)事件發(fā)生且優(yōu)先級高于正在運(yùn)行的作業(yè)時(shí),作業(yè)進(jìn)入運(yùn)行狀態(tài)。如果優(yōu)先級低于正在運(yùn)行的作業(yè),則該作業(yè)處于READY狀態(tài)。4)刪除:未啟動的作業(yè)處于刪除狀態(tài)。RTX51作業(yè)狀態(tài),5)作業(yè)切換RTX51是預(yù)占式多任務(wù)系統(tǒng)。在時(shí)間表旋轉(zhuǎn)模式下,同等任務(wù)是按時(shí)間片分別占用CPU。

8、RTX51任務(wù)有四個(gè)優(yōu)先級:您可以將0、1和2分配給標(biāo)準(zhǔn)任務(wù),優(yōu)先次序3保留給快速任務(wù)。每個(gè)作業(yè)都可以等待事件發(fā)生,而不會增加系統(tǒng)負(fù)擔(dān)。任務(wù)可以等待消息、信號、中斷、超時(shí)事件或它們的組合。任務(wù)切換是根據(jù)特定規(guī)則執(zhí)行的,包括進(jìn)入“就緒”狀態(tài)的高優(yōu)先級任務(wù)首先運(yùn)行。如果處于“就緒”狀態(tài)的多個(gè)任務(wù)具有相同的優(yōu)先級,則會開始第一次處于“就緒”狀態(tài)的運(yùn)行。操作狀態(tài)切換如圖13-3-1所示。圖13-3-1操作狀態(tài)切換圖,示例13-3-1簡單RTX51程序,該程序中的三個(gè)操作都是簡單的計(jì)數(shù)器循環(huán),分別反轉(zhuǎn)P1.0、P1.1和P1.2。RTX51開始運(yùn)行名為job 0的函數(shù),該函數(shù)生成job 1和job 2。

9、程序?qū)⒃谌蝿?wù)0運(yùn)行一段時(shí)間后運(yùn)行一段時(shí)間,直到任務(wù)1,然后運(yùn)行到任務(wù)2。任務(wù)2短暫運(yùn)行后,RTX51 TINY將轉(zhuǎn)換為任務(wù)0。這個(gè)處理過程無限重復(fù)。#include /* RTX-51 tiny標(biāo)頭文件*/# include long counter 0;/*任務(wù)0計(jì)數(shù)器*/長計(jì)數(shù)器1;/*任務(wù)1計(jì)數(shù)器*/長計(jì)數(shù)器2;/*任務(wù)2計(jì)數(shù)器*/sbit P1 _ 0=P10;Sbit P1 _ 1=P11Sbit P1 _ 2=P12,ob0()_ task _ 0 int I;OS _ create _ task(1);/*啟動任務(wù)1 */OS _ create _ task(2);/*開始作業(yè)2

10、 */while (1) /*無限循環(huán)*/counter 0;/* counter0上的1 */for(I=0);I1000I);P1_0=!P1 _ 0;作業(yè)job 1()_ task _ 1 int I;While (1) /*無限循環(huán)*/counter 1;/* counter1加1 */for(I=0);I1000I);P1_1=!P1 _ 1;job 1()_ task _ 1 int I;While (1) /*無限循環(huán)*/counter 1;/* counter1加1 */for(I=0);I1000I);P1_1=!P1 _ 1;13.3.2 RTX51事件,在等待一個(gè)作業(yè)的片

11、到達(dá)時(shí),RTX51使用os_wait函數(shù)通知RTX51,并使另一個(gè)作業(yè)運(yùn)行。此功能將終止當(dāng)前正在運(yùn)行的作業(yè),并等待指定的事件發(fā)生。此時(shí),您可以執(zhí)行任意數(shù)量的其他操作。RTX51的待機(jī)功能支持以下事件:*超時(shí):暫停正在運(yùn)行的任務(wù),并指定指定數(shù)量的時(shí)鐘周期。*間隔:類似于超時(shí),但不重置軟件計(jì)時(shí)器,典型的應(yīng)用程序是生成時(shí)鐘。*信號:用于作業(yè)中的同步調(diào)節(jié)。RTX51支持事件,*消息:適用于RTX51完整版,用于信息交換。我們可以把信息發(fā)送到特定的郵箱。消息由兩個(gè)字節(jié)組成,可以是用戶根據(jù)需要定義的數(shù)據(jù),也可以是指向數(shù)據(jù)的指針。郵箱中的消息列表已滿,消息傳輸中斷時(shí),消息將丟失。如果作業(yè)發(fā)送消息,則作業(yè)將進(jìn)

12、入待機(jī)狀態(tài),直到郵箱重新就位。郵箱根據(jù)FIFO原則管理消息,如果有多個(gè)任務(wù)在等待接收消息,則首先進(jìn)入接收隊(duì)列接收消息。郵箱最多可以存儲8條消息。郵箱滿后,最多只能有16個(gè)等待操作。RTX51支持事件,*中斷:適用于RTX51完整版,可等待8051硬件中斷的操作。* semapore:適用于RTX51 Full,semapore用于管理孔劉系統(tǒng)資源。令牌允許一次只能在一個(gè)操作中使用特定資源。當(dāng)多個(gè)操作請求訪問同一資源時(shí),首先請求允許訪問,然后其他操作進(jìn)入等待隊(duì)列,直到第一個(gè)操作完成。下一個(gè)操作不能繼續(xù)。使用(David asset,Northern Exposure(美國電視劇),1 os_wa

13、it函數(shù)的os_wait()函數(shù)暫停工作,直到事件發(fā)生。這使您可以同步兩個(gè)或多個(gè)任務(wù)。工作流程如下:當(dāng)任務(wù)沒有發(fā)生等待的事件時(shí),系統(tǒng)停止任務(wù)。事件發(fā)生時(shí),系統(tǒng)根據(jù)作業(yè)切換規(guī)則切換作業(yè)。使用Os_wait函數(shù)等待的最簡單事件是RTX51時(shí)鐘時(shí)間信號的超時(shí)時(shí)段。此類型的事件可用于需要延遲的操作??梢栽诖a中用作切換查詢。在這種情況下,每50毫秒只需確認(rèn)一次切換。范例13-3-2下列范例顯示當(dāng)其他工作可以執(zhí)行時(shí),如何使用os_wait函數(shù)延遲執(zhí)行。# include/* RTX-51 tiny functions/*任務(wù)1的計(jì)數(shù)器*/,job0 () _ task _ 0 OS _ create _

14、 task (1)/* counter0加1 */os_wait (K_TMO,5,0);/*等待超時(shí)信號: 5時(shí)鐘時(shí)間*/job1 () _task_ 1 while (1) /*無限循環(huán)*/counter 1;/*counter1加1 */os_wait (K_TMO,10,0);/*等待超時(shí)信號3360 10個(gè)時(shí)鐘時(shí)間*/job0首先啟動job1,然后將1加到counter0,job0調(diào)用os_wait函數(shù)以暫停5個(gè)時(shí)鐘時(shí)間信號。rtx51現(xiàn)在切換到下一個(gè)任務(wù)job1。Job1增加counter1的數(shù)量后,調(diào)用os_wait暫停10個(gè)時(shí)鐘信號。目前,rtx51沒有其他需要執(zhí)行的操作。因此

15、,在作業(yè)0可以繼續(xù)運(yùn)行之前,進(jìn)入空循環(huán),等待5個(gè)時(shí)鐘時(shí)間信號通過。此示例的結(jié)果是,counter0每5個(gè)時(shí)鐘周期加1,而counter1每10個(gè)時(shí)鐘周期加1。2使用RTX51的信號,可以使用os_wait功能暫停一個(gè)作業(yè),等待從另一個(gè)作業(yè)發(fā)送的信號或標(biāo)志。可用于協(xié)調(diào)多個(gè)操作,等待信號時(shí),系統(tǒng)將執(zhí)行以下操作:如果作業(yè)正在等待信號,且信號標(biāo)志為0,則作業(yè)將暫停,直到發(fā)送信號。如果信號標(biāo)志已為1,則當(dāng)操作查詢信號時(shí),信號標(biāo)志將被清除,操作將繼續(xù)。示例13-3-3信號使用示例# include long counter0/*任務(wù)0計(jì)數(shù)器*/長計(jì)數(shù)器1;/*任務(wù)1計(jì)數(shù)器*/長計(jì)數(shù)器2;/*任務(wù)2計(jì)數(shù)器*

16、/長計(jì)數(shù)器3;/*任務(wù)3計(jì)數(shù)器*/,任務(wù)0()_ task _ 0 OS _ create _ task(1);/*啟動任務(wù)1 */OS _ create _ task(2);/*啟動任務(wù)2 */OS _ create _ task(3);/*啟動操作3 */while (1) /*無限循環(huán)*/counter 0;/* counter0加1 */os_wait (K_TMO,5,0);/*等待超時(shí)信號: 5時(shí)鐘時(shí)間*/job1 () _task_ 1 while (1) /*無限循環(huán)*/counter 1;/*counter1加1 */os_wait (K_TMO,10,0);/*等待超時(shí)信號3360 10時(shí)鐘時(shí)間*/,job2 () _task_ 2 while (1) /*無限循環(huán)*/counter 2;/*counter2加1 */if (counter2 /*收到信號后,counter3加1 */job0啟動

溫馨提示

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

評論

0/150

提交評論