RTX51實時操作系統(tǒng)課件_第1頁
RTX51實時操作系統(tǒng)課件_第2頁
RTX51實時操作系統(tǒng)課件_第3頁
RTX51實時操作系統(tǒng)課件_第4頁
RTX51實時操作系統(tǒng)課件_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第10章 RTX51實時操作系統(tǒng)主要內(nèi)容 操作系統(tǒng)基本概念RTX51系統(tǒng)特點 RTX51的程序結構RTX51的功能函數(shù)RTX51的任務調(diào)度RTX51的系統(tǒng)配置 RTX51的應用舉例第1頁,共47頁。10.1 操作系統(tǒng)基本概念10.1.1 前后臺系統(tǒng)前后臺系統(tǒng)的組成:前臺和后臺程序后臺:是一個無限循環(huán)的應用程序,循環(huán)中調(diào)用相應的任務函數(shù)完成相應的操作,各個任務依次運行,沒有調(diào)度,運行的次序不能改變。前臺:是中斷服務程序,處理異步事件。第2頁,共47頁。適用情形:一般不復雜且實時性要求不高的小系統(tǒng)很適合采用前后臺系統(tǒng),例如微波爐、電話機、玩具等。在另外一些基于省電的應用中,由于平時微處理器處在停機

2、狀態(tài),所有的事都靠中斷服務來完成,因此也常常采用前后臺系統(tǒng)模式。第3頁,共47頁。10.1.2 操作系統(tǒng) 操作系統(tǒng)(Operating System,簡稱OS)是計算機中最基本的程序。操作系統(tǒng)負責計算機系統(tǒng)中全部軟、硬資源的分配以及回收、控制與協(xié)調(diào)等并發(fā)的活動;操作系統(tǒng)提供用戶接口,使用戶獲得良好的工作環(huán)境;操作系統(tǒng)為用戶擴展新的系統(tǒng)功能提供軟件平臺。 操作系統(tǒng)的主要包括四大功能:處理機管理:解決CPU的分時復用。存儲管理:配合CPU調(diào)度內(nèi)存。設備管理:分配外設的使用,包括獨享、共享和虛擬。軟件資源管理:解決程序和信息的存取和管理等問題。第4頁,共47頁。 實時操作系統(tǒng)(RTOS)是指當外界事

3、件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,其處理的結果又能在規(guī)定的時間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應,并控制所有實時任務協(xié)調(diào)一致運行的操作系統(tǒng)。 用戶的應用程序是運行于RTOS之上的各個任務,RTOS根據(jù)各個任務的要求,進行資源(包括存儲器、外設等)管理、消息管理、任務調(diào)度和異常處理等工作。 實時多任務操作系統(tǒng),以分時方式運行多個任務,看上去好像是多個任務“同時”運行。任務之間的切換應當以優(yōu)先級為根據(jù),只有具有優(yōu)先服務方式的RTOS才是真正的實時操作系統(tǒng),而時間分片方式和協(xié)作方式的RTOS并不是真正的“實時”。10.1.3 實時操作系統(tǒng)第5頁,共47頁。10.1.4 臨界區(qū)

4、臨界資源:任何時候都只允許一個任務訪問的資源。臨界區(qū)或臨界段:用于訪問臨界資源的代碼段。臨界代碼段不允許多個并發(fā)任務交叉執(zhí)行,否則會產(chǎn)生嚴重后果,比如進入中斷后的現(xiàn)場保護代碼等。為確保臨界區(qū)代碼的安全執(zhí)行,在進入臨界區(qū)之前要關中斷,而臨界區(qū)代碼執(zhí)行完以后要立即開中斷第6頁,共47頁。 程序運行時可使用的軟、硬件環(huán)境統(tǒng)稱為資源。資源可以是輸入/輸出設備,例如打印機、鍵盤和顯示器;資源也可以是一個變量、一個結構或一個數(shù)組等。 共享資源就是指可以被一個以上任務使用的資源。為防止數(shù)據(jù)被破壞,每個任務在與共享資源打交道時,必須獨占該資源,這叫互斥。10.1.5 資源與共享資源第7頁,共47頁。 任務,也

