第15章 RTX51實時操作系統_第1頁
第15章 RTX51實時操作系統_第2頁
第15章 RTX51實時操作系統_第3頁
第15章 RTX51實時操作系統_第4頁
第15章 RTX51實時操作系統_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、check_serial_io( )process_serial_cmds( )check_kbd_io( )process_kbd_cmds( )app1_execute( )app2_execute( )任務調度任務調度時間片輪轉、任務優(yōu)先級設定等功能時間片輪轉、任務優(yōu)先級設定等功能標準版(標準版(RTX51-FullRTX51-Full)和精簡版()和精簡版(RTX51-TinyRTX51-Tiny)。)。在在RTX51-FullRTX51-Full中:既可以以輪循(中:既可以以輪循(Round-RobinRound-Robin)方式執(zhí))方式執(zhí)行任務,也可以按行任務,也可以按4 4級任務

2、優(yōu)先級的方式切換不同優(yōu)先級級任務優(yōu)先級的方式切換不同優(yōu)先級的任務。以并行方式工作,支持中斷管理,信號和消息的任務。以并行方式工作,支持中斷管理,信號和消息可以通過郵箱系統在不同任務之間傳遞??梢酝ㄟ^郵箱系統在不同任務之間傳遞。RTX51-TinyRTX51-Tiny是是RTX51-FullRTX51-Full的一個子集,支持的一個子集,支持RTX51RTX51中絕大中絕大多數的特性,且不需要外部多數的特性,且不需要外部RAM(XDATA)RAM(XDATA)。RTX51-TinyRTX51-Tiny支支持持RTX51-FullRTX51-Full的許多特性,但不具有以下功能:的許多特性,但不具

3、有以下功能:l不支持優(yōu)先任務切換不支持優(yōu)先任務切換l不包含信息子程序不包含信息子程序l無存儲器庫分配子程序。無存儲器庫分配子程序。描述描述RTX51-FullRTX51-Tiny任務數量任務數量最多最多256個;可同時激活個;可同時激活19個個16個個RAM需求需求4046Byte的的DATA空間空間20200ByteIDATA空間空間(用戶堆棧用戶堆棧)最小最小650字節(jié)字節(jié)XDATA空間空間7Byte的的DATA空間空間3倍于任務數量的倍于任務數量的IDATA空間空間代碼要求代碼要求6KB8KB900Byte硬件要求硬件要求定時器定時器0或定時器或定時器1定時器定時器0系統時鐘系統時鐘10

4、00到到40000個周期個周期1000到到65535個周期個周期中斷請求時間中斷請求時間小于小于50個周期個周期小于小于20個周期個周期任務切換時間任務切換時間快速任務:快速任務:70100個周期個周期標準任務:標準任務:180700個周期個周期(取決于取決于堆棧負載堆棧負載)100700個周期個周期(取決于堆取決于堆棧負載棧負載)郵箱系統郵箱系統8個分別帶有整數入口的信箱個分別帶有整數入口的信箱不提供不提供內存池內存池最多最多16個內存池個內存池不提供不提供信號量信號量8*1位位不提供不提供u在使用在使用RTX51-TINYRTX51-TINY時,需要以下軟件支持:時,需要以下軟件支持:1

5、1)C51C51編譯器編譯器2 2)BL51BL51連接定位器連接定位器3 3)A51A51宏匯編器宏匯編器u庫文件庫文件RTX51TNY.LIBRTX51TNY.LIB必須存儲在必須存儲在C51LIBC51LIB下下,必須指定,必須指定 C51C51運行庫的路徑。運行庫的路徑。頭文件頭文件RTX51TNY.h RTX51TNY.h 必須存儲在必須存儲在C51INCC51INC下下,必須指定,必須指定C51C51包含文件的路徑。包含文件的路徑。RTX51Tiny通過輪循(Round-Robin)方式來實現多任務,以達到多個無限循環(huán)或任務的準并行執(zhí)行。這里的多任務并不是真正同時執(zhí)行的,而是使用不

6、同的時間片來執(zhí)行,即只是宏觀上的同時執(zhí)行。它將可用的CPU周期分成多個時間片,由RTX51把這些時間片分配給每一個任務使用。每個任務只能在預定的時間片里運行,然后RTX51再切換到另一個己經準備就緒的任務,讓它再執(zhí)行一定的時間片。時間片一般是比較短促的,一個時間片大約只有毫秒級時間。正是由于這個原因,在用戶看來,多個任務似乎是在同時執(zhí)行的。 void taskname(void) _task_ num其中,num是任務號,取值為0-15;taskname是任務名稱(亦即函數名)。下面是一個具體的任務定義void init(void) _task_ 0 /* 操作語句 */while(1)/*

7、操作語句 */RTX51-Tiny最多只最多只允許處理允許處理16個任務個任務狀態(tài)狀態(tài)描述描述運行運行(RUNNING) 當前正在運行的任務處于當前正在運行的任務處于RUNNING態(tài),同一時刻只能有態(tài),同一時刻只能有1個個任務處于該狀態(tài)。任務處于該狀態(tài)。就緒就緒(READY)等待運行的任務處于等待運行的任務處于READY態(tài),可能有多個。當前運行的任態(tài),可能有多個。當前運行的任務時間片完成后,從務時間片完成后,從READY態(tài)的任務隊列中選取下一個任務態(tài)的任務隊列中選取下一個任務運行,使其進入運行,使其進入RUNNING態(tài)。態(tài)。超時超時(TIMEOUT) 任務由于時間片用完處于任務由于時間片用完處

