第15章 RTX51操作系統(tǒng)原理及實(shí)現(xiàn)_第1頁(yè)
第15章 RTX51操作系統(tǒng)原理及實(shí)現(xiàn)_第2頁(yè)
第15章 RTX51操作系統(tǒng)原理及實(shí)現(xiàn)_第3頁(yè)
第15章 RTX51操作系統(tǒng)原理及實(shí)現(xiàn)_第4頁(yè)
第15章 RTX51操作系統(tǒng)原理及實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第15章 RTX51操作系統(tǒng)原理及實(shí)現(xiàn)何賓2015.02如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt1操作系統(tǒng)的必要性 操作系統(tǒng)基本知識(shí) RTX51操作系統(tǒng)的任務(wù) RTX51操作系統(tǒng)內(nèi)核函數(shù)RTX51操作系統(tǒng)實(shí)現(xiàn)本章主要內(nèi)容如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt2在不使用操作系統(tǒng)的傳統(tǒng)的單片機(jī)中,常使用單任務(wù)的程序或者輪詢的程序。一個(gè)標(biāo)準(zhǔn)的C程序用main函數(shù)啟動(dòng)執(zhí)行。在嵌入式應(yīng)用中,main通常作為一個(gè)無(wú)限循環(huán),被認(rèn)為一個(gè)單任務(wù),這個(gè)任務(wù)連續(xù)的運(yùn)行。操作系統(tǒng)的必要性-單任務(wù)程序如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt3【例】 單任務(wù)程序C語(yǔ)言描述的例子 int counter; void main (vo

2、id) counter = 0; while (1) /無(wú)限循環(huán) counter+; /遞增計(jì)數(shù)器 操作系統(tǒng)的必要性-單任務(wù)程序如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt4不用實(shí)時(shí)操作系統(tǒng)RTOS,解決單任務(wù)程序的一個(gè)方法就是將需要CPU執(zhí)行的一些程序編寫稱為子程序,然后用一個(gè)輪詢預(yù)安排的多任務(wù)機(jī)制,實(shí)現(xiàn)一個(gè)更復(fù)雜的C程序。在這個(gè)機(jī)制中,任務(wù)或者函數(shù)在一個(gè)無(wú)限循環(huán)中被重復(fù)的調(diào)用。 操作系統(tǒng)的必要性-輪詢程序如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt5【例】 輪詢程序 C語(yǔ)言描述的例子 int counter; void main (void) counter = 0; while (1) /無(wú)限循環(huán) ch

3、eck_serial_io (); process_serial_cmds (); /處理串行輸入 check_kbd_io (); process_kbd_cmds (); /處理鍵盤輸入 adjust_ctrlr_parms (); /調(diào)整控制器 counter+; /遞增計(jì)數(shù)器操作系統(tǒng)的必要性-輪詢程序如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt6操作系統(tǒng)是管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,是直接運(yùn)行在計(jì)算機(jī)硬件上的最基本的系統(tǒng)軟件,任何其他軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行。操作系統(tǒng)在硬件系統(tǒng)上運(yùn)行,它常駐內(nèi)存內(nèi),并提供給上層兩種接口:操作接口和編程接口。操作接口由一系列操作命令組

4、成,用戶通過(guò)操作接口可以方便地使用計(jì)算機(jī)。編程接口由一系列的系統(tǒng)調(diào)用組成各種程序可以使用這些系統(tǒng)調(diào)用讓操作系統(tǒng)為其服務(wù),并通過(guò)操作系統(tǒng)來(lái)使用硬件和軟件資源。操作系統(tǒng)基本知識(shí)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt7操作系統(tǒng)的作用主要體現(xiàn)在以下兩方面:屏蔽硬件物理特性和操作細(xì)節(jié),為用戶使用計(jì)算機(jī)提供了便利。有效管理系統(tǒng)資源,提高系統(tǒng)資源使用效率。操作系統(tǒng)基本知識(shí)-操作系統(tǒng)的作用如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt8操作系統(tǒng)位于底層硬件與用戶之間,是兩者溝通的橋梁。用戶可以通過(guò)操作系統(tǒng)的用戶界面,輸入命令。操作系統(tǒng)則對(duì)命令進(jìn)行解釋,驅(qū)動(dòng)硬件設(shè)備,實(shí)現(xiàn)用戶要求。操作系統(tǒng)基本知識(shí)-操作系統(tǒng)的功能如需原始P