5、稱為線程,是一個簡單的程序。一般地,每個任務都是一個無限的循環(huán)。 任務有五種狀態(tài):休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)(等待某一事件發(fā)生)和被中斷態(tài)。任何時刻,一個任務都處于這五種狀態(tài)之一的狀態(tài)下。 休眠態(tài)相當于該任務駐留在內(nèi)存中,但并不被多任務內(nèi)核所調(diào)度。就緒態(tài)意味著該任務已經(jīng)準備好,可以運行了,但由于該任務的優(yōu)先級比正在運行的任務的優(yōu)先級低,還暫不能運行 。運行態(tài)的任務是指該任務掌握了CPU的控制權,正在運行。掛起態(tài)指該任務在等待,等待某一事件的發(fā)生。被中斷狀態(tài)是指,發(fā)生中斷時,CPU提供相應的中斷服務,原來正在運行的任務暫不能運行,就進入了被中斷狀態(tài)。 10.1.6 任務第8頁,共47頁。10

6、.1.7 內(nèi)核與任務切換內(nèi)核 內(nèi)核是操作系統(tǒng)最基本的部分。多任務系統(tǒng)中,內(nèi)核負責管理各個任務,或者說為每個任務分配CPU時間,并且內(nèi)核決定一個程序在什么時候?qū)δ巢糠钟布僮鞫嚅L時間。內(nèi)核負責任務之間的通信,它提供的基本服務是任務切換。任務切換 當多任務內(nèi)核決定運行另外的任務時,保存正在運行任務的當前狀態(tài),即保存CPU寄存器中的全部內(nèi)容。這些內(nèi)容保存在任務的當前狀態(tài)保存區(qū),也就是任務自己的棧區(qū)之中。入棧工作完成以后,就把下一個將要運行的任務的當前狀態(tài)從任務的棧中重新裝入CPU的寄存器,并開始下一個任務的運行。這個過程就稱為任務切換。 第9頁,共47頁。多任務切換示意圖第10頁,共47頁。 調(diào)度是

7、內(nèi)核的主要職責之一,調(diào)度就是決定該輪到哪個任務運行了。任務的調(diào)度方式有基于時間片輪轉的調(diào)度和基于優(yōu)先級的調(diào)度。多數(shù)實時系統(tǒng)是基于優(yōu)先級調(diào)度法的。基于優(yōu)先級的調(diào)度法指CPU總是讓處于就緒態(tài)的優(yōu)先級最高的任務先運行。至于何時讓高優(yōu)先級任務掌握CPU的使用權,有兩種不同的情況。 占先式調(diào)度;非占先式調(diào)度。10.1.8 調(diào)度第11頁,共47頁。占先式調(diào)度 任何時候具有最高優(yōu)先級且已就緒的任務先執(zhí)行。一個正在執(zhí)行的任務放棄處理器的條件為:自愿放棄處理器(等待資源或執(zhí)行完畢);有高優(yōu)先級任務啟動,該高優(yōu)先級任務將搶占其執(zhí)行。當一個運行著的任務使一個比它優(yōu)先級更高的任務進入了就緒狀態(tài)時,當前任務的CPU使用

8、權就被剝奪了,或者說被掛起了,那個高優(yōu)先級的任務立刻得到了CPU的控制權。如果是中斷服務子程序是一個高優(yōu)先級的任務進入了就緒態(tài),則中斷完成時,中斷了的任務被掛起,優(yōu)先級高的那個任務開始運行。 占先式調(diào)度的優(yōu)點是實時性好、反應快,調(diào)度算法相對簡單,可優(yōu)先保證高優(yōu)先級任務的時間約束,其缺點是上下文切換多。第12頁,共47頁。非占先式調(diào)度 非占先式調(diào)度要求每個任務自我放棄CPU的所有權。這種方式下,異步事件還是由中斷服務來處理。中斷服務可以使一個高優(yōu)先級的任務由掛起狀態(tài)變?yōu)榫途w狀態(tài),但中斷服務以后控制權還是回到原來被中斷了的那個任務,直到該任務主動放棄CPU的使用權時,那個高優(yōu)先級的任務才能獲得CP

