當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀] 隨著單片機應(yīng)用的日益廣泛,對它的軟件開發(fā)效率要求越來越高,從匯編到C語言,然后過渡到了操作系統(tǒng)。

摘要:隨著單片機應(yīng)用的日益廣泛,對它的軟件開發(fā)效率要求越來越高,從匯編到C語言,然后過渡到了操作系統(tǒng)。MCS51作為單片機世界的長生不衰的主力軍,應(yīng)用于其上的RTX51得到了很大的發(fā)展,它硬件要求低,使用方便、靈活、因此越來越廣泛地應(yīng)用到單片機的軟件開發(fā)之中。

    關(guān)鍵詞:單片機 C51 RTX51

1 概述

很多單片機的應(yīng)用中都需要同時執(zhí)行很多任務(wù),對于這樣的應(yīng)用,我們可以利用實時操作系統(tǒng)來靈活地安排系統(tǒng)資源。RTX51是美國Keil公司開發(fā)的一種小型的應(yīng)用于MCS51系列單片機的實時多任務(wù)操作系統(tǒng),它可以工作所有8051單片機以及派生家族中,簡化了復(fù)雜的軟件設(shè)計,縮短了項目周期。我們實踐中用RTX51來開發(fā)單片機軟件。設(shè)計單片機控制的GPS接收板軟件,取得了很好的效果。

2 RTX51介紹

RTX51有2個模式:RTX51完全模式和最小模式。RTX51最小模式版是RTX51完全版的一個子集,可以很容易地運行在8051系統(tǒng)上,而不需要外部RAM(DXATA)。RTX51完全模式有4個任務(wù)優(yōu)先級,可以和中斷函數(shù)并行處理,各個任務(wù)之間通過使用“郵箱”系統(tǒng)來進行信號和消息的傳遞,可以從內(nèi)存池中申請和釋放內(nèi)存;同時,可以強制一個任務(wù)停止執(zhí)行,等待一個中斷,或者是其它中斷傳來的信號量或者消息。RTX51對系統(tǒng)硬件的要求如表1所列。

2.1 RTX51任務(wù)

RTX51區(qū)分2類任務(wù):快速任務(wù)和標(biāo)準(zhǔn)任務(wù)??焖偃蝿?wù)有很快的響應(yīng)速度,每個快速任務(wù)使用8051一個單獨的寄存器組,并且有自己的堆棧區(qū)域。RTX51支持最大同時有3個快速任務(wù)。標(biāo)準(zhǔn)任務(wù)需要多一點的時間來進行任務(wù)切換,因此使用的內(nèi)部RAM相對快速任務(wù)要少,所有的標(biāo)準(zhǔn)任務(wù)共用1個寄存器組和堆棧。當(dāng)任務(wù)切換的時候,當(dāng)前任務(wù)的寄存器狀態(tài)和堆棧內(nèi)容轉(zhuǎn)移到外部存儲器中。RTX51支持最大16個標(biāo)準(zhǔn)任務(wù)。

RTX51任務(wù)狀態(tài):

①運行(RUNNIGN)——當(dāng)前正在運行的任務(wù)處于RUNNING狀態(tài),同一時間只有1個任務(wù)可以運行。

②就緒(READY)——等待運行的任務(wù)處于READY狀態(tài),在當(dāng)前運行的任務(wù)退出運行狀態(tài)后,就緒隊列中優(yōu)先級最高的任務(wù)進入到運行狀態(tài)。

③阻塞(BLOCKED)——等待一個事件的任務(wù)處于BLOCKED狀態(tài),如果事件發(fā)生且優(yōu)先級比正在運行的任務(wù)高,此任務(wù)進入運行狀態(tài);如果優(yōu)先級比正在運行的任務(wù)低,此任務(wù)進入READY狀態(tài)。

④刪除(DELETED)——沒有開始的任務(wù)處于刪除狀態(tài)。