5、PT文件請(qǐng)點(diǎn)擊此處/ppt9操作系統(tǒng)基本知識(shí)-操作系統(tǒng)的功能以現(xiàn)代觀點(diǎn)而言,一個(gè)完整的OS應(yīng)該提供以下的功能:資源管理內(nèi)存管理程序控制虛擬內(nèi)存人機(jī)交互用戶接口進(jìn)程管理用戶界面如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt10系統(tǒng)的設(shè)備資源和信息資源都是操作系統(tǒng)根據(jù)用戶需求按一定的策略來(lái)進(jìn)行分配和調(diào)度的。處理器管理或稱處理器調(diào)度,是操作系統(tǒng)資源管理功能的另一個(gè)重要內(nèi)容。操作系統(tǒng)的設(shè)備管理功能主要是分配和回收外部設(shè)備以及控制外部設(shè)備按用戶程序的要求進(jìn)行操作等。信息管理是操作系統(tǒng)的一個(gè)重要的功能,主要是向用戶提供一個(gè)文件系統(tǒng)。操作系統(tǒng)基本知識(shí)-資源管理如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt11操作系統(tǒng)控制用戶程

6、序的執(zhí)行主要有以下一些內(nèi)容:調(diào)入相應(yīng)的編譯程序,將用某種程序設(shè)計(jì)語(yǔ)言編寫的源程序編譯成計(jì)算機(jī)可執(zhí)行的目標(biāo)程序;分配內(nèi)存儲(chǔ)等資源將程序調(diào)入內(nèi)存并啟動(dòng);按用戶指定的要求處理執(zhí)行中出現(xiàn)的各種事件以及與操作員聯(lián)系請(qǐng)示有關(guān)意外事件的處理等。操作系統(tǒng)基本知識(shí)-程序控制如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt12操作系統(tǒng)的人機(jī)交互功能是決定計(jì)算機(jī)系統(tǒng)友好性的一個(gè)重要因素。人機(jī)交互功能主要靠可輸入輸出的外部設(shè)備和相應(yīng)的軟件來(lái)完成??晒┤藱C(jī)交互使用的設(shè)備主要有鍵盤顯示、鼠標(biāo)、各種模式識(shí)別設(shè)備等。與這些設(shè)備相應(yīng)的軟件就是操作系統(tǒng)提供人機(jī)交互功能的部分。人機(jī)交互部分的主要作用是控制有關(guān)設(shè)備的運(yùn)行和理解并執(zhí)行通過(guò)人機(jī)交互

7、設(shè)備傳來(lái)的有關(guān)的各種命令和要求。操作系統(tǒng)基本知識(shí)-人機(jī)交互如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt13不管是常駐程序或者應(yīng)用程序,他們都是以進(jìn)程為標(biāo)準(zhǔn)的執(zhí)行單位。進(jìn)程就是當(dāng)前正在運(yùn)行的程序。進(jìn)程管理指的是操作系統(tǒng)管理多個(gè)進(jìn)程的準(zhǔn)備、運(yùn)行、掛起和退出。進(jìn)程管理通常使用分時(shí)復(fù)用的調(diào)度機(jī)制,大部分的操作系統(tǒng)可以通過(guò)為不同進(jìn)程指定不同的優(yōu)先級(jí),從而改變?yōu)檫@些進(jìn)程所分配的時(shí)間片。在進(jìn)程管理中,優(yōu)先調(diào)度優(yōu)先級(jí)高的進(jìn)程。操作系統(tǒng)基本知識(shí)-進(jìn)程管理如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt14操作系統(tǒng)的存儲(chǔ)器管理功能提供:查找可用的存儲(chǔ)空間;配置與釋放存儲(chǔ)空間;交換內(nèi)存和外存的內(nèi)容;提供存儲(chǔ)器訪問(wèn)的權(quán)限等功能。操作系統(tǒng)