9、U的使用權。 非占先式調(diào)度的優(yōu)點是上下文切換少,幾乎不需要使用信號量保護共享數(shù)據(jù);缺點是處理器有效資源利用率低,任務級響應時間不確定,可調(diào)度性不好。第13頁,共47頁。10.1.9 函數(shù)的可重入性可重入(Reentrant)型函數(shù):是指可以被多個任務并發(fā)使用,而數(shù)據(jù)不會遭到破壞的函數(shù)??芍厝胄秃瘮?shù)特征:只使用局部變量,變量保存在CPU寄存器或堆棧中,可以在任意時刻被中斷,再重新恢復運行時,數(shù)據(jù)不會被破壞;若使用全局變量,則需滿足互斥條件。第14頁,共47頁??芍厝胄秃瘮?shù)實例void func1(int* x, int* y) int temp;temp= *x;*x = *y;*y = tem

10、p;不可重入型函數(shù)清單static int temp;void func2(int* x, int* y) temp = *x;*x = *y;*y = temp; 第15頁,共47頁。不可重入型函數(shù)運行示意圖 使用以下技術之一可使函數(shù)func2()具有可重入性:(1) 將temp定義為局部變量;(2) 在調(diào)用前,禁止中斷,執(zhí)行完畢后再開中斷;(3) 在調(diào)用過程中,應用信號量獨占使用該函數(shù)。第16頁,共47頁。10.1.10 信號量信號量 信號與信號量在英文中都是同一個詞Semaphore,并不加以區(qū)別。是一種通信機制。主要用來實現(xiàn)任務間同步以及標識某類資源的可用個數(shù)。兩種類型: 只取0和1兩

11、個值的二值(Binary)信號量,這種信號量也稱為信號; 由若干位組合而成的計數(shù)式(Counting)信號量,一般有8位、16位或者32位等若干種,具體是多少位取決于內(nèi)核。作用: 滿足互斥條件,實現(xiàn)共享資源的獨占使用; 標志某事件的發(fā)生; 使兩個任務的行為同步。第17頁,共47頁。(1)初始化信號量,也可稱為建立(CREATE)信號量。信號量初始化時,要給信號量賦初值,等待信號量的任務列表應清空。(2)等信號或申請信號量,可稱做掛起(PEND)。對于執(zhí)行等待信號量的任務來說,若該信號量有效,則信號量值減1,任務繼續(xù)執(zhí)行;若信號量值為0,則任務繼續(xù)被掛起。若內(nèi)核允許定義等待超時,則超時后,該任務

12、轉入就緒,同時返回錯誤代碼以示發(fā)生了超時錯誤。(3)給信號,可稱做發(fā)信號(POST)。若沒有任務等待該信號量,則信號量的值僅簡單加1;若只有一個任務等待該信號量,則該任務轉入就緒狀態(tài),信號量的值不加1;若有多個任務等待信號量,至于誰先得到信號量,那就要看內(nèi)核是如何調(diào)度的了。一般有兩種可能:一是按優(yōu)先級原則,等待信號量的任務中優(yōu)先級最高的先得到;二是按先進先出的原則,最早開始等待信號量的那個任務先得到。工作原理第18頁,共47頁。 所謂死鎖,是指各并發(fā)任務彼此等待對方所擁有的資源,且這些并發(fā)任務在得到對方的資源之前不會釋放自己所擁有的資源,從而造成大家都想得到資源而又都得不到資源,各并發(fā)任務不能

