![MicroCOSII在80C196上的移植實(shí)現(xiàn)_第1頁](http://file4.renrendoc.com/view/bf1232d712c97aa934365832578cc743/bf1232d712c97aa934365832578cc7431.gif)
![MicroCOSII在80C196上的移植實(shí)現(xiàn)_第2頁](http://file4.renrendoc.com/view/bf1232d712c97aa934365832578cc743/bf1232d712c97aa934365832578cc7432.gif)
![MicroCOSII在80C196上的移植實(shí)現(xiàn)_第3頁](http://file4.renrendoc.com/view/bf1232d712c97aa934365832578cc743/bf1232d712c97aa934365832578cc7433.gif)
![MicroCOSII在80C196上的移植實(shí)現(xiàn)_第4頁](http://file4.renrendoc.com/view/bf1232d712c97aa934365832578cc743/bf1232d712c97aa934365832578cc7434.gif)
![MicroCOSII在80C196上的移植實(shí)現(xiàn)_第5頁](http://file4.renrendoc.com/view/bf1232d712c97aa934365832578cc743/bf1232d712c97aa934365832578cc7435.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、MicroC/OS-II在80C196上的移植實(shí)現(xiàn)摘要:在嵌入式系統(tǒng)中使用實(shí)時操作系統(tǒng),可以進(jìn)步系統(tǒng)的穩(wěn)定性、可靠性和實(shí)時性。ir/S-II是一個完好的,可移植、可固化、可剪裁的搶占式多任務(wù)實(shí)時內(nèi)核,并且開放源代碼,得到了廣泛應(yīng)用。本文結(jié)合詳細(xì)應(yīng)用,介紹了ir/S-II在80196上移植實(shí)現(xiàn)過程和考前須知。關(guān)鍵詞:實(shí)時操作系統(tǒng)ir/S-II80196移植在嵌入式系統(tǒng)開發(fā)中,很長時間以來,一直采用傳統(tǒng)的嵌入式系統(tǒng)軟件設(shè)計形式:無限循環(huán)中斷效勞。該形式下,主程序為一個無限循環(huán),單任務(wù)順序執(zhí)行各個處理任務(wù)。在循環(huán)之外,設(shè)計一個或多個中斷效勞函數(shù),用于處理異步事件。在相對簡單的應(yīng)用中,這種形式,完全可
2、以勝任。而對于實(shí)時性要求較高、處理任務(wù)較多的應(yīng)用,就會暴露出實(shí)時性差的缺點(diǎn),甚至不可以到達(dá)應(yīng)用的要求,系統(tǒng)可靠性低,穩(wěn)定性差。引入實(shí)時操作系統(tǒng),可以較好解決這個問題。ir/S-II是一個完好的,可移植、可固化、可剪裁的搶占式多任務(wù)實(shí)時內(nèi)核,并且開放源代碼,在嵌入式系統(tǒng)中得到了廣泛應(yīng)用。為了實(shí)現(xiàn)老系統(tǒng)功能晉級,到達(dá)了不改變硬件設(shè)計,增加系統(tǒng)功能、進(jìn)步系統(tǒng)性能的目的,從而采用該實(shí)時操作系統(tǒng)。本文介紹了將其移植應(yīng)用于80196的詳細(xì)實(shí)現(xiàn)和考前須知。所謂移植,就是使一個實(shí)時內(nèi)核可以在其他微處理器或微控制器上運(yùn)行。移植要做的是,修改或編寫與處理器硬件相關(guān)的代碼。由于80196系統(tǒng)的資源有限,除了代碼移植
3、,還要根據(jù)詳細(xì)應(yīng)用,對ir/S-II進(jìn)展裁剪,以到達(dá)系統(tǒng)的設(shè)計要求。1.ir/S-II簡介ir/S-II的系統(tǒng)構(gòu)造見圖1。ir/S-II最主要的特點(diǎn)之一是源代碼開放,有利于用戶根據(jù)詳細(xì)應(yīng)用對操作系統(tǒng)進(jìn)展充分的裁減。這也使得其可移植性非常的強(qiáng)。ir/S-II是為嵌入式應(yīng)用專門設(shè)計的,完全可與應(yīng)用軟件交融在一起,進(jìn)展編譯、連接,進(jìn)而作為產(chǎn)品的一局部發(fā)布。ir/S-II是完全可剝奪型的實(shí)時內(nèi)核,總是運(yùn)行就緒任務(wù)中最高優(yōu)先級的任務(wù),即準(zhǔn)備就緒的高優(yōu)先級任務(wù)可以剝奪正在運(yùn)行的低優(yōu)先級任務(wù)的PU使用權(quán)。2.移植的根本思路2.1編譯器采用TASKING公司的196編譯器,可以方便的嵌入?yún)R編語言,因此該移植所
4、有的函數(shù)都在S_PU_.中實(shí)現(xiàn),沒有S_PU_A.AS文件。可以采用語言編碼的,盡量采用語言編碼;不能采用代碼的,采用嵌入?yún)R編的方式。以此降低代碼的分散度,進(jìn)步代碼的可讀性。2.2代碼移植代碼移植,需要修改或編寫與處理器硬件相關(guān)的代碼。包括與處理器相關(guān)的數(shù)據(jù)類型定義,函數(shù)定義,存儲器操作等。其中的主要任務(wù)有:1重新編輯INLUDES.H文件,增加與應(yīng)用相關(guān)的頭文件;改寫S_PU.H文件;2改寫S_FG.H文件;編寫S_PU_.;3優(yōu)化代碼效率。2.3存儲資源由于80196系統(tǒng)的物理資源非常有限,需要對系統(tǒng)內(nèi)核進(jìn)展充分的裁剪。片內(nèi)可用內(nèi)存為220個字節(jié),在系統(tǒng)中外部擴(kuò)展35843.5K個字節(jié)。為
5、了進(jìn)步系統(tǒng)速度,操作系統(tǒng)盡量使用片內(nèi)存儲區(qū)。系統(tǒng)應(yīng)用中經(jīng)常使用的變量,也需要分配在片內(nèi)存儲區(qū)。為了節(jié)約存儲資源采取以下措施:1裁剪不使用的功能模塊和其使用相應(yīng)變量。2根據(jù)應(yīng)用的需要裁剪所需資源的規(guī)模。例如,在應(yīng)用中實(shí)際使用任務(wù)為6個,所以將SRdyTbl由一個數(shù)組,更改為一個8位變量,并去掉SRdyGrp,因為其永遠(yuǎn)是0。3修改S_InitTaskIdle內(nèi)容,將S_TaskIdle任務(wù)換為應(yīng)用的最低優(yōu)先級的任務(wù)。4裁剪S_TB的內(nèi)容。例如,永遠(yuǎn)不會使用的變量STBY和STBBitY。5裁剪中斷嵌套的相關(guān)內(nèi)容。2.4時間資源ir/S-II推薦的時鐘節(jié)拍為10200s,而本系統(tǒng)的實(shí)際時鐘節(jié)拍為2
6、50s,這樣系統(tǒng)額外開銷必然大幅度增加,系統(tǒng)時間資源非常緊張。為了節(jié)約時間資源采取以下措施:1棄用STieDly函數(shù),直接操作任務(wù)定時器,調(diào)用S_Shed函數(shù)。2棄用SIntExit和SInttxS函數(shù),將其源代碼直接參加軟件定時器中斷效勞函數(shù)。3降低其他中斷效勞函數(shù)的代碼長度,且不進(jìn)展任務(wù)切換,降低系統(tǒng)時鐘的誤差。4根據(jù)編譯得到的匯編代碼,對局部語言代碼進(jìn)展優(yōu)化。3.移植實(shí)現(xiàn)3.1任務(wù)分配一個任務(wù),也稱為一個線程,是一個簡單的程序,該程序可以認(rèn)為PU完全屬于自己。每個任務(wù)有獨(dú)立的堆??臻g和優(yōu)先級。根據(jù)每個任務(wù)的內(nèi)容可以在相應(yīng)位置,使任務(wù)就緒。而任務(wù)就緒和任務(wù)切換可以分開。例如,在接收中斷中,
7、使可以AN通信任務(wù)就緒,但可以不進(jìn)展任務(wù)切換,而在系統(tǒng)時鐘函數(shù)中進(jìn)展任務(wù)切換。系統(tǒng)總是讓處于就緒態(tài)的、優(yōu)先級最高的任務(wù)先運(yùn)行。3.2時鐘節(jié)拍時鐘節(jié)拍是特定的周期性中斷,根據(jù)應(yīng)用系統(tǒng)的需要,時鐘節(jié)拍的周期為250s,采用軟件定時器實(shí)現(xiàn)。在該效勞函數(shù)中實(shí)現(xiàn)任務(wù)切換,為了節(jié)省時間和存儲資源,不進(jìn)展函數(shù)調(diào)用。軟件定時器中斷效勞函數(shù)實(shí)現(xiàn)代碼如下:vidSTikISR(vid)/重置軟件定時器S250usunt+;/計數(shù)器加1if(S250usunt0 x03)=0)S1sunt+;/1s定時器S50sDly+;/50s定時器SRdyTbl|=0 x20;/1s定時到,就緒Taskhk任務(wù)/SIntExi
8、t()中斷退出任務(wù)切換SPriHighRdy=SUnapTblSRdyTbl;/獲得最高優(yōu)先級就緒任務(wù)的優(yōu)先級if(SPriHighRdy!=SPriur)/判斷當(dāng)前任務(wù)優(yōu)先級是否與最高優(yōu)先級就緒任務(wù)的優(yōu)先級一樣/SInttxS();STBur-STBStkPtr=psp;/存儲被中斷任務(wù)的堆棧指針STBur=STBPriTblSPriHighRdy;/獲得最高優(yōu)先級就緒任務(wù)的TBSPriur=SPriHighRdy;/設(shè)當(dāng)前任務(wù)優(yōu)先級為最高優(yōu)先級就緒任務(wù)的優(yōu)先級psp=STBur-STBStkPtr;/獲得堆棧指針as/現(xiàn)場恢復(fù)ppdx;ppx;ppbx;ppax;ppa;ret;/切換到最
9、高優(yōu)先級就緒任務(wù),必需要有的3.3中斷由于中斷的存在,任何代碼在任何時候,都有可能被中斷。而有些代碼是不可分割的,假如被中斷將會產(chǎn)生不可意料的后果。因此定義臨界段,以處理不可分割的代碼。一旦該局部代碼開場執(zhí)行,不允許任何中斷插入。為了確保臨界段代碼的執(zhí)行不被中斷,在進(jìn)入臨階段之前,必須關(guān)中斷,臨界段代碼執(zhí)行完畢,開中斷。為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ù)開場地址*-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開場運(yùn)行最高優(yōu)先級就緒任務(wù)系統(tǒng)開場運(yùn)行時,調(diào)用
11、該函數(shù),以開場運(yùn)行,其實(shí)現(xiàn)代碼如下:vidSStartHighRdy(vid)SRunning=TRUE;/置系統(tǒng)正在運(yùn)行標(biāo)志STBur=STBHighRdy;/置當(dāng)前TB為最高優(yōu)先級就緒任務(wù)的TBpsp=STBHighRdy-STBStkPtr;/獲得堆棧指針as/恢復(fù)現(xiàn)場ppdx;ppx;ppbx;ppax;ppa;/轉(zhuǎn)到新任務(wù)3.4.3現(xiàn)場切換函數(shù)S_Shed函數(shù)調(diào)用該函數(shù)實(shí)現(xiàn)真正的任務(wù)切換。vidStxS(vid)as/保存被中斷任務(wù)的現(xiàn)場pusha;pushax;pushbx;pushx;pushdx;STBur-STBStkPtr=psp;/存儲被中斷任務(wù)的堆棧指針STBur=ST
12、BPriTblSPriHighRdy;/獲得最高優(yōu)先級就緒任務(wù)的TBSPriur=SPriHighRdy;/設(shè)當(dāng)前任務(wù)優(yōu)先級為最高優(yōu)先級就緒任務(wù)的優(yōu)先級psp=STBur-STBStkPtr;/獲得堆棧指針as/現(xiàn)場恢復(fù)ppdx;ppx;ppbx;ppax;ppa;4.考前須知在實(shí)現(xiàn)過程中的得到如下經(jīng)歷教訓(xùn):1)盡量減少任務(wù)的數(shù)量,以減少系統(tǒng)額外開銷。相對少的任務(wù)數(shù),可以減少,系統(tǒng)花在任務(wù)切換上的時間。2)合理分配各個任務(wù)的優(yōu)先級。3)注意開中斷、關(guān)中斷的時機(jī)。4)注意入棧和出棧要匹配。假如堆棧指針出現(xiàn)錯位,將會出現(xiàn)災(zāi)難性后果。特別注意中斷效勞函數(shù)的處理,其調(diào)用時的入棧內(nèi)容和退出中斷的出棧內(nèi)容要對應(yīng),而中斷退出有兩種可能:正常退出和任務(wù)切換。5)合理選擇定時器時間周期。6)同類型工作,也同樣需要有優(yōu)先級區(qū)分。例如:同樣是通信任務(wù),接收數(shù)據(jù)需要較高的優(yōu)先級,而通信故障處理需要較低的優(yōu)先級。一般情況下,通信處理都有一定的故障容忍時間,只要在容忍時間內(nèi)得到處理就可以了。假如發(fā)生不可恢復(fù)性錯誤,故障處理將會占用大量的時間,假如在較高優(yōu)先級,將會影響整個系統(tǒng)的性能。5.結(jié)論通過在80196上移植實(shí)現(xiàn)ir/S-II,到達(dá)了不改變硬件設(shè)計,增加應(yīng)用功能,進(jìn)步了應(yīng)用系統(tǒng)性能的目的。在嵌入式系統(tǒng)中使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利購買合同范本
- 中藥材種植技術(shù)服務(wù)合同
- 個人理財顧問合同「樣本」
- 二手教練車交易合同模板
- 三方資產(chǎn)轉(zhuǎn)讓合同標(biāo)準(zhǔn)范本
- 上海市租賃住房租賃合同
- 二手房裝修改造合同簡單范本
- 個人向公司借款合同范例
- 不可撤銷合同擔(dān)保協(xié)議范本大全
- 個人購房借款合同范本
- 【七上HK數(shù)學(xué)】安徽省蚌埠市固鎮(zhèn)縣2024-2025學(xué)年七年級上學(xué)期1月期末試卷數(shù)學(xué)試題
- 電信網(wǎng)和互聯(lián)網(wǎng)圖像篡改檢測技術(shù)要求與測試方法
- 2025屆江蘇省南京市鹽城市高三一??荚囌Z文試題 課件
- 《水稻生長進(jìn)程》課件
- 2024版企業(yè)高管職務(wù)任命書3篇
- 青少年鑄牢中華民族共同體意識路徑研究
- 江蘇省南京市2024年中考英語試題(含解析)
- 學(xué)校農(nóng)業(yè)教育體驗項目方案
- 水利工程施工監(jiān)理規(guī)范(SL288-2014)用表填表說明及示例
- 部編版2023-2024學(xué)年六年級上冊語文期末測試試卷(含答案)
- 旅行社新人培訓(xùn)
評論
0/150
提交評論