8、基本知識(shí)-內(nèi)存管理如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt15操作系統(tǒng)基本知識(shí)-虛擬內(nèi)存虛擬內(nèi)存是計(jì)算機(jī)系統(tǒng)內(nèi)存管理的一種技術(shù)。它使得應(yīng)用程序認(rèn)為它擁有連續(xù)的可用的內(nèi)存(一個(gè)連續(xù)完整的地址空間)。而實(shí)際上,它通常是被分隔成多個(gè)物理內(nèi)存碎片,還有部分暫時(shí)存儲(chǔ)在外部磁盤存儲(chǔ)器上,在需要時(shí)進(jìn)行數(shù)據(jù)交換。如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt16用戶接口包括作業(yè)一級(jí)接口和程序一級(jí)接口。作業(yè)一級(jí)接口為了便于用戶直接或間接地控制自己的作業(yè)而設(shè)置。它通常包括聯(lián)機(jī)用戶接口與脫機(jī)用戶接口。程序一級(jí)接口是為用戶程序在執(zhí)行中訪問(wèn)系統(tǒng)資源而設(shè)置的,通常由一組系統(tǒng)調(diào)用組成。操作系統(tǒng)基本知識(shí)-用戶接口如需原始PPT文件請(qǐng)點(diǎn)擊此

9、處/ppt17操作系統(tǒng)基本知識(shí)-用戶界面用戶界面(User Interface,UI)是系統(tǒng)和用戶之間進(jìn)行交互和信息交換的媒介,它實(shí)現(xiàn)信息的內(nèi)部形式與人類可以接受形式之間的轉(zhuǎn)換。目的在使得用戶能夠方便有效率地去操作硬件以達(dá)成雙向之交互,完成所希望借助硬件完成之工作。用戶界面定義廣泛,包含了人機(jī)交互與圖形用戶接口,凡參與人類與機(jī)械的信息交流的領(lǐng)域都存在著用戶界面。如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt18實(shí)時(shí)或者多任務(wù)應(yīng)用是由一個(gè)或多個(gè)執(zhí)行指定操作的任務(wù)所構(gòu)成的。RTX51 Tiny允許最多16個(gè)任務(wù)。任務(wù)是簡(jiǎn)單的C函數(shù),返回類型為void,有一個(gè)void參數(shù)列表。使用_task_函數(shù)屬性聲明。格

