3、基于RTX51 Tiny的應(yīng)用軟件設(shè)計(jì)指導(dǎo)
RTX51是一個德國Keil Software公司開發(fā)的用于8051系列單片機(jī)的多任務(wù)實(shí)時(shí)操作系統(tǒng)[4]。RTX51有2個不同的版本。
(1)完全版RTX51 Full
完全版RTX51 Full允許4個優(yōu)先級的任務(wù)時(shí)間片輪轉(zhuǎn)調(diào)度和搶先式的任務(wù)切換,可以并行地利用中斷功能。信號和信息可以通過郵箱系統(tǒng)在任務(wù)之間互相傳遞,可以從一個存儲池中分配和釋放內(nèi)存,可以強(qiáng)迫一個任務(wù)等待中斷、超時(shí)以及從另一個任務(wù)或中斷發(fā)出的信號或信息。
(2)小型版RTX51 Tiny
小型版RTX51 Tiny是RTX51的一個子集,它可以很容易地在沒有任何外部存儲器的單片8051系統(tǒng)上運(yùn)行。RTX51 Tiny僅支持時(shí)間片輪轉(zhuǎn)任務(wù)切換和使用信號進(jìn)行任務(wù)切換,不支持搶先式的任務(wù)切換,可以并行地利用中斷功能,可以強(qiáng)迫一個任務(wù)等待中斷、超時(shí)以及從另一個任務(wù)或中斷發(fā)出的信號,不能進(jìn)行信息處理,也不支持存儲器分配或釋放。RTX51 Tiny是一種不可剝奪型實(shí)時(shí)操作系統(tǒng)內(nèi)核。
基于RTX51 Tiny實(shí)時(shí)操作系統(tǒng)的單片機(jī)應(yīng)用軟件設(shè)計(jì),首先應(yīng)該根據(jù)RTX51 Tiny操作系統(tǒng)的準(zhǔn)并發(fā)特性,對應(yīng)用軟件要實(shí)現(xiàn)的功能進(jìn)行大小適當(dāng)?shù)膭澐帧凑丈鲜?個原則劃分為若干個任務(wù)模塊,并對各個任務(wù)間的通信和時(shí)延進(jìn)行仔細(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),因?yàn)镽TX51 Tiny操作系統(tǒng)使用了定時(shí)器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ù)來運(yùn)行其他任務(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)一個運(yùn)行的任務(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)用程序的開始的步驟如下:
① 運(yùn)行Keil Software公司的集成開發(fā)環(huán)境 μVision 2 IDE。
② 運(yùn)行菜單命令Project→Options for Target‘Target 1’,打開Target對話框,并在對話框中選擇Target選項(xiàng)卡。
③ 從Operating system下拉列表框中選擇RTX51 Tiny,如圖1所示。
圖1 選擇RTX51 Tiny實(shí)時(shí)操作系統(tǒng)
4、結(jié)論
本文給出了劃分任務(wù)的3個原則,分別是“對同一個外設(shè)的訪問放在一個任務(wù)中”、“通過任務(wù)分割提高系統(tǒng)的實(shí)時(shí)性”和“軟件工程中的‘解耦原則’用于任務(wù)的劃分”。實(shí)踐證明,這些任務(wù)劃分的原則是行之有效的。另外,從實(shí)用的角度給出了編寫基于RTX51 Tiny實(shí)時(shí)操作系統(tǒng)應(yīng)用軟件的指導(dǎo)方針。實(shí)際上,RTX51 Tiny實(shí)時(shí)操作系統(tǒng)對目標(biāo)系統(tǒng)的硬件需求是很低的,隨著半導(dǎo)體技術(shù)的發(fā)展,能夠運(yùn)行嵌入式實(shí)時(shí)操作系統(tǒng)的單片機(jī)芯片是很容易采購得到的。
人們越來越清楚地認(rèn)識到,在嵌入式系統(tǒng)設(shè)計(jì)中引入實(shí)時(shí)操作系統(tǒng)的必要性[5]。在許多嵌入式系統(tǒng)中,不但要求系統(tǒng)能夠及時(shí)響應(yīng)隨機(jī)發(fā)生的外部事件,并對其作出快速處理,通常還需要同時(shí)執(zhí)行多個任務(wù),并對每個任務(wù)作出實(shí)時(shí)響應(yīng)。實(shí)踐證明,對于這樣的應(yīng)用,采用嵌入式實(shí)時(shí)操作系統(tǒng)作為應(yīng)用軟件的設(shè)計(jì)平臺和運(yùn)行平臺是一個良好的選擇。
參考文獻(xiàn)
[1]晨風(fēng).嵌入式實(shí)時(shí)多任務(wù)軟件開發(fā)基礎(chǔ)[M].北京:清華大學(xué)出版社,2004 63-64. [2]吳迪,郝軍,沙毅,等.嵌入式系統(tǒng)原理、設(shè)計(jì)與應(yīng)用[M].北京:機(jī)械工業(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的單片機(jī)軟件設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002,(12):35-37.
|