MicroCOSII在80C196上的移植實(shí)現(xiàn)_第1頁(yè)
MicroCOSII在80C196上的移植實(shí)現(xiàn)_第2頁(yè)
MicroCOSII在80C196上的移植實(shí)現(xiàn)_第3頁(yè)
MicroCOSII在80C196上的移植實(shí)現(xiàn)_第4頁(yè)
MicroCOSII在80C196上的移植實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(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、MicroC/OS-II在80C196上的移植實(shí)現(xiàn)摘要:在嵌入式系統(tǒng)中使用實(shí)時(shí)操作系統(tǒng),可以進(jìn)步系統(tǒng)的穩(wěn)定性、可靠性和實(shí)時(shí)性。ir/S-II是一個(gè)完好的,可移植、可固化、可剪裁的搶占式多任務(wù)實(shí)時(shí)內(nèi)核,并且開(kāi)放源代碼,得到了廣泛應(yīng)用。本文結(jié)合詳細(xì)應(yīng)用,介紹了ir/S-II在80196上移植實(shí)現(xiàn)過(guò)程和考前須知。關(guān)鍵詞:實(shí)時(shí)操作系統(tǒng)ir/S-II80196移植在嵌入式系統(tǒng)開(kāi)發(fā)中,很長(zhǎng)時(shí)間以來(lái),一直采用傳統(tǒng)的嵌入式系統(tǒng)軟件設(shè)計(jì)形式:無(wú)限循環(huán)中斷效勞。該形式下,主程序?yàn)橐粋€(gè)無(wú)限循環(huán),單任務(wù)順序執(zhí)行各個(gè)處理任務(wù)。在循環(huán)之外,設(shè)計(jì)一個(gè)或多個(gè)中斷效勞函數(shù),用于處理異步事件。在相對(duì)簡(jiǎn)單的應(yīng)用中,這種形式,完全可

2、以勝任。而對(duì)于實(shí)時(shí)性要求較高、處理任務(wù)較多的應(yīng)用,就會(huì)暴露出實(shí)時(shí)性差的缺點(diǎn),甚至不可以到達(dá)應(yīng)用的要求,系統(tǒng)可靠性低,穩(wěn)定性差。引入實(shí)時(shí)操作系統(tǒng),可以較好解決這個(gè)問(wèn)題。ir/S-II是一個(gè)完好的,可移植、可固化、可剪裁的搶占式多任務(wù)實(shí)時(shí)內(nèi)核,并且開(kāi)放源代碼,在嵌入式系統(tǒng)中得到了廣泛應(yīng)用。為了實(shí)現(xiàn)老系統(tǒng)功能晉級(jí),到達(dá)了不改變硬件設(shè)計(jì),增加系統(tǒng)功能、進(jìn)步系統(tǒng)性能的目的,從而采用該實(shí)時(shí)操作系統(tǒng)。本文介紹了將其移植應(yīng)用于80196的詳細(xì)實(shí)現(xiàn)和考前須知。所謂移植,就是使一個(gè)實(shí)時(shí)內(nèi)核可以在其他微處理器或微控制器上運(yùn)行。移植要做的是,修改或編寫(xiě)與處理器硬件相關(guān)的代碼。由于80196系統(tǒng)的資源有限,除了代碼移植

3、,還要根據(jù)詳細(xì)應(yīng)用,對(duì)ir/S-II進(jìn)展裁剪,以到達(dá)系統(tǒng)的設(shè)計(jì)要求。1.ir/S-II簡(jiǎn)介ir/S-II的系統(tǒng)構(gòu)造見(jiàn)圖1。ir/S-II最主要的特點(diǎn)之一是源代碼開(kāi)放,有利于用戶根據(jù)詳細(xì)應(yīng)用對(duì)操作系統(tǒng)進(jìn)展充分的裁減。這也使得其可移植性非常的強(qiáng)。ir/S-II是為嵌入式應(yīng)用專門(mén)設(shè)計(jì)的,完全可與應(yīng)用軟件交融在一起,進(jìn)展編譯、連接,進(jìn)而作為產(chǎn)品的一局部發(fā)布。ir/S-II是完全可剝奪型的實(shí)時(shí)內(nèi)核,總是運(yùn)行就緒任務(wù)中最高優(yōu)先級(jí)的任務(wù),即準(zhǔn)備就緒的高優(yōu)先級(jí)任務(wù)可以剝奪正在運(yùn)行的低優(yōu)先級(jí)任務(wù)的PU使用權(quán)。2.移植的根本思路2.1編譯器采用TASKING公司的196編譯器,可以方便的嵌入?yún)R編語(yǔ)言,因此該移植所