10、式如下:void func(void) _task_ numfunc為任務(wù)的函數(shù)名;_task_是定義任務(wù)關(guān)鍵字;num是任務(wù)ID號(hào),取值從015,每一個(gè)任務(wù)必須有一個(gè)唯一的任務(wù)號(hào)。RTX51操作系統(tǒng)的任務(wù)-定義任務(wù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt19【例】 定義任務(wù) C語(yǔ)言描述的例子 void job0 (void) _task_ 0 while(1) counter0+; /計(jì)數(shù)器遞增 RTX51操作系統(tǒng)的任務(wù)-定義任務(wù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt20每個(gè)在RTX51 Tiny中定義的任務(wù),都應(yīng)該在下面狀態(tài)中的其中某個(gè)狀態(tài)。RTX51操作系統(tǒng)的任務(wù)-管理任務(wù)不同狀態(tài)的描述狀態(tài)描

11、述RUNNING在RUNING狀態(tài)時(shí),正在執(zhí)行當(dāng)前任務(wù)。在一個(gè)時(shí)刻,只允許執(zhí)行一個(gè)任務(wù)READY在READY狀態(tài),等待執(zhí)行任務(wù)。當(dāng)處理完當(dāng)前運(yùn)行的任務(wù)后,RTX51 Tiny啟動(dòng)下一個(gè)準(zhǔn)備好的任務(wù)WAITING在WAITING狀態(tài),任務(wù)等待一個(gè)事件。如果發(fā)生一個(gè)事件,任務(wù)則進(jìn)入READY狀態(tài)DELETED在DELETED狀態(tài),沒(méi)有啟動(dòng)任務(wù)。TIME-OUT在TIME-OUT狀態(tài),任務(wù)被輪詢超時(shí)打斷。這個(gè)狀態(tài)等同于READY狀態(tài)。如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt21RTX51 Tiny執(zhí)行輪詢多任務(wù)調(diào)度,這樣允許模擬并行執(zhí)行多個(gè)無(wú)限循環(huán)或者任務(wù)。任務(wù)不是并發(fā)執(zhí)行的,而是按時(shí)間片執(zhí)行的??捎玫?/p>

12、CPU時(shí)間被分成時(shí)間片,RTX51 Tiny為每個(gè)任務(wù)分配一個(gè)時(shí)間片。每個(gè)任務(wù)允許執(zhí)行預(yù)先確定的時(shí)間長(zhǎng)度。然后,RTX51 Tiny切換到其他準(zhǔn)備運(yùn)行的任務(wù),然后這個(gè)任務(wù)執(zhí)行一段時(shí)間。時(shí)間片的長(zhǎng)度使用變量TIMESHARING定義。RTX51操作系統(tǒng)的任務(wù)-切換任務(wù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt22RTX51 Tiny中,負(fù)責(zé)分配處理器給一個(gè)任務(wù)的那部分稱為調(diào)度器。根據(jù)下面的規(guī)則,RTX51 Tiny調(diào)度器定義所運(yùn)行的任務(wù):如果發(fā)生下面的情況,則打斷當(dāng)前正在運(yùn)行的任務(wù):任務(wù)調(diào)用os_wait函數(shù),并且沒(méi)有產(chǎn)生指定的事件;執(zhí)行任務(wù)的時(shí)間大于定義的輪詢超時(shí)時(shí)間;如果發(fā)生下面的情況,則啟動(dòng)其他

13、任務(wù):沒(méi)有運(yùn)行其他任務(wù);將要啟動(dòng)的任務(wù)處于READY或者TIME_OUT狀態(tài);RTX51操作系統(tǒng)的任務(wù)-切換任務(wù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt23注:在調(diào)用這些內(nèi)核函數(shù)時(shí),必須包含頭文件rtx51tny.h。char isr_send_signal(unsigned char task_id) 功能:該函數(shù)發(fā)送信號(hào)到task_id所確定的任務(wù)。如果指定的任務(wù)已經(jīng)在等待信號(hào),則該函數(shù)調(diào)用將準(zhǔn)備用于執(zhí)行的任務(wù)。否則,保存信號(hào)到任務(wù)的信號(hào)標(biāo)志內(nèi)。該函數(shù)只能被中斷函數(shù)所調(diào)用。 返回值:0,表示成功;1,表示任務(wù)不存在;RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt24RTX51操

14、作系統(tǒng)內(nèi)核函數(shù)char os_clear_signal(unsigned char task_id) 功能:清除task_id指定任務(wù)的信號(hào)標(biāo)志; 返回:0,表示成功清除信號(hào)標(biāo)志;1,表示任務(wù)不存在如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt25【例】 調(diào)用isr_send_signal()函數(shù)的例子#include void tst_isr_send_signal (void) interrupt 2 isr_send_signal (8); /向任務(wù)8發(fā)送信號(hào) RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt26【例】 調(diào)用os_clear_signal()函數(shù)的例子 #includ

15、e void tst_os_clear_signal (void) _task_ 8 . os_clear_signal (5); /清除任務(wù)5中的信號(hào)標(biāo)志 . RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt27char os_create_task(unsigned char task_id) 功能:?jiǎn)?dòng)由task_id指定的任務(wù)。將該任務(wù)標(biāo)記為準(zhǔn)備狀態(tài),并且根據(jù)RTX51 Tiny指定的規(guī)則執(zhí)行該任務(wù)。 返回:0,表示成功啟動(dòng)任務(wù);1表示沒(méi)有啟動(dòng)任務(wù),或者不存在task_id定義的任務(wù)。RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt28RTX51操作系統(tǒng)內(nèi)核

16、函數(shù)char os_delete_task(unsigned char task_id) 功能:停止task_id指定的任務(wù),將由task_id指定的任務(wù)從任務(wù)列表中刪除。 返回:0,表示任務(wù)成功停止和刪除;1,表示指定的任務(wù)不存在或者task_id定義的任務(wù)沒(méi)有啟動(dòng)。如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt29【例】 調(diào)用os_create_task()函數(shù)的例子 #include #include void new_task (void) _task_ 2 . void tst_os_create_task (void) _task_ 0 . if (os_create_task (2) pr

17、intf (Couldnt start task 2n); . RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt30【例】 調(diào)用os_delete_task()函數(shù)的例子 #include #include void tst_os_delete_task (void) _task_ 0 . if (os_delete_task (2) printf (Couldnt start task 2n); . RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt31char os_running_task_id(void) 功能:確定當(dāng)前運(yùn)行任務(wù)的id。 返回:當(dāng)前運(yùn)行任務(wù)的任

18、務(wù)ID號(hào),值的范圍為015。 RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt32RTX51操作系統(tǒng)內(nèi)核函數(shù)char os_send_signal(unsigned char task_id) 功能:發(fā)送信號(hào)到task_id任務(wù)。如果指定的任務(wù)已經(jīng)在等待信號(hào),則該函數(shù)調(diào)用將準(zhǔn)備任務(wù)用于執(zhí)行。否則,保存信號(hào)到任務(wù)的信號(hào)標(biāo)志內(nèi)。 返回:0,表示成功;1,表示任務(wù)不存在。如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt33【例】 調(diào)用os_running_task_id()函數(shù)的例子 #include void tst_os_running_task (void) _task_ 3 unsigne

19、d char tid; tid = os_running_task_id (); / tid = 3 RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt34【例】 調(diào)用os_send_signal ()函數(shù)的例子#include void signal_func (void) _task_ 2 . os_send_signal (8); /向任務(wù)8發(fā)送信號(hào) .void tst_os_send_signal (void) _task_ 8 . os_send_signal (2); /向任務(wù)2發(fā)送信號(hào) . RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt35char o

20、s_wait(unsigned char event_sel, unsigned char ticks, unsigned int dummy) 功能:os_wait函數(shù)停止當(dāng)前的任務(wù),等待一個(gè)或多個(gè)事件,比如:來(lái)自時(shí)間間隔,來(lái)自一個(gè)超時(shí),或者來(lái)自其他任務(wù)或者中斷。event_sel 該參數(shù)指定了時(shí)間或者等待事件,可以是下面常數(shù)的任何的組合:K_IVL:等待一個(gè)定時(shí)器滴答間隔;K_SIG:等待一個(gè)信號(hào);K_TMO:等待一個(gè)超時(shí); RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt36tick 該參數(shù)指定用于等待一個(gè)間隔事件(K_IVL)或者超時(shí)事件(K_TMO)的定時(shí)器滴答的數(shù)目。

21、dummy 提供和RTX51的兼容性,RTX51 Tiny不使用。返回:指定事件發(fā)生時(shí),使能任務(wù)用于執(zhí)行?;謴?fù)執(zhí)行??赡艿姆祷刂担篠IG_EVENT:接收到一個(gè)信號(hào);TMO_EVENT:完成超時(shí),或者間隔過(guò)期;NOT_OK:event_sel參數(shù)無(wú)效; RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt37char os_wait1(unsigned char event_sel) 功能:os_wait1停止當(dāng)前的任務(wù),等待發(fā)生一個(gè)事件。os_wait1函數(shù)是os_wait函數(shù)的子集,不允許os_wait所提供的所有的事件。 其中:event_sel 指定等待的事件,只能有K_SI

22、G,即等待信號(hào)。 返回:當(dāng)信號(hào)事件發(fā)生時(shí),使能任務(wù)用于執(zhí)行?;謴?fù)執(zhí)行??赡艿姆祷刂担篠IG_EVENT或者NOT_OK。RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt38【例】 調(diào)用os_wait()函數(shù)的例子#include #include void tst_os_wait (void) _task_ 9 while (1) char event; event = os_wait (K_SIG | K_TMO, 50, 0); switch (event) default: break; /空操作 case TMO_EVENT: break; /超時(shí) case SIG_EV