⑤任務(wù)切換——RTX51包含一個事件驅(qū)動的任務(wù)切換機制,它能夠按照任務(wù)的優(yōu)先級進行切換,也就是搶占式多任務(wù)系統(tǒng);另外還有一個可選的時間片輪轉(zhuǎn)切換任務(wù)模式,在時間片輪轉(zhuǎn)模式下,同級別的任務(wù)是按照時間片分別占用CPU的。RTX51任務(wù)有4個優(yōu)先級:0、1、2可以分配給標(biāo)準(zhǔn)任務(wù),優(yōu)先級3是為快速任務(wù)保留的。每個任務(wù)都可以等待事件的發(fā)生,而并不增加系統(tǒng)的負擔(dān);任務(wù)可以等待消息、信號、中斷、超時事件或者它們的組合。任務(wù)切換是按照一定規(guī)則進行的,包括:進入到“就緒”狀態(tài)的優(yōu)先級高的任務(wù)先執(zhí)行;如果“就緒”狀態(tài)的幾個任務(wù)是同一個優(yōu)先級,那么最先進入“就緒”狀態(tài)的先執(zhí)行。

RTX51任務(wù)切換圖如圖1所示。

    2.2 RTX51事件

◇超時(timeout):掛起運行的任務(wù)指定數(shù)量的時間周期。

◇間隔(interval):類似于超時,但是軟件定時器沒有復(fù)位,典型應(yīng)用是產(chǎn)生時鐘。

◇信號(signal):用于任務(wù)內(nèi)部同步協(xié)調(diào)。

◇消息(message):適用于RTX51 Full,用于信息的交換。我們可以把一個消息交送到一個特定的郵箱。消息由2字節(jié)組成,可以是用戶按照自己的需求定主的數(shù)據(jù),也可以是指向數(shù)據(jù)的指針。如果郵箱的消息列表滿,而且是中斷發(fā)送消息,這個消息將會丟失;如果是任務(wù)發(fā)送消息,那么任務(wù)將會進入到等待狀態(tài),直到郵箱重新有了位置可以接收這一條消息。郵箱是按照FIFO的原則來管理消息的,如果幾個任務(wù)都在等待接收消息,那么最先進入等待接收隊列的將接收消息。一個郵箱最多可以存儲8條消息。當(dāng)郵箱滿的時候,最多只能有16個等待任務(wù)。

◇中斷(interrup):適用于RTX51 Full,信號量用于管理共享的系統(tǒng)資源。通過使用“令牌”,允許在同一時刻只有一個任務(wù)使用某些資源。如果幾個任務(wù)申請訪問同一個資源,那么首先提出申請的將允許訪問,其它的任務(wù)進入等待隊列,直到第1個任務(wù)操作完畢,下一個任務(wù)才能繼續(xù)。

Os_wait()函數(shù)掛起一個任務(wù)來等待一個事件的發(fā)生。這樣可以同步2個或幾個任務(wù)。它的工作過程如下:當(dāng)任務(wù)等待的事件沒有發(fā)生的時候,系統(tǒng)掛起這個任務(wù);當(dāng)事件發(fā)生時,系統(tǒng)根據(jù)任務(wù)切換規(guī)則切換任務(wù)。

2.3 RTX51中斷處理

RTX51完全模式提供2種方法來處理中斷:一種是C51的中斷函數(shù),另一種是RTX51的斷。它又可以分為快速任務(wù)中斷和標(biāo)準(zhǔn)任務(wù)中斷。對于中斷函數(shù)這種方法,它同時也可以在不使用RTX51的情況下使用,當(dāng)中斷發(fā)生的時候,程序就跳到了相應(yīng)的中斷函數(shù),它和正在運行的任務(wù)是互相獨立的,中斷的處理是在RTX51系統(tǒng)之外,和任務(wù)切換規(guī)則沒有關(guān)聯(lián)。對于任務(wù)中斷的方法,不管使用快速是標(biāo)準(zhǔn)任務(wù)來處理中斷,如果中斷發(fā)生,等待中斷的任務(wù)就從“等待”狀態(tài)進入到就緒狀態(tài),并按照任務(wù)切換規(guī)則進行切換。這種中斷處理是完全集成在RTX51的內(nèi)部,硬件中斷事件的處理和信號、信息的處理是完全相同的。在系統(tǒng)響應(yīng)中斷使能寄存器,這樣才能遵守任務(wù)的切換規(guī)則并保證中斷程序的無誤進行。必須注意中斷使能寄存器是由RTX51完全控制的,禁止用戶手動的修改。