4、有的函數(shù)都在S_PU_.中實(shí)現(xiàn),沒(méi)有S_PU_A.AS文件。可以采用語(yǔ)言編碼的,盡量采用語(yǔ)言編碼;不能采用代碼的,采用嵌入?yún)R編的方式。以此降低代碼的分散度,進(jìn)步代碼的可讀性。2.2代碼移植代碼移植,需要修改或編寫(xiě)與處理器硬件相關(guān)的代碼。包括與處理器相關(guān)的數(shù)據(jù)類型定義,函數(shù)定義,存儲(chǔ)器操作等。其中的主要任務(wù)有:1重新編輯INLUDES.H文件,增加與應(yīng)用相關(guān)的頭文件;改寫(xiě)S_PU.H文件;2改寫(xiě)S_FG.H文件;編寫(xiě)S_PU_.;3優(yōu)化代碼效率。2.3存儲(chǔ)資源由于80196系統(tǒng)的物理資源非常有限,需要對(duì)系統(tǒng)內(nèi)核進(jìn)展充分的裁剪。片內(nèi)可用內(nèi)存為220個(gè)字節(jié),在系統(tǒng)中外部擴(kuò)展35843.5K個(gè)字節(jié)。為

5、了進(jìn)步系統(tǒng)速度,操作系統(tǒng)盡量使用片內(nèi)存儲(chǔ)區(qū)。系統(tǒng)應(yīng)用中經(jīng)常使用的變量,也需要分配在片內(nèi)存儲(chǔ)區(qū)。為了節(jié)約存儲(chǔ)資源采取以下措施:1裁剪不使用的功能模塊和其使用相應(yīng)變量。2根據(jù)應(yīng)用的需要裁剪所需資源的規(guī)模。例如,在應(yīng)用中實(shí)際使用任務(wù)為6個(gè),所以將SRdyTbl由一個(gè)數(shù)組,更改為一個(gè)8位變量,并去掉SRdyGrp,因?yàn)槠溆肋h(yuǎn)是0。3修改S_InitTaskIdle內(nèi)容,將S_TaskIdle任務(wù)換為應(yīng)用的最低優(yōu)先級(jí)的任務(wù)。4裁剪S_TB的內(nèi)容。例如,永遠(yuǎn)不會(huì)使用的變量STBY和STBBitY。5裁剪中斷嵌套的相關(guān)內(nèi)容。2.4時(shí)間資源ir/S-II推薦的時(shí)鐘節(jié)拍為10200s,而本系統(tǒng)的實(shí)際時(shí)鐘節(jié)拍為2

6、50s,這樣系統(tǒng)額外開(kāi)銷必然大幅度增加,系統(tǒng)時(shí)間資源非常緊張。為了節(jié)約時(shí)間資源采取以下措施:1棄用STieDly函數(shù),直接操作任務(wù)定時(shí)器,調(diào)用S_Shed函數(shù)。2棄用SIntExit和SInttxS函數(shù),將其源代碼直接參加軟件定時(shí)器中斷效勞函數(shù)。3降低其他中斷效勞函數(shù)的代碼長(zhǎng)度,且不進(jìn)展任務(wù)切換,降低系統(tǒng)時(shí)鐘的誤差。4根據(jù)編譯得到的匯編代碼,對(duì)局部語(yǔ)言代碼進(jìn)展優(yōu)化。3.移植實(shí)現(xiàn)3.1任務(wù)分配一個(gè)任務(wù),也稱為一個(gè)線程,是一個(gè)簡(jiǎn)單的程序,該程序可以認(rèn)為PU完全屬于自己。每個(gè)任務(wù)有獨(dú)立的堆棧空間和優(yōu)先級(jí)。根據(jù)每個(gè)任務(wù)的內(nèi)容可以在相應(yīng)位置,使任務(wù)就緒。而任務(wù)就緒和任務(wù)切換可以分開(kāi)。例如,在接收中斷中,