23、ENT: os_reset_interval (100); /收到信號(hào),必須使用 break; / os_reset_interval調(diào)整延遲 RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt39 char os_wait2(unsigned char event_sel, unsigned char ticks) 功能:os_wait函數(shù)停止當(dāng)前的任務(wù),等待一個(gè)或多個(gè)事件,比如:來(lái)自時(shí)間間隔,來(lái)自一個(gè)超時(shí),或者來(lái)自其他任務(wù)或者中斷。 其中: event_sel參數(shù)指定了時(shí)間或者等待事件,能是下面常數(shù)的任何的組合: K_IVL:等待一個(gè)定時(shí)器滴答間隔;K_SIG:等待一個(gè)信號(hào);K

24、_TMO:等待一個(gè)超時(shí); RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt40tick:參數(shù)指定用于等待一個(gè)間隔事件(K_IVL)或者超時(shí)事件(K_TMO)的定時(shí)器滴答的數(shù)目。 返回:指定事件發(fā)生時(shí),使能任務(wù)用于執(zhí)行?;謴?fù)執(zhí)行??赡艿姆祷刂担篠IG_EVENT:接收到一個(gè)信號(hào);TMO_EVENT:完成超時(shí),或者間隔過(guò)期;NOT_OK:event_sel參數(shù)無(wú)效; RTX51操作系統(tǒng)內(nèi)核函數(shù)如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt41在這個(gè)例子中所創(chuàng)建的任務(wù)是實(shí)現(xiàn)簡(jiǎn)單的計(jì)數(shù)器循環(huán)。RTX51啟動(dòng)執(zhí)行名字為job0的任務(wù)0。這個(gè)函數(shù)添加另一個(gè)名字為job1的任務(wù)。當(dāng)job0執(zhí)行一段時(shí)間后