3 應(yīng)用實例

以下給出RTX51在單片機控制的GPS接收板上的應(yīng)用。

(1)系統(tǒng)硬件組成

單片機W77E58,快速8051內(nèi)核、32KB ROM、1KB的XDATA RAM,符合使用RTX51的硬件要求;鍵盤、GPS定位模塊、液晶顯示模塊。

(2)系統(tǒng)軟件構(gòu)成

軟件運行環(huán)境KEIL uVision2 6.20集成開發(fā)環(huán)境加上RTX51完成版。任務(wù)KEY-BOARD,監(jiān)測鍵盤的情況,如果有按鍵按下,把按鍵的編碼發(fā)更新到郵箱1,外部中斷1等待接收GPS數(shù)據(jù),并把數(shù)據(jù)存儲起來,向DISPLAY任務(wù)發(fā)出信號。任務(wù)DISPLAY根據(jù)接收到的不同的信號和消息,進行處理。任務(wù)SEND-OUT,把接收到的數(shù)據(jù)進行處理,并發(fā)送出去。任務(wù)VOICE進行語音輸出。

系統(tǒng)硬件、軟件結(jié)構(gòu)如圖2所示。

下面給出簡寫的源程序:

#include<RTX51.h> //包含RTX51頭文件

#define DISPLAY 0

#define SEND_OUT1

#define KEY_BOARD2

#define VOICE3

void main(void)

{ init system(); //系統(tǒng)初始化

os start system(DISPLAY); //啟動RTX51

}

void task0(void)_task_DISPLAY

{ os_set_slice(1000); //設(shè)置時間片大小

os_enable_isr(0); //允許外部中斷0

os_creat_task(SEND_OUT); //啟動SEND_OUT任務(wù)

os_creat_task(VOICE); //啟動VOICE任務(wù)

for(;;){

switch(os_wait(K_SIG+K_MBX+1,255,&keyboard))//等待接收信號和鍵盤消息,分類處理

{display1();break;

case EVENT_MBOX;//當(dāng)從郵箱接收到數(shù)據(jù)的時候switch(keyboard)

{ case '1';

os_send_signal(SEND_OUT); //向任務(wù)SEND_OUT發(fā)送信號

os_send_signal(VOICE);} //向任務(wù)VOICE發(fā)送信號

…;}

;}

}

void task1(void)_task_SEND_OUT //處理發(fā)送數(shù)據(jù)任務(wù)

{while(1)

{ os_wait(K_SIG,255,0) //等待信號

operation_send();

}

void task3(void)_task_VOICE

{while(1){

os_wait_signal(K_SIG,255,0); //等待語音處理信號

voice();}

}

void interrupt(void)interrupt 2 using 1

{ read_gps_data(p_gps_data); //接收數(shù)據(jù)

isr_send_signal(DISPLAY); //DISPLAY任務(wù)發(fā)信號
}

#pragma REGISTERBANK(2) //使用寄存器組2

void task2(void)_task_KEYBOARSD_priority_3//設(shè)置為快速任務(wù)

{ os_attach_interrupt(0); //綁定任務(wù)和外部中斷0

while(1){

os_wait(K_INT,255,0); //等待中斷的發(fā)生

KEY=iic_read_keyboard();

os_send_message(1,KEY,0);}//將鍵盤編碼發(fā)送到郵箱1

}

4 結(jié)論

通過實踐我們可以發(fā)現(xiàn),使用RTX51開發(fā)單片機程序更加方便了。尤其是較大的程序,避免了自己寫消息循環(huán)等繁瑣工作,效率明顯增加了。在硬件資源足夠的情況下,效果更加明顯。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