張林生,袁 勇,毛朝慶
(重慶電子工程職業(yè)學(xué)院 電子信息系,重慶 401331)
實時多任務(wù)操作系統(tǒng)在MCS-51單片機中的應(yīng)用
張林生,袁 勇,毛朝慶
(重慶電子工程職業(yè)學(xué)院 電子信息系,重慶 401331)
嵌入式技術(shù)是21世紀(jì)具有廣闊發(fā)展前景的技術(shù)之一,由于其可靠性高、實時性強、便于開發(fā)和維護等諸多特點,而被廣泛地應(yīng)用在各種系統(tǒng)中。本文介紹了RTX-51實時多任務(wù)操作系統(tǒng),通過實例解析其在項目開發(fā)中的應(yīng)用。
實時多任務(wù);MCS-51;RTX-51 Tiny
傳統(tǒng)的單片機程序多為單任務(wù)系統(tǒng),其業(yè)務(wù)邏輯順序安排在主函數(shù)中,主函數(shù)是整個程序的入口,一般為死循環(huán),循環(huán)過程中通過調(diào)用函數(shù)未完成相應(yīng)的操作,而對于一些較短的實時任務(wù)則通過中斷方式進行處理。此種程序結(jié)構(gòu)簡單、直觀,易于實現(xiàn),但對于較復(fù)雜的應(yīng)用此種結(jié)構(gòu)表極為不便,并且不能滿足實時性要求較高的場合,因此必須考慮一種新的開發(fā)模式。
實時多任務(wù)操作系統(tǒng)具有高效的設(shè)計、可靠性高、實時性強等優(yōu)點被廣泛應(yīng)用在嵌入式系統(tǒng)開發(fā)中?,F(xiàn)在世面上已經(jīng)存在很多嵌入式操作系統(tǒng),如uCOS、VxWork、linux、WinCE等等,但這幾種操作系統(tǒng)規(guī)模較大,對硬件資源要求較高,一般應(yīng)用在16/32位的處理器中。而對于處理能力有限的MCS-51八位單片機無法支持。
RTX-51是專門應(yīng)用于MCS-51系列單片機的一種小型的實時多任務(wù)操作系統(tǒng),它允許循環(huán)任務(wù)切換,支持信號傳遞,還能并行的利用中斷功能,RAM需求量小,非常適合在MCS-51單片機上運行。
RTX-51是德國Keil公司開發(fā)的適用于MCS-51單片機的實時多任務(wù)操作系統(tǒng),RTX-51有RTX-51 Full和RTX51 Tiny兩個版本。本文以RTX-51 Tiny為例介紹,它支持循環(huán)任務(wù)切換與信號傳遞,還能并行的利用中斷功能,不提供搶先的任務(wù)切換。
在RTX-51系統(tǒng)中就是一個C51函數(shù)一個任務(wù),該函數(shù)沒有返回值,也沒有參數(shù)。該函數(shù)體必須是一個無限的循環(huán),以保證該函數(shù)不能返回。實際應(yīng)用中,一個復(fù)雜的系統(tǒng)往往被分解成若干可以并行處理的任務(wù),每個任務(wù)只完成一個單一的操作,從而降低系統(tǒng)設(shè)計的難度。在RTX-51 Tiny系統(tǒng)中一個具體的任務(wù)通過下面的格式定義:
RTX-51 Tiny的用戶任務(wù)有5種狀態(tài),如表1所示。某一時刻用戶任務(wù)處在某個狀態(tài),在一定條件下,任務(wù)狀態(tài)可以發(fā)生改變,如圖1所示。
表1 RTx-51Ti ng任務(wù)狀態(tài)表
(1)信號:信號是用于任務(wù)之間進行通訊的位,可以用系統(tǒng)函數(shù)進行置位或復(fù)位。如果一個任務(wù)調(diào)用了os_wait1函數(shù)等待信號,而信號未置位,則該任務(wù)被掛起直到信號置位,才返回到“就緒狀態(tài)”,并可以被再次執(zhí)行。
(2)超時:超時由os_wait2函數(shù)開始的時間延時,其持續(xù)時間可由定時節(jié)拍數(shù)確定。調(diào)用os_wait2函數(shù)的任務(wù)將被掛起,直到延時時間到,才返回“就緒狀態(tài)”,并可以被再次執(zhí)行。
(3)間隔:間隔由os_wait2函數(shù)開始的時間間隔,其持續(xù)時間可由定時節(jié)拍數(shù)確定。調(diào)用os_wait2函數(shù)的任務(wù)將被掛起,直到時間間隔到,才返回“就緒狀態(tài)”,并可以被再次執(zhí)行。與超時不同,任務(wù)的節(jié)拍計數(shù)器不復(fù)位,因此可以實現(xiàn)準(zhǔn)確的定時。
①os_create_task
函數(shù)原型:char os_create_task(unsigned char task_id);
功能說明:啟動已定義的由task_id說明的任務(wù)。此任務(wù)根據(jù)RTX-51運行規(guī)則,標(biāo)記為就緒,并準(zhǔn)備執(zhí)行。
②os_delete_task
函數(shù)原型:char os_delete_task(unsigned char task_id);
功能說明:停止task_id說明的任務(wù),此任務(wù)將從任務(wù)表中刪除。
③os_running_task_id
函數(shù)原型:charos_running_task_id(unsignedchartask_id);
功能說明:判斷當(dāng)前執(zhí)行任務(wù)的編號。
函數(shù)原型:char os_wait(unsigned char event_sel, unsigned char tisks,unsigned char dummy);功能說明:停止當(dāng)前執(zhí)行的任務(wù),并等待一個或多個事件,如時間間隔、超時、從另一個任務(wù)或中斷發(fā)出的信號等。參數(shù)event_sel說明所等待的一個事件或幾個事件的組合 (可以用字符“|”進行邏輯或)。參數(shù)ticks規(guī)定等待一個間隔或超時事件的報時信號數(shù)目。參數(shù)dummy在RTX-51 Tiny中沒有使用。
①isr_send_signal
函數(shù)原型:char isr_send_signal(unsigned char task_id);
功能說明:發(fā)送一個信號到task_id說明的任務(wù)。如果此任務(wù)已在等待一個信號,那么調(diào)用函數(shù)將使此任務(wù)就緒,準(zhǔn)備執(zhí)行。否則,信號將存儲在此任務(wù)的信號標(biāo)志中。此函數(shù)只能在中斷函數(shù)中調(diào)用。
②os_clear_signal
函數(shù)原型:char os_clear_signal(unsigned char task_id);
功能說明:清除由task_id說明的任務(wù)的信號。
③os_send_signal
函數(shù)原型:char os_send_signal(unsigned char task_id);
功能說明:發(fā)送一個信號到task_id說明的任務(wù)。如果此任務(wù)已在等待一個信號,那么調(diào)用函數(shù)將使此任務(wù)就緒,準(zhǔn)備執(zhí)行。否則,信號將存儲在此任務(wù)的信號標(biāo)志中。此函數(shù)只能在任務(wù)函數(shù)中調(diào)用。
如下圖2所示是通過RTX-51系統(tǒng)進行編程實現(xiàn)的,帶溫度顯示的萬年歷系統(tǒng)。
硬件組成如圖2所示。
軟件的主程序功能分解成5個子任務(wù)。init()任務(wù)用于創(chuàng)建其它的任務(wù),它是第一個被系統(tǒng)執(zhí)行的任務(wù);lcd()任務(wù)用來處理在液晶屏1602上顯示信息;gettemper()任務(wù)用來從DS18b20傳感器讀取溫度值;getclock()任務(wù)用來從DS1302芯片中讀出時間信息;key()任務(wù)用于處理按鍵操作。程序流程圖如圖3所示。
主程序的代碼如下:
通過實例我們可以看到,在MCS-51單片機中引入微型操作系統(tǒng)RTX-51 Tiny,使我們的開發(fā)更加輕松和方便,同時提高了系統(tǒng)的實時性和可靠性。
[1]劉明路,王亮生,李世煜.基于RTX51的單片機軟件設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2002(3).
[2]歐偉明.面向嵌入式系統(tǒng)設(shè)計的RTX51[J].應(yīng)用技術(shù)研究,2007(5).
[3]KEIL Software,Inc.《RTX51 Real-time Kernel》[EB/OL].http: //www.keil.com/rtx51,2004-09-10.
責(zé)任編輯 王榮輝
On Application of Real-time Multi-task Operating System in Single chip of MCS-51
ZHANG Linsheng,YUAN Yong,MAO Zhaoqing
(Chongqing College of Electronic Engineering,Department of Electronic Information,Chongqing 401331,China)
The embedded system is one of the most promising technical trends in 21st century.With good reliability and instantaneity,as well as features of being easy to develop and maintain,etc.,it has been widely applied in various systems.An appropriate mini-operating system applied in single chip of MCS-51 is introduced in this thesis;meanwhile,the application of it in developing projects is illustrated with simple examples.
real-time multi-task;MCS-51;RTX-51 Tiny
TP39
A
1674-5787(2010)05-0160-03
2010-07-03
張林生(1981—),男,吉林德惠人,重慶電子工程職業(yè)學(xué)院,助教,技師,研究方向:計算機應(yīng)用技術(shù)。