25、,RTX51切換到j(luò)ob1。在job1執(zhí)行一段時(shí)間,RTX51切換回job0。這個(gè)過(guò)程無(wú)限重復(fù)。RTX51操作系統(tǒng)實(shí)現(xiàn)1如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt42RTX51操作系統(tǒng)實(shí)現(xiàn)1【例】使用RTX51 Tiny內(nèi)核函數(shù)調(diào)用實(shí)現(xiàn)輪詢調(diào)度C語(yǔ)言描述#include unsigned char counter0; /定義無(wú)符號(hào)char類型變量counter0unsigned char counter1; /定義無(wú)符號(hào)char類型變量counter1void job0 (void) _task_ 0 /定義任務(wù)0 os_create_task (1); /創(chuàng)建一個(gè)任務(wù) while (1) /無(wú)限循

26、環(huán) counter0+; /更新計(jì)數(shù)器 如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt43void job1 (void) _task_ 1 /定義任務(wù)1 while (1)/無(wú)限循環(huán) counter1+; /更新計(jì)數(shù)器 RTX51操作系統(tǒng)實(shí)現(xiàn)1如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt44注:在使用RTX51操作系統(tǒng)時(shí),需要在Options for Target Target 1對(duì)話框界面中,選擇Target標(biāo)簽。在該標(biāo)簽窗口界面中,在Operating system右側(cè)的下拉框中,選擇RTX-51 Tiny選項(xiàng) 。 RTX51操作系統(tǒng)實(shí)現(xiàn)1如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt45下面通過(guò)Keil Visi

27、on調(diào)試器,說(shuō)明RTX51的運(yùn)行機(jī)制,步驟主要包括:在例子15-1目錄下,打開(kāi)該設(shè)計(jì)。在Keil Vision當(dāng)前設(shè)計(jì)主界面主菜單下,選擇Debug-Start/Stop Debug Session,進(jìn)入調(diào)試器模式。在當(dāng)前調(diào)試器主界面主菜單下,選擇View-Logic Analyzer選項(xiàng)在當(dāng)前調(diào)試器主界面右側(cè)上方,出現(xiàn)Logic Analyzer界面。 RTX51操作系統(tǒng)實(shí)現(xiàn)1如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt46 在該界面中,添加counter0和counter1兩個(gè)變量 RTX51操作系統(tǒng)實(shí)現(xiàn)1如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt47鼠標(biāo)右鍵分別單擊counter0和counter1,

28、出現(xiàn)浮動(dòng)菜單。在浮動(dòng)菜單內(nèi)選擇state選項(xiàng)。在當(dāng)前調(diào)試器主界面主菜單下,選擇View-Watch Windows-Watch 1。在當(dāng)前調(diào)試器主界面右下方出現(xiàn)Watch1窗口界面。在該界面中,添加counter0和counter1兩個(gè)變量。 RTX51操作系統(tǒng)實(shí)現(xiàn)1如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt48 按F5按鍵或者在當(dāng)前調(diào)試主界面主菜單下,選擇Debug-Run,運(yùn)行該程序。觀察Logic Analyzer窗口。通過(guò)觀察counter0和counter1,很明顯,兩個(gè)任務(wù):任務(wù)0和任務(wù)1在分時(shí)運(yùn)行。 RTX51操作系統(tǒng)實(shí)現(xiàn)1如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt49觀察Watch 1窗口