8、于TIMEOUT態(tài),在僅具有時間片輪態(tài),在僅具有時間片輪循調度方式的循調度方式的RTX51-Tiny中,該狀態(tài)等價于中,該狀態(tài)等價于READY態(tài)。態(tài)。等待等待(WAITING)正在等待一個事件發(fā)生的任務處于正在等待一個事件發(fā)生的任務處于WAITING態(tài)。如果該事件態(tài)。如果該事件發(fā)生,則任務進入發(fā)生,則任務進入READY態(tài)。態(tài)。刪除刪除(DELETED) 尚未啟動的任務處于尚未啟動的任務處于DELETED態(tài)態(tài)READY態(tài)態(tài)/TIMEOUT態(tài)態(tài)RUNNING態(tài)態(tài)WAITING態(tài)態(tài)時間片到來時間片到來時間片結束時間片結束等待一個事件等待一個事件事件發(fā)生事件發(fā)生#include #include ui

9、nt counter0=0;uint counter1=0;void job0() _task_ 0/程序的執(zhí)行從任務0開始os_create_task(1);/將任務將任務1標記為標記為“READY”狀態(tài)狀態(tài)while(1)counter0+;/任務函數內部必須構成死循環(huán)任務函數內部必須構成死循環(huán)void job1() _task_ 1while(1)counter1+; /任務函數內部必須構成死循環(huán)任務函數內部必須構成死循環(huán)思考:思考:counter0和和counter1是交替加是交替加1么?么?不能出現不能出現main()函數函數1、os_create_task函數原型函數原型:char

10、 os_create_task(unsigned char task_id);功能說明功能說明:啟動已定義的編號為:啟動已定義的編號為task_id的任務,并標記為的任務,并標記為就緒,準備執(zhí)行。就緒,準備執(zhí)行。返回值返回值 : 如果任務成功啟動,此函數返回如果任務成功啟動,此函數返回0值;如果沒有值;如果沒有task_id說明的任務,則返回說明的任務,則返回-1。2、os_delete_task函數原型函數原型:char os_delete_task(unsigned char task_id);功能說明功能說明:停止編號為:停止編號為task_id的任務,并將此任務從任務的任務,并將此任務

11、從任務表中刪除。表中刪除。返回值返回值: 如果任務被成功停止并刪除,函數返回如果任務被成功停止并刪除,函數返回0值;如值;如果編號為果編號為task_id的任務沒有啟動或不存在,則的任務沒有啟動或不存在,則返回返回-1。3、os_running_task_id函數原型函數原型:char os_running_task_id(void);功能說明功能說明:檢測當前處于運行態(tài)的任務編號。:檢測當前處于運行態(tài)的任務編號。返回值返回值:返回當前處于運行態(tài)的任務編號,返回值為:返回當前處于運行態(tài)的任務編號,返回值為015。4、os_set_ready函數原型函數原型:void os_set_ready(

12、unsigned char task_id);功能說明功能說明:將編號為:將編號為task_id的任務設置為就緒態(tài)。的任務設置為就緒態(tài)。返回值返回值: 無無5、os_wait函數原型函數原型:char os_wait(unsigned char event_sel, /*等待的事件等待的事件*/ unsigned char ticks, /*等待時長等待時長,即定時器的溢出次數即定時器的溢出次數*/ unsigned char dummy ); /*Tiny版未用,恒為版未用,恒為0*/ 功能說明功能說明:暫停當前執(zhí)行的任務,并等待一個或多個事件:暫停當前執(zhí)行的任務,并等待一個或多個事件(如時

13、如時間間隔、超時、從另一個任務或中斷發(fā)出的信號等間間隔、超時、從另一個任務或中斷發(fā)出的信號等)發(fā)生。參發(fā)生。參數數event_sel說明所等待的一個或幾個事件的組合,事件種類說明所等待的一個或幾個事件的組合,事件種類如下表所示。如下表所示。事件事件描述描述K_SIG等待一個信號量等待一個信號量K_TMO等待由等待由ticks指定的超時時間指定的超時時間K_IVL等待由等待由ticks指定的時間間隔指定的時間間隔5、os_wait返回值返回值:當有一個指定的事件發(fā)生時,任務被置為就緒態(tài)。:當有一個指定的事件發(fā)生時,任務被置為就緒態(tài)。當任務繼續(xù)執(zhí)行時,當任務繼續(xù)執(zhí)行時,os_wait返回重新啟動任