13、繼續(xù)向前推進的狀態(tài)。 最簡單的防止死鎖發(fā)生的方法有兩種:1. 讓每個任務先得到全部需要的資源,再進行下一步工作。2. 讓每個任務用同樣的順序去申請多個資源,釋放資源時使用相反的順序。10.1.11 死鎖第19頁,共47頁。10.1.12 消息隊列 消息用于兩個任務之間的通信,消息隊列是保存消息的容器。通過內(nèi)核提供的服務,任務或中斷服務子程序可以將一個消息放入消息隊列。同樣,一個或多個任務可以通過內(nèi)核服務從消息隊列中得到消息。 通常,先進入消息隊列的消息先給任務,遵循先進先出原則(FIFO)。 內(nèi)核提供的典型消息隊列服務如下:1.消息隊列初始化,隊列初始化時總是清為空;2.放一則消息到隊列中去(

14、POST);3.等待一則消息的到來(PEND);4.無等待取得消息。如果隊列中有消息則任務可以取得消息,消息從隊列中取走;但如果此時隊列為空,則內(nèi)核不將該任務掛起,只是用特別的返回代碼通知調(diào)用者,隊列中沒有消息。第20頁,共47頁。 中斷是指計算機在執(zhí)行程序的過程中,當出現(xiàn)異常情況或特殊請求時,計算機停止現(xiàn)行程序的運行,轉向?qū)@些異常情況或特殊請求的處理,處理結束后再返回到以下部分:1.在前后臺系統(tǒng)中,程序回到后臺程序;2.對非占先式內(nèi)核而言,程序回到被中斷了的任務;3.對占先式內(nèi)核而言,讓進入就緒態(tài)的優(yōu)先級最高的任務開始運行。10.1.13 中斷第21頁,共47頁。 時鐘節(jié)拍是特定的周期性中

15、斷。這個中斷可以看作是系統(tǒng)心臟的脈動。中斷之間的時間間隔取決于不同應用,是機器周期的一個整數(shù)倍,一般為10200ms,視系統(tǒng)的復雜性和對實時性的要求而定。內(nèi)核對任務的切換和延時等操作都是基于時鐘節(jié)拍的。時鐘節(jié)拍的頻率越快,系統(tǒng)的額外開銷就越大。10.1.14 時鐘節(jié)拍第22頁,共47頁。 RTX51是一款小巧的針對基于8051系列嵌入式系統(tǒng)的多任務實時操作系統(tǒng)。它的使用可以簡化比較復雜、有嚴格時間限制的軟件的設計過程。RTX51主要有兩個不同的可用版本: RTX5lFull標準版,既可以以循環(huán)(Round 一Robin )方式執(zhí)行任務,也可以按4級任務優(yōu)先級的方式切換不同優(yōu)先級的任務。標準版以

16、并行方式工作,支持中斷管理,信號和消息可以通過郵箱系統(tǒng)在不同任務之間傳遞。 RTX5lTiny精簡版,是其標準版的一個子集。它可以很容易地運行在8051的單芯片系統(tǒng)而不需要任何外部數(shù)據(jù)存儲器。通用性強,系統(tǒng)需求低,但功能上受到限制。它只支持循環(huán)方式和信號方式的任務切換,而不支持優(yōu)先級方式的任務切換。 KEIL C中自帶了RTX5lTiny,以下只講解RTX5lTiny的內(nèi)容,出現(xiàn)RTX51的地方默認為其精簡版RTX51Tiny。10.2 RTX51 系統(tǒng)特點第23頁,共47頁。 RTX51 可以在所有的8051 系列芯片上運行。用戶只需要用標準的C語言編寫RTX51 程序,然后用C51編譯器編

17、譯即可生成代碼。 RTX51 程序設計需要包含實時運行頭文件和必要的庫文件,并且要用BL51 連接定位器來實現(xiàn)連接。 在Keil中,你只需要在目標選項的Target標簽中的Operating中選擇RTX-51 Tiny,在你的頭文件中加上#include 即可。 第24頁,共47頁。在RTX51 TINY環(huán)境下生成代碼,需要用到下列工具:C51編譯器BL51連接/定位器A51宏匯編器 此外,庫文件RTX51TNY.LIB必須存放在環(huán)境變量C51LIB所指定的路徑下。 RTX51 Tiny版可以運行在8051的單芯片嵌入式系統(tǒng)上,且不需要任何外部數(shù)據(jù)存儲器,但也不排斥應用程序訪問外部的數(shù)據(jù)存儲器