7、使可以AN通信任務(wù)就緒,但可以不進(jìn)展任務(wù)切換,而在系統(tǒng)時(shí)鐘函數(shù)中進(jìn)展任務(wù)切換。系統(tǒng)總是讓處于就緒態(tài)的、優(yōu)先級(jí)最高的任務(wù)先運(yùn)行。3.2時(shí)鐘節(jié)拍時(shí)鐘節(jié)拍是特定的周期性中斷,根據(jù)應(yīng)用系統(tǒng)的需要,時(shí)鐘節(jié)拍的周期為250s,采用軟件定時(shí)器實(shí)現(xiàn)。在該效勞函數(shù)中實(shí)現(xiàn)任務(wù)切換,為了節(jié)省時(shí)間和存儲(chǔ)資源,不進(jìn)展函數(shù)調(diào)用。軟件定時(shí)器中斷效勞函數(shù)實(shí)現(xiàn)代碼如下:vidSTikISR(vid)/重置軟件定時(shí)器S250usunt+;/計(jì)數(shù)器加1if(S250usunt0 x03)=0)S1sunt+;/1s定時(shí)器S50sDly+;/50s定時(shí)器SRdyTbl|=0 x20;/1s定時(shí)到,就緒Taskhk任務(wù)/SIntExi

8、t()中斷退出任務(wù)切換SPriHighRdy=SUnapTblSRdyTbl;/獲得最高優(yōu)先級(jí)就緒任務(wù)的優(yōu)先級(jí)if(SPriHighRdy!=SPriur)/判斷當(dāng)前任務(wù)優(yōu)先級(jí)是否與最高優(yōu)先級(jí)就緒任務(wù)的優(yōu)先級(jí)一樣/SInttxS();STBur-STBStkPtr=psp;/存儲(chǔ)被中斷任務(wù)的堆棧指針STBur=STBPriTblSPriHighRdy;/獲得最高優(yōu)先級(jí)就緒任務(wù)的TBSPriur=SPriHighRdy;/設(shè)當(dāng)前任務(wù)優(yōu)先級(jí)為最高優(yōu)先級(jí)就緒任務(wù)的優(yōu)先級(jí)psp=STBur-STBStkPtr;/獲得堆棧指針as/現(xiàn)場(chǎng)恢復(fù)ppdx;ppx;ppbx;ppax;ppa;ret;/切換到最

9、高優(yōu)先級(jí)就緒任務(wù),必需要有的3.3中斷由于中斷的存在,任何代碼在任何時(shí)候,都有可能被中斷。而有些代碼是不可分割的,假如被中斷將會(huì)產(chǎn)生不可意料的后果。因此定義臨界段,以處理不可分割的代碼。一旦該局部代碼開(kāi)場(chǎng)執(zhí)行,不允許任何中斷插入。為了確保臨界段代碼的執(zhí)行不被中斷,在進(jìn)入臨階段之前,必須關(guān)中斷,臨界段代碼執(zhí)行完畢,開(kāi)中斷。為80196定義S_ENTER_RITIAL和S_EXIT_RITIAL如下:/中斷制止函數(shù)#defineS_ENTER_RITIAL()asDI/中斷使能函數(shù)#defineS_EXIT_RITIAL()asEi3.4其他代碼實(shí)現(xiàn)3.4.1任務(wù)堆棧初始化函數(shù)任務(wù)堆棧初始化函數(shù)代

