3、基于RTX51 Tiny的應(yīng)用軟件設(shè)計指導(dǎo)
RTX51是一個德國Keil Software公司開發(fā)的用于8051系列單片機的多任務(wù)實時操作系統(tǒng)[4]。RTX51有2個不同的版本。
(1)完全版RTX51 Full
完全版RTX51 Full允許4個優(yōu)先級的任務(wù)時間片輪轉(zhuǎn)調(diào)度和搶先式的任務(wù)切換,可以并行地利用中斷功能。信號和信息可以通過郵箱系統(tǒng)在任務(wù)之間互相傳遞,可以從一個存儲池中分配和釋放內(nèi)存,可以強迫一個任務(wù)等待中斷、超時以及從另一個任務(wù)或中斷發(fā)出的信號或信息。
(2)小型版RTX51 Tiny
小型版RTX51 Tiny是RTX51的一個子集,它可以很容易地在沒有任何外部存儲器的單片8051系統(tǒng)上運行。RTX51 Tiny僅支持時間片輪轉(zhuǎn)任務(wù)切換和使用信號進行任務(wù)切換,不支持搶先式的任務(wù)切換,可以并行地利用中斷功能,可以強迫一個任務(wù)等待中斷、超時以及從另一個任務(wù)或中斷發(fā)出的信號,不能進行信息處理,也不支持存儲器分配或釋放。RTX51 Tiny是一種不可剝奪型實時操作系統(tǒng)內(nèi)核。
基于RTX51 Tiny實時操作系統(tǒng)的單片機應(yīng)用軟件設(shè)計,首先應(yīng)該根據(jù)RTX51 Tiny操作系統(tǒng)的準(zhǔn)并發(fā)特性,對應(yīng)用軟件要實現(xiàn)的功能進行大小適當(dāng)?shù)膭澐帧凑丈鲜?個原則劃分為若干個任務(wù)模塊,并對各個任務(wù)間的通信和時延進行仔細(xì)的確認(rèn)。
編寫基于RTX51 Tiny的應(yīng)用軟件的指導(dǎo)方針如下:
① 包含頭文件rtx51tny.h在應(yīng)用程序中。
② 不要寫C語言主函數(shù)main()。RTX51 Tiny操作系統(tǒng)內(nèi)核中已經(jīng)有它自己的主函數(shù)main()。
③ 應(yīng)用程序應(yīng)該至少包括1個任務(wù)函數(shù)(task function)。
④ RTX51 Tiny應(yīng)用程序必須中斷使能(EA=1),因為RTX51 Tiny操作系統(tǒng)使用了定時器T0中斷。
⑤ 應(yīng)用程序至少調(diào)用1個RTX51 Tiny系統(tǒng)函數(shù)(如os_wait);否則,鏈接器將不會把RTX51 Tiny的系統(tǒng)庫包含到應(yīng)用程序中。
⑥ 任務(wù)task0是應(yīng)用程序中第一個執(zhí)行的函數(shù)。在任務(wù)task 0中,必須調(diào)用os_create_task函數(shù)來運行其他任務(wù)。
⑦ 任務(wù)task函數(shù)不必退出或返回。任務(wù)task必須使用一個while(1)結(jié)構(gòu)或其他類似的結(jié)構(gòu)。任務(wù)task函數(shù)不帶參數(shù),也沒有返回值。使用系統(tǒng)函數(shù)os_delete_task掛起(halt)一個運行的任務(wù)。
⑧ 中斷服務(wù)程序的編寫方式,與不使用RTX51 Tiny操作系統(tǒng)下的編寫方式相同。
⑨ 編譯和鏈接應(yīng)用程序有2種途徑,一種是使用集成開發(fā)環(huán)境μVision 2 IDE,另一種是使用命令行工具CommandLine Tools。一般采用德國Keil Software公司提供的集成開發(fā)環(huán)境 μVision 2 IDE。
利用Keil Software公司提供的集成開發(fā)環(huán)境 μVision 2 IDE,創(chuàng)建RTX51 Tiny應(yīng)用程序的開始的步驟如下:
① 運行Keil Software公司的集成開發(fā)環(huán)境 μVision 2 IDE。
② 運行菜單命令Project→Options for Target‘Target 1’,打開Target對話框,并在對話框中選擇Target選項卡。
③ 從Operating system下拉列表框中選擇RTX51 Tiny,如圖1所示。
圖1 選擇RTX51 Tiny實時操作系統(tǒng)
4、結(jié)論
本文給出了劃分任務(wù)的3個原則,分別是“對同一個外設(shè)的訪問放在一個任務(wù)中”、“通過任務(wù)分割提高系統(tǒng)的實時性”和“軟件工程中的‘解耦原則’用于任務(wù)的劃分”。實踐證明,這些任務(wù)劃分的原則是行之有效的。另外,從實用的角度給出了編寫基于RTX51 Tiny實時操作系統(tǒng)應(yīng)用軟件的指導(dǎo)方針。實際上,RTX51 Tiny實時操作系統(tǒng)對目標(biāo)系統(tǒng)的硬件需求是很低的,隨著半導(dǎo)體技術(shù)的發(fā)展,能夠運行嵌入式實時操作系統(tǒng)的單片機芯片是很容易采購得到的。
人們越來越清楚地認(rèn)識到,在嵌入式系統(tǒng)設(shè)計中引入實時操作系統(tǒng)的必要性[5]。在許多嵌入式系統(tǒng)中,不但要求系統(tǒng)能夠及時響應(yīng)隨機發(fā)生的外部事件,并對其作出快速處理,通常還需要同時執(zhí)行多個任務(wù),并對每個任務(wù)作出實時響應(yīng)。實踐證明,對于這樣的應(yīng)用,采用嵌入式實時操作系統(tǒng)作為應(yīng)用軟件的設(shè)計平臺和運行平臺是一個良好的選擇。
參考文獻(xiàn)
[1]晨風(fēng).嵌入式實時多任務(wù)軟件開發(fā)基礎(chǔ)[M].北京:清華大學(xué)出版社,2004 63-64. [2]吳迪,郝軍,沙毅,等.嵌入式系統(tǒng)原理、設(shè)計與應(yīng)用[M].北京:機械工業(yè)出版社,2005310-315. [3]張海藩.軟件工程導(dǎo)論[M]. 第4版.北京:清華大學(xué)出版社,2003 87-89. [4]KEIL Software Inc. RTX51 Real-time Kernel[OL]. http www. keil. com rtx51,2004. [5]劉明路,王亮生,李世煜.基于RTX51的單片機軟件設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2002,(12):35-37.
|