14、務的特返回重新啟動任務的特定事件。有以下可能的返回值:定事件。有以下可能的返回值:事件事件描述描述RDY_EVENT任務就緒標志被任務就緒標志被os_set_ready或或isr_set_ready函數置位函數置位SIG_EVENT接收到一個信號量接收到一個信號量TMO_EVENT達到超時或間隔時間達到超時或間隔時間NOT_OKevent_sel參數無效參數無效6、os_wait1函數原型函數原型:char os_wait1(unsigned char event_sel); /*等待的事件等待的事件*/功能說明功能說明:暫停當前執(zhí)行的任務,并等待一個事件發(fā)生。該:暫停當前執(zhí)行的任務,并等待一

15、個事件發(fā)生。該函數是函數是os_wait函數的一個子集,它不支持所有的事件,參函數的一個子集,它不支持所有的事件,參數數event_sel只能是只能是K_SIG。返回值返回值: 與與os_wait函數對比,缺少函數對比,缺少TMO_EVENT。7、os_wait2函數原型函數原型:char os_wait2(unsigned char event_sel, /*等待的事件等待的事件*/ unsigned char ticks);/*等待的定時器時標數等待的定時器時標數*/功能說明功能說明:與:與os_wait函數相同,但沒有函數相同,但沒有dummy參數。參數。返回值返回值: 與與os_wai

16、t函數相同函數相同8、os_send_signal函數原型函數原型:char os_send_signal(unsigned char task_id);功能說明功能說明:該函數向編號:該函數向編號task_id的任務發(fā)送一個信號。若該的任務發(fā)送一個信號。若該任務已經在等待此信號,本函數將任務置為就緒態(tài);若該任務已經在等待此信號,本函數將任務置為就緒態(tài);若該任務沒有準備接收此信號,則信號將存儲在任務的信號標任務沒有準備接收此信號,則信號將存儲在任務的信號標志中。志中。 返回值返回值:函數執(zhí)行成功返回:函數執(zhí)行成功返回0;若指定的任務不存在,返回;若指定的任務不存在,返回-1。9、os_clea

17、r_signal函數原型函數原型:char os_clear_signal(unsigned char task_id);功能說明功能說明:該函數向清楚號:該函數向清楚號task_id的任務的信號標志。的任務的信號標志。返回值返回值:若信號標志被成功清零,返回:若信號標志被成功清零,返回0;若指定的任務不存;若指定的任務不存在,返回在,返回-1。10、isr_send_signal函數原型函數原型:char isr_send_signal(unsigned char task_id);功能說明功能說明:該函數功能與:該函數功能與os_send_signal函數完全相同,區(qū)別函數完全相同,區(qū)別在

18、于只能從中斷函數中調用。在于只能從中斷函數中調用。 返回值返回值:函數執(zhí)行成功返回:函數執(zhí)行成功返回0;若指定的任務不存在,返回;若指定的任務不存在,返回-1。11、isr_set_ready函數原型函數原型:void isr_set_ready(unsigned char task_id);功能說明功能說明:將編號為:將編號為task_id的任務設置為就緒態(tài)。的任務設置為就緒態(tài)。 僅能從中僅能從中斷函數中調用。斷函數中調用。返回值返回值: 無。無。12、os_switch_task函數原型函數原型:char os_switch_task(void);功能說明功能說明:該函數讓調用它的任務暫時

19、停止運行,轉而切換:該函數讓調用它的任務暫時停止運行,轉而切換至另外一個任務運行。如果調用該函數的任務是唯一一個至另外一個任務運行。如果調用該函數的任務是唯一一個就緒任務,那么該任務將立即恢復運行。就緒任務,那么該任務將立即恢復運行。返回值返回值: 無。無。13、os_reset_interval函數原型函數原型: void os_reset_interval(unsigned char ticks);功能說明功能說明:用于糾正由于:用于糾正由于os_wait函數同時等待函數同時等待K_SIG和和K_IVL事件而產生的時間問題。如果一個信號事件事件而產生的時間問題。如果一個信號事件(K_SIG)引起引起os_wait退出,時間間隔定時器并不調整,這樣會導致退出,時間間隔定時器并不調整,這樣會導致后續(xù)的后續(xù)的os_wait調用(等待一個時間間隔)延遲的不是預期調用(等待一個時間間隔)延遲的不是預期的時間周期。該函數允許將時間間隔定時器復位,這樣,的時間周期。該函數允許將時間間隔定時器復位,這樣,后續(xù)對后續(xù)對os_wait的調用就會按預期的操作進行。的調用就會按預期的操作進行。返回值返回值: 無。無。;-; RTX51-tiny的硬件定時器的硬件定時器;用下面的用下面的EQU可預置可預置RTX51的定時器時間常數的定時器時間常數;用用8

溫馨提示

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

評論

0/150

提交評論