10、碼如下:S_STK*STaskStkInit(vid(*task)(vid*pd),vid*pdata,S_STK*pts,INT16Upt)stk=(S_STK*)pts;*-stk=(S_STK)task;/任務(wù)開(kāi)場(chǎng)地址*-stk=(S_STK)0 x0000|giask;/PSIASK*-stk=(S_STK)0 x0000|giask1;/IASK1SR*-stk=(S_STK)4;/DX*-stk=(S_STK)3;/X*-stk=(S_STK)2;/BX*-stk=(S_STK)1;/AXreturn(S_STK*)stk);3.4.2開(kāi)場(chǎng)運(yùn)行最高優(yōu)先級(jí)就緒任務(wù)系統(tǒng)開(kāi)場(chǎng)運(yùn)行時(shí),調(diào)用

11、該函數(shù),以開(kāi)場(chǎng)運(yùn)行,其實(shí)現(xiàn)代碼如下:vidSStartHighRdy(vid)SRunning=TRUE;/置系統(tǒng)正在運(yùn)行標(biāo)志STBur=STBHighRdy;/置當(dāng)前TB為最高優(yōu)先級(jí)就緒任務(wù)的TBpsp=STBHighRdy-STBStkPtr;/獲得堆棧指針as/恢復(fù)現(xiàn)場(chǎng)ppdx;ppx;ppbx;ppax;ppa;/轉(zhuǎn)到新任務(wù)3.4.3現(xiàn)場(chǎng)切換函數(shù)S_Shed函數(shù)調(diào)用該函數(shù)實(shí)現(xiàn)真正的任務(wù)切換。vidStxS(vid)as/保存被中斷任務(wù)的現(xiàn)場(chǎng)pusha;pushax;pushbx;pushx;pushdx;STBur-STBStkPtr=psp;/存儲(chǔ)被中斷任務(wù)的堆棧指針STBur=ST

12、BPriTblSPriHighRdy;/獲得最高優(yōu)先級(jí)就緒任務(wù)的TBSPriur=SPriHighRdy;/設(shè)當(dāng)前任務(wù)優(yōu)先級(jí)為最高優(yōu)先級(jí)就緒任務(wù)的優(yōu)先級(jí)psp=STBur-STBStkPtr;/獲得堆棧指針as/現(xiàn)場(chǎng)恢復(fù)ppdx;ppx;ppbx;ppax;ppa;4.考前須知在實(shí)現(xiàn)過(guò)程中的得到如下經(jīng)歷教訓(xùn):1)盡量減少任務(wù)的數(shù)量,以減少系統(tǒng)額外開(kāi)銷。相對(duì)少的任務(wù)數(shù),可以減少,系統(tǒng)花在任務(wù)切換上的時(shí)間。2)合理分配各個(gè)任務(wù)的優(yōu)先級(jí)。3)注意開(kāi)中斷、關(guān)中斷的時(shí)機(jī)。4)注意入棧和出棧要匹配。假如堆棧指針出現(xiàn)錯(cuò)位,將會(huì)出現(xiàn)災(zāi)難性后果。特別注意中斷效勞函數(shù)的處理,其調(diào)用時(shí)的入棧內(nèi)容和退出中斷的出棧內(nèi)容要對(duì)應(yīng),而中斷退出有兩種可能:正常退出和任務(wù)切換。5)合理選擇定時(shí)器時(shí)間周期。6)同類型工作,也同樣需要有優(yōu)先級(jí)區(qū)分。例如:同樣是通信任務(wù),接收數(shù)據(jù)需要較高的優(yōu)先級(jí),而通信故障處理需要較低的優(yōu)先級(jí)。一般情況下,通信處理都有一定的故障容忍時(shí)間,只要在容忍時(shí)間內(nèi)得到處理就可以了。假如發(fā)生不可恢復(fù)性錯(cuò)誤,故障處理將會(huì)占用大量的時(shí)間,假如在較高優(yōu)先級(jí),將會(huì)影響整個(gè)系統(tǒng)的性能。5.結(jié)論通過(guò)在80196上移植實(shí)現(xiàn)ir/S-II,到達(dá)了不改變硬件設(shè)計(jì),增加應(yīng)用功能,進(jìn)步了應(yīng)用系統(tǒng)性能的目的。在嵌入式系統(tǒ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)論