18、。RTX51 Tiny版本可以使用C51所支持的所有存儲模式。所使用的存儲模式只影響應用對象的存儲位置。RTX51 Tiny的系統(tǒng)變量和應用程序的堆棧區(qū)總是存儲在8051的片內(nèi)RAM中(即DATA和IDATA)。典型的RTX51 Tiny應用程序一般運行于SMALL存儲模式下。第25頁,共47頁。 RTX51 Tiny版本使用了8051的定時器0和定時器0的中斷信號。SFR中的全局中斷允許位或定時器0中斷屏蔽位都可能使RTX51 Tiny停止運行。因此,除非有特殊的應用目的,應該使定時器0的中斷始終開啟,以保證RTX51 Tiny的正常運行。 實時操作系統(tǒng)的性能參數(shù)對嵌入式系統(tǒng)的應用開發(fā)也有著

19、直接影響,RTX51的性能參數(shù)如下表所示。描述RTX51 TINY 版本任務數(shù)16RAM 需求7 Byte data, 3(任務數(shù)) Byte idata代碼要求900 Byte硬件要求定時器0系統(tǒng)時鐘10065535周期中斷響應時間20周期任務切換時間100700周期依賴于堆棧裝載第26頁,共47頁。10.3 RTX51 的程序結構 RTX51Tiny通過循環(huán)(Round-Robin)方式來實現(xiàn)多任務,以達到多個無限循環(huán)或任務的準并行執(zhí)行。這里的多任務并不是真正同時執(zhí)行的,而是使用不同的時間片來執(zhí)行,即只是宏觀上的同時執(zhí)行。它將可用的CPU周期分成多個時間片,由RTX51把這些時間片分配給每

20、一個任務使用。每個任務只能在預定的時間片里運行。然后,RTX51再切換到另一個己經(jīng)準備就緒的任務,讓它再執(zhí)行一定的時間片。 時間片一般是比較短促的,一個時間片大約只有毫秒級時間。正是由于這個原因,在用戶看來,多個任務似乎是在同時執(zhí)行的。第27頁,共47頁。 RTX51 利用了一個由8051定時器中斷信號驅(qū)動的定時程序來實現(xiàn)控制。定時器產(chǎn)生的周期性中斷信號用來驅(qū)動RTX51的定時節(jié)拍。 RTX51與用戶程序中的main函數(shù)是無關的。用戶程序中即使沒有main 程序,操作系統(tǒng)也會自動從設定的任務0開始執(zhí)行。如果用戶程序中已經(jīng)有了main 函數(shù),就必須用人工方式來啟動RTX51。這對于RTX51 T

21、iny版,可以調(diào)用os_create_task函數(shù)來完成. 例:使用RTX51的Round-Robin任務方式實現(xiàn)兩個任務的調(diào)度執(zhí)行。程序中的兩個任務都是簡單的計數(shù)循環(huán)。第28頁,共47頁。#include int counter0;int counter1;void job0(void) _task_ 0os_create_task(1); /*任務l 己準備就緒*/while (1) /*無限循環(huán)*/ counter0+; /*更新計數(shù)值counter0*/ void job1(void) _task_ 1while(1) /*無限循環(huán)*/counter1+; /*更新計數(shù)值counter

22、1*/第29頁,共47頁。10.4 RTX51的功能函數(shù) RTX51精簡版支持的功能函數(shù)表 函數(shù)描述執(zhí)行周期數(shù)os_create_task將任務移入執(zhí)行隊列302os_delete_task執(zhí)行隊列中移去某任務172os_send_signal發(fā)送一信號到某任務(從某任務調(diào)用)408(任務切換)316(快速任務切換)71(不含任務切換)os_clear_signal刪除一發(fā)送信號57isr_send_signal發(fā)送一信號到某任務(從中斷調(diào)用)46os_running_task_id返回當前執(zhí)行的任務號os_wait等待某事件68(對未就緒信號)160(對未就緒消息)os_wait1等待某事件