29、,可以看到counter0和counter1兩個(gè)變量的值在交替變化。 RTX51操作系統(tǒng)實(shí)現(xiàn)1如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt50在這個(gè)例子中,job0使能job1。但是現(xiàn)在,當(dāng)遞增counter0后,job0調(diào)用os_wait函數(shù)暫停3個(gè)時(shí)鐘滴答。在這個(gè)時(shí)間,RTX51切換到下一個(gè)任務(wù)job1。當(dāng)job1遞增counter1后,它也調(diào)用os_wait暫停5個(gè)時(shí)鐘滴答。現(xiàn)在,RTX51沒(méi)有其他任務(wù)需要執(zhí)行,它進(jìn)入空閑狀態(tài)3個(gè)時(shí)鐘滴答,然后繼續(xù)執(zhí)行job0。RTX51操作系統(tǒng)實(shí)現(xiàn)2如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt51【例】 使用RTX51使用os_wait函數(shù)延遲執(zhí)行C語(yǔ)言描述的例子#i

30、nclude unsigned char counter0; /定義無(wú)符號(hào)char類型變量counter0unsigned char counter1; /定義無(wú)符號(hào)char類型變量counter1void job0 (void) _task_ 0 /定義任務(wù)0 os_create_task (1); /創(chuàng)建任務(wù)1 while (1) /無(wú)限循環(huán) counter0+; /更新計(jì)數(shù)器 os_wait (K_TMO,3,1); /暫停3個(gè)時(shí)鐘嘀嗒RTX51操作系統(tǒng)實(shí)現(xiàn)2如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt52void job1 (void) _task_ 1 /定義任務(wù)1 while (1) /無(wú)

31、限循環(huán) counter1+; /更新計(jì)數(shù)器 os_wait (K_TMO,5,1); /暫停5個(gè)時(shí)鐘嘀嗒 RTX51操作系統(tǒng)實(shí)現(xiàn)2如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt53下面通過(guò)Keil Vision調(diào)試器,說(shuō)明RTX51的運(yùn)行機(jī)制,步驟主要包括:在例子15-2目錄下,打開(kāi)該設(shè)計(jì)。在Keil Vision當(dāng)前設(shè)計(jì)主界面主菜單下,選擇Debug-Start/Stop Debug Session,進(jìn)入調(diào)試器模式。在當(dāng)前調(diào)試器主界面主菜單下,選擇View-Logic Analyzer選項(xiàng)在當(dāng)前調(diào)試器主界面右側(cè)上方,出現(xiàn)Logic Analyzer界面在該界面中,添加counter0和counter1

32、兩個(gè)變量。 RTX51操作系統(tǒng)實(shí)現(xiàn)2如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt54RTX51操作系統(tǒng)實(shí)現(xiàn)2鼠標(biāo)右鍵分別單擊counter0和counter1,出現(xiàn)浮動(dòng)菜單。在浮動(dòng)菜單內(nèi)選擇state選項(xiàng)。在當(dāng)前調(diào)試器主界面主菜單下,選擇View-Watch Windows-Watch 1。在當(dāng)前調(diào)試器主界面右下方出現(xiàn)Watch1窗口界面。在該界面中,添加counter0和counter1兩個(gè)變量。按F5按鍵或者在當(dāng)前調(diào)試主界面主菜單下,選擇Debug-Run,運(yùn)行該程序。如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt55觀察Logic Analyzer窗口,如圖所示。通過(guò)觀察counter0和counter1,很明顯,每3個(gè)定時(shí)器滴答后遞增counter0,每5個(gè)定時(shí)器滴答后遞增counter1。觀察Watch 1窗口,可以看到counter0和counter1兩個(gè)變量的值在交替變化,很明顯,counter0變化的比counter1要快。 RTX51操作系統(tǒng)實(shí)現(xiàn)2如需原始PPT文件請(qǐng)點(diǎn)擊此處/ppt56在這個(gè)例子中,job1等待它從其他任務(wù)接收到信號(hào)。當(dāng)它接收到一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論