版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、?引言:隨著各種應(yīng)用電子系統(tǒng)的復(fù)雜化和系統(tǒng)實(shí)時性需求的提高,并伴隨應(yīng)用軟件朝著系統(tǒng)化方向發(fā)展的加速,在16位32位單片機(jī)中廣泛使用了嵌入式實(shí)時操作系統(tǒng)。然而實(shí)際使用中卻存在著大量8位單片機(jī),從經(jīng)濟(jì)性考慮,對某些應(yīng)用場合,在8位MCU上使用操作系統(tǒng)是可行的。從學(xué)習(xí)操作系統(tǒng)角度,uCOSIIf51即簡單又全面,學(xué)習(xí)成本低廉,值得推廣。結(jié)語:μCOSII具有免費(fèi)、簡單、可靠性高、實(shí)時性好等優(yōu)點(diǎn),但也有缺乏便利開發(fā)環(huán)境等缺點(diǎn),尤其不像商用嵌入式
2、系統(tǒng)那樣得到廣泛使用和持續(xù)的研究更新。但開放性又使得開發(fā)人員可以自行裁減和添加所需的功能,在許多應(yīng)用領(lǐng)域發(fā)揮著獨(dú)特的作用。當(dāng)然,是否在單片機(jī)系統(tǒng)中嵌入μCOSII應(yīng)視所開發(fā)的項(xiàng)目而定,對于一些簡單的、低成本的項(xiàng)目來說,就沒必要使用嵌入式操作系統(tǒng)了。uCOSII原理:uCOSII包括任務(wù)調(diào)度、時間管理、內(nèi)存管理、資源管理(信號量、郵箱、消息隊(duì)列)四大部分,沒有文件系統(tǒng)、網(wǎng)絡(luò)接口、輸入輸出界面。它的移植只與4個文件相關(guān):匯編文件(OS_CP
3、U_A.ASM)、處理器相關(guān)C文件(OS_CPU.H、OS_CPU_C.C)和配置文件(OS_CFG.H)。有64個優(yōu)先級,系統(tǒng)占用8個,用戶可創(chuàng)建56個任務(wù),不支持時間片輪轉(zhuǎn)。它的基本思路就是“近似地每時每刻總是讓優(yōu)先級最高的就緒任務(wù)處于運(yùn)行狀態(tài)”。為了保證這一點(diǎn),它在調(diào)用系統(tǒng)API函數(shù)、中斷結(jié)束、定時中斷結(jié)束時總是執(zhí)行調(diào)度算法。原作者通過事先計(jì)算好數(shù)據(jù),簡化了運(yùn)算量,通過精心設(shè)計(jì)就緒表結(jié)構(gòu),使得延時可預(yù)知。任務(wù)的切換是通過模擬一次中
4、斷實(shí)現(xiàn)的。uCOSII工作核心原理是:近似地讓最高優(yōu)先級的就緒任務(wù)處于運(yùn)行狀態(tài)。操作系統(tǒng)將在下面情況中進(jìn)行任務(wù)調(diào)度:調(diào)用API函數(shù)(用戶主動調(diào)用),中斷(系統(tǒng)占用的時間片中斷OsTimeTick(),用戶使用的中斷)。調(diào)度算法書上講得很清楚,我主要講一下整體思路。(1)在調(diào)用API函數(shù)時,有可能引起阻塞,如果系統(tǒng)API函數(shù)察覺到運(yùn)行條件不滿足,需要切換就調(diào)用OSSched()調(diào)度函數(shù),這個過程是系統(tǒng)自動完成的,用戶沒有參與。OSSche
5、d()判斷是否切換,如果需要切換,則此函數(shù)調(diào)用OS_TASK_SW()。這個函數(shù)模擬一次中斷(在51里沒有軟中斷,我用子程序調(diào)用模擬,效果相同),好象程序被中斷打斷了,其實(shí)是OS故意制造的假象,目的是為了任務(wù)切換。既然是中斷,那么返回地址(即緊鄰OS_TASK_SW()的下一條匯編指令的PC地址)就被自動壓入堆棧,接著在中斷程序里保存CPU寄存器(PUSHALL)……。堆棧結(jié)構(gòu)不是任意的,而是嚴(yán)格按照uCOSII規(guī)范處理。OS每次切換都
6、會保存和恢復(fù)全部現(xiàn)場信息(POPALL),然后用RETI回到任務(wù)斷點(diǎn)繼續(xù)執(zhí)行。這個斷點(diǎn)就是OSSched()函數(shù)里的緊鄰OS_TASK_SW()的下一條匯編指令的PC地址。切換的整個過程就是,用戶任務(wù)程序調(diào)用系統(tǒng)API函數(shù),API調(diào)用OSSched(),OSSched()調(diào)用軟中斷OS_TASK_SW()即OSCtxSw,返回地址(PC值)壓棧,進(jìn)入OSCtxSw中斷處理子程序內(nèi)部。反之,切換程序調(diào)用RETI返回緊鄰OS_TASK_SW
7、()的下一條匯編指令的我設(shè)計(jì)的堆棧結(jié)構(gòu)如下圖所示:TCB結(jié)構(gòu)體中OSTCBStkPtr總是指向用戶堆棧最低地址,該地址空間內(nèi)存放用戶堆棧長度,其上空間存放系統(tǒng)堆棧映像,即:用戶堆棧空間大小=系統(tǒng)堆??臻g大小1。SP總是先加1再存數(shù)據(jù),因此,SP初始時指向系統(tǒng)堆棧起始地址(OSStack)減1處(OSStkStart)。很明顯系統(tǒng)堆棧存儲空間大小=SPOSStkStart。任務(wù)切換時,先保存當(dāng)前任務(wù)堆棧內(nèi)容。方法是:用SPOSStkSta
8、rt得出保存字節(jié)數(shù),將其寫入用戶堆棧最低地址內(nèi),以用戶堆棧最低地址為起址,以O(shè)SStkStart為系統(tǒng)堆棧起址,由系統(tǒng)棧向用戶棧拷貝數(shù)據(jù),循環(huán)SPOSStkStart次,每次拷貝前先將各自棧指針增1。其次,恢復(fù)最高優(yōu)先級任務(wù)系統(tǒng)堆棧。方法是:獲得最高優(yōu)先級任務(wù)用戶堆棧最低地址,從中取出“長度”,以最高優(yōu)先級任務(wù)用戶堆棧最低地址為起址,以O(shè)SStkStart為系統(tǒng)堆棧起址,由用戶棧向系統(tǒng)??截悢?shù)據(jù),循環(huán)“長度”數(shù)值指示的次數(shù),每次拷貝前先
9、將各自棧指針增1。用戶堆棧初始化時從下向上依次保存:用戶堆棧長度(15),PCL,PCH,PSW,ACC,B,DPL,DPH,R0,R1,R2,R3,R4,R5,R6,R7。不保存SP,任務(wù)切換時根據(jù)用戶堆棧長度計(jì)算得出。OSTaskStkInit函數(shù)總是返回用戶棧最低地址。操作系統(tǒng)tick時鐘我使用了51單片機(jī)的T0定時器,它的初始化代碼用C寫在了本文件中。最后還有幾點(diǎn)必須注意的事項(xiàng)。本來原則上我們不用修改與處理器無關(guān)的代碼,但是由于
10、KEIL編譯器的特殊性,這些代碼仍要多處改動。因?yàn)镵EIL缺省情況下編譯的代碼不可重入,而多任務(wù)系統(tǒng)要求并發(fā)操作導(dǎo)致重入,所以要在每個C函數(shù)及其聲明后標(biāo)注reentrant關(guān)鍵字。另外,“pdata”、“data”在uCOS中用做一些函數(shù)的形參,但它同時又是KEIL的關(guān)鍵字,會導(dǎo)致編譯錯誤,我通過把“pdata”改成“ppdata”,“data”改成“ddata”解決了此問題。OSTCBCur、OSTCBHighRdy、OSRunnin
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在51系列單片機(jī)上移植ucos-ii
- 基于arm9的ucos-ii移植
- ucos-ii移植arm的讀書筆記
- ucos-ii內(nèi)核架構(gòu)解析
- ucos-ii中斷服務(wù)程序代碼分析
- 基于ucos-ii的時鐘設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- ucos-ii軟件定時器管理算法
- 一步一步教你使用ucos-ii
- ucos-ii操作系統(tǒng)練習(xí)題
- ucos-ii軟件定時器管理算法
- 基于uCOS-II的無線居民抄表系統(tǒng)設(shè)計(jì).pdf
- 51單片機(jī)串行通信分析
- fpga和外圍51單片機(jī)的通信
- 信息與通信學(xué)院課程設(shè)計(jì)--- 基于51單片機(jī)的流水燈
- dsp數(shù)字信號處理課程設(shè)計(jì)報(bào)告--ucos-ii多任務(wù)實(shí)驗(yàn)
- uCOS-Ⅱ在基于C51單片機(jī)的超聲診斷儀中的應(yīng)用.pdf
- mcs-51單片機(jī)的串行通信口
- 基于ucos-ii系統(tǒng)的四旋翼飛行器的設(shè)計(jì)畢業(yè)論文
- 嵌入式實(shí)時操作系統(tǒng)UCOS-II應(yīng)用技術(shù)研究.pdf
- ucos移植
評論
0/150
提交評論