23、os_wait2等待某事件第30頁,共47頁。10.4.1 信號控制函數(shù) isr_send_signal函數(shù)原型 char isr_send_signal(unsigned char task_id);功能說明 發(fā)送一個信號到task_id說明的任務。如果此任務已在等待一個信號,那么調(diào)用函數(shù)將使此任務就緒,準備執(zhí)行。否則,信號將存儲在此任務的信號標志中。此函數(shù)只能從中斷函數(shù)中調(diào)用。返 回 值 如果執(zhí)行成功,此函數(shù)返回0值;如果所指定的任務不存在,則返回-1 。第31頁,共47頁。 os_clear_signal函數(shù)原型 char os_clear_signal(unsigned char ta

24、sk_id);功能說明 清除由task_id說明的任務的信號返 回 值 如果信號清除成功,此函數(shù)返回0值;如果所指定的任務不存在,則返回-1 os_send_signal函數(shù)原型 char os_send_signal(unsigned char task_id);功能說明 發(fā)送一個信號到task_id說明的任務。如果此任務已在等待一個信號,那么調(diào)用函數(shù)將使此任務就緒,準備執(zhí)行。否則,信號將存儲在此任務的信號標志中。此函數(shù)只能在任務函數(shù)中調(diào)用返 回 值 如果執(zhí)行成功,此函數(shù)返回0值;如果所指定的任務不存在,則返回-1 第32頁,共47頁。10.4.2 任務控制函數(shù) os_create_task

25、函數(shù)原型 char os_create_task(unsigned char task_id);功能說明 啟動已定義的由task_id說明的任務。此任務根據(jù)RTX51運行規(guī)則,標記為就緒,并準備執(zhí)行。返 回 值 如果任務成功啟動,此函數(shù)返回0值;如果沒有task_id說明的任務,則返回-1 第33頁,共47頁。 os_delete_task函數(shù)原型 char os_delete_task(unsigned char task_id);功能說明 停止task_id說明的任務,此任務將從任務表中刪除。返 回 值 如果任務成功啟動,此函數(shù)返回0值;如果沒有task_id說明的任務,則返回-1。 os

26、_running_task_id函數(shù)原型 char os_running_task_id(unsigned char task_id);功能說明 判斷當前執(zhí)行任務的編號返 回 值 返回當前正在執(zhí)行的任務的編號,返回值為015。 第34頁,共47頁。10.4.3 延時控制函數(shù) os_wait函數(shù)原型 char os_wait( unsigned char event_sel, /*將要等待的事件*/ unsigned char tisks, /*將要等待的定時器時標數(shù)*/ unsigned char dummy ); /*未用參數(shù)*/ 功能說明 停止當前執(zhí)行的任務,并等待一個或多個事件,如時間間

27、隔、超時、從另一個任務或中斷發(fā)出的信號等。參數(shù)event_sel說明所等待的一個事件或幾個事件的組合。事件種類如下表所示。 事件描述K_IVL定時器溢出K_SIG收到信號K_TMO時間片超時RTX51的事件類別第35頁,共47頁。os_wait函數(shù)的返回值表 os_wait1 函數(shù)原型 char os_wait1(unsigned char event_sel);功能說明 暫停當前任務,等待一個事件的發(fā)生。它是os_wait函數(shù)的一個子集,不接受針對os_wait函數(shù)提供的全部事件。參數(shù)event_sel指定了等待的事件,它只能是K_SIG。返 回 值 當信號事件發(fā)生時,任務就被允許執(zhí)行,任務

28、的執(zhí)行將恢復。返回用于識別事件、使任務重新啟動的常量。 返回值描述SIG_EVENT信號被接收TMO_EVENT發(fā)生超時或事件間隔已過NOT_OKevent_sel的值非法第36頁,共47頁。 os_wait2函數(shù)原型 char os_wait2( unsigned char event_sel, /*將要等待的事件*/ unsigned char tisks ); /*將要等待的定時器時標數(shù)*/功能說明 與os_wait相同,但是不需要dummy參數(shù)。 返 回 值 與os_wait相同 第37頁,共47頁。10.5 RTX51的任務調(diào)度 RTX51利用任務狀態(tài)來管理各個任務。用戶為RTX51

29、定義的每個任務都會以各種狀態(tài)的某一種來運行。RTX51內(nèi)核為每個任務保留了適當?shù)臓顟B(tài)如下表所示。RTX51的任務狀態(tài)表 狀態(tài)描述Running運行狀態(tài)當前正在執(zhí)行的任務,在任一時刻只能有一個任務處于運行狀態(tài)Ready就緒狀態(tài)等待執(zhí)行的任務,當前任務執(zhí)行完后,接著執(zhí)行就緒狀態(tài)任務Waiting等待狀態(tài)等待某一事件的任務,如事件發(fā)生,任務進入就緒狀態(tài)Deleted刪除狀態(tài)沒有啟動的任務Time-out超時狀態(tài)與就緒狀態(tài)相似,放在round-robin中尚未執(zhí)行的任務第38頁,共47頁。 RTX51以round-robin多任務方式執(zhí)行程序,它支持多個無限循環(huán)或任務的準并行執(zhí)行。任務不是被同時執(zhí)行,

30、而是以分時的方式輪片執(zhí)行??捎玫腃PU時鐘周期被分成多個時間片,然后由RTX51 將這些時間片分配給各個任務。每個任務只允許在預定的時間片中執(zhí)行,時間片用完時,RTX51就切換至另一個就緒的任務,繼續(xù)執(zhí)行一段時間。時間片的具體長度可以用配置函數(shù)TIMESHARING來定義。 如果遇到因為一個任務處于等待并且占用了時間片而暫時無法往下執(zhí)行,可以調(diào)用系統(tǒng)函數(shù)os_wait來通知RTX51,以便將當前的任務掛起而提前執(zhí)行另一任務。 第39頁,共47頁。RTX51中處理任務分配的模塊稱為調(diào)度程序(Scheduler)。調(diào)度程序驅(qū)動哪個任務運行是按照以下的規(guī)則進行的:(1)如果發(fā)生以下情況時,當前運行的

31、任務將被中斷: 調(diào)用os_wait函數(shù),而所等待的事件未來到; 任務的執(zhí)行時間已經(jīng)超過所定義的Round-Robin循環(huán)時間間隔(2)如果發(fā)生以下情況時,另一個任務將被啟動: 已沒有正在執(zhí)行的任務; 將要執(zhí)行的任務處在就緒狀態(tài)或超時狀態(tài)。 第40頁,共47頁。10.6 RTX51的系統(tǒng)配置 編寫RTX51程序需要包含RTX51TNY.H 文件。在程序中,需要用一個關鍵字“_task_” 來聲明一個函數(shù)的任務屬性。RTX51程序不需要main 函數(shù)。在進行連接處理時,會將啟動任務0的執(zhí)行所需要的代碼連接進來,作為開始執(zhí)行的代碼。 用戶可以更改配置文件CONF_TNY.A51中的以下幾個參數(shù): 系

32、統(tǒng)定時器中斷所用的寄存器組 系統(tǒng)定時器的時間間隔 Round-Robin的超時(time-out)值 內(nèi)部數(shù)據(jù)存儲器的大小 RTX5l啟動后的自由堆棧大小 第41頁,共47頁。以下是配置文件的部分內(nèi)容:;RTX51 的硬件定時器;用下面的EQU可預置RTX51的定時器時間常數(shù);用8051 定時器0 作為控制軟件的定時器;定義定時器中斷用的寄存器組INT_REGBANK EQU 1 ;默認為寄存器1組;定義8051定時器0溢出所需的機器周期數(shù)INT_CLOCK EQU 10000 ;默認周期數(shù)為10000 ;定義Round-Robin 的Timeout 所需的定時器溢出數(shù)TIMESHARINGEQU 5 ;默認為5次;注意:Round-Robin任務切換可用TIMESHARING為0來屏蔽 第42頁,共47頁。;RTX51 堆??臻g;以下的EQU語句定

溫馨提示

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

評論

0/150

提交評論