下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、51單片機(jī)中使用ucos ii的優(yōu)缺點(diǎn)(轉(zhuǎn)) 2009-08-29 19:人閱讀評(píng)論(0)收藏舉報(bào)任務(wù)嵌入式操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)學(xué)計(jì)算任務(wù)調(diào)度編程摘要:近年來(lái),在單片機(jī)系統(tǒng)中嵌入操作系統(tǒng)已經(jīng)成為人們?cè)絹?lái)越關(guān)心的一個(gè)話題。本文通過(guò)對(duì)一種源碼公開(kāi)的嵌入式實(shí)時(shí)操作系統(tǒng)ucos ii的分析,以51系列單片機(jī)為例,闡述了在單片機(jī)中使用該嵌入式操作系統(tǒng)的優(yōu)缺點(diǎn),以及在應(yīng)用中應(yīng)當(dāng)注意的一些問(wèn)題。關(guān)鍵詞:實(shí)時(shí)操作系統(tǒng);ucos ii;單片機(jī)引言早在20世紀(jì)60年代,就已經(jīng)有人開(kāi)始研究和開(kāi)發(fā)嵌入式操作系統(tǒng)。但直到最近,它才在國(guó)內(nèi)被越來(lái)越多的提及,在通信、電子、自動(dòng)化等需要實(shí)時(shí)處理的領(lǐng)域所曰益顯現(xiàn)的重要性吸引了人們
2、越來(lái)越多的注意力。但是,人們所談?wù)摰耐且恍┲纳虡I(yè)內(nèi)核,諸如VxWorks、PSOS等。這些商業(yè)內(nèi)核性能優(yōu)越,但價(jià)格昂貴,主要用于16位和32位處理器中,針對(duì)國(guó)內(nèi)大部分用戶使用的51系列8位單片機(jī),可以選擇免費(fèi)的ucos ii。ucos ii的特點(diǎn)1ucos ii是由Labrosse先生編寫(xiě)的一個(gè)開(kāi)放式內(nèi)核,最主要的特點(diǎn)就是源碼公開(kāi)。這一點(diǎn)對(duì)于用戶來(lái)說(shuō)可謂利弊各半,好處在于,一方面它是免費(fèi)的,另一方面用戶可以根據(jù)自己的需要對(duì)它進(jìn)行修改。缺點(diǎn)在于它缺乏必要的支持,沒(méi)有功能強(qiáng)大的軟件包,用戶通常需要自己編寫(xiě)驅(qū)動(dòng)程序,特別是如果用戶使用的是不太常用的單片機(jī),還必須自己編寫(xiě)移植程序。2ucos
3、ii是一個(gè)占先式的內(nèi)核,即已經(jīng)準(zhǔn)備就緒的高優(yōu)先級(jí)任務(wù)可以剝奪正在運(yùn)行的低優(yōu)先級(jí)任務(wù)的CPU使用權(quán)。這個(gè)特點(diǎn)使得它的實(shí)時(shí)性比非占先式的內(nèi)核要好。通常我們都是在中斷服務(wù)程序中使高優(yōu)先級(jí)任務(wù)進(jìn)入就緒態(tài)(例如發(fā)信號(hào)),這樣退出中斷服務(wù)程序后,將進(jìn)行任務(wù)切換,高優(yōu)先級(jí)任務(wù)將被執(zhí)行。拿51單片機(jī)為例,比較一下就可以發(fā)現(xiàn)這樣做的好處。假如需要用中斷方式采集一批數(shù)據(jù)并進(jìn)行處理,在傳統(tǒng)的編程方法中不能在中斷服務(wù)程序中進(jìn)行復(fù)雜的數(shù)據(jù)處理,因?yàn)檫@會(huì)使得關(guān)中斷時(shí)間過(guò)長(zhǎng)。所以經(jīng)常采用的方法是置一標(biāo)志位,然后退出中斷。由于主程序是循環(huán)執(zhí)行的,所以它總有機(jī)會(huì)檢測(cè)到這一標(biāo)志并轉(zhuǎn)到數(shù)據(jù)處理程序中去。但是因?yàn)闊o(wú)法確定發(fā)生中斷時(shí)程
4、序到底執(zhí)行到了什么地方,也就無(wú)法判斷要經(jīng)過(guò)多長(zhǎng)時(shí)間數(shù)據(jù)處理程序才會(huì)執(zhí)行,中斷響應(yīng)時(shí)間無(wú)法確定,系統(tǒng)的實(shí)時(shí)性不強(qiáng)。如果使用C/OS-II的話,只要把數(shù)據(jù)處理程序的優(yōu)先級(jí)設(shè)定得高一些,并在中斷服務(wù)程序中使它進(jìn)入就緒態(tài),中斷結(jié)束后數(shù)據(jù)處理程序就會(huì)被立即執(zhí)行。這樣可以把中斷響應(yīng)時(shí)間限制在一定的范圍內(nèi)。對(duì)于一些對(duì)中斷響應(yīng)時(shí)間有嚴(yán)格要求的系統(tǒng),這是必不可少的。但應(yīng)該指出的是如果數(shù)據(jù)處理程序簡(jiǎn)單,這樣做就未必合適。因?yàn)閡cos ii要求在中斷服務(wù)程序末尾使用OSINTEXIT函數(shù)以判斷是否進(jìn)行任務(wù)切換,這需要花費(fèi)一定的時(shí)間。3ucos ii和大家所熟知的Linux等分時(shí)操作系統(tǒng)不同,它不支持時(shí)間片輪轉(zhuǎn)法。u
5、cos ii是一個(gè)基于優(yōu)先級(jí)的實(shí)時(shí)操作系統(tǒng),每個(gè)任務(wù)的優(yōu)先級(jí)必須不同,分析它的源碼會(huì)發(fā)現(xiàn),ucos ii把任務(wù)的優(yōu)先級(jí)當(dāng)做任務(wù)的標(biāo)識(shí)來(lái)使用,如果優(yōu)先級(jí)相同,任務(wù)將無(wú)法區(qū)分。進(jìn)入就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)首先得到CPU的使用權(quán),只有等它交出CPU的使用權(quán)后,其他任務(wù)才可以被執(zhí)行。所以它只能說(shuō)是多任務(wù),不能說(shuō)是多進(jìn)程,至少不是我們所熟悉的那種多進(jìn)程。顯而易見(jiàn),如果只考慮實(shí)時(shí)性,它當(dāng)然比分時(shí)系統(tǒng)好,它可以保證重要任務(wù)總是優(yōu)先占有CPU。但是在系統(tǒng)中,重要任務(wù)畢竟是有限的,這就使得劃分其他任務(wù)的優(yōu)先權(quán)變成了一個(gè)讓人費(fèi)神的問(wèn)題。另外,有些任務(wù)交替執(zhí)行反而對(duì)用戶更有利。例如,用單片機(jī)控制兩小塊顯示屏?xí)r,無(wú)論
6、是編程者還是使用者肯定希望它們同時(shí)工作,而不是顯示完一塊顯示屏的信息以后再顯示另一塊顯示屏的信息。這時(shí)候,要是ucos ii即支持優(yōu)先級(jí)法又支持時(shí)間片輪轉(zhuǎn)法就更合適了。4ucos ii對(duì)共享資源提供了保護(hù)機(jī)制。正如上文所提到的,ucos ii是一個(gè)支持多任務(wù)的操作系統(tǒng)。一個(gè)完整的程序可以劃分成幾個(gè)任務(wù),不同的任務(wù)執(zhí)行不同的功能。這樣,一個(gè)任務(wù)就相當(dāng)于模塊化設(shè)計(jì)中的一個(gè)子模塊。在任務(wù)中添加代碼時(shí),只要不是共享資源就不必?fù)?dān)心互相之間有影響。而對(duì)于共享資源(比如串口),ucos ii也提供了很好的解決辦法。一般情況下使用的是信號(hào)量的方法。簡(jiǎn)單地說(shuō),先創(chuàng)建一個(gè)信號(hào)量并對(duì)它進(jìn)行初始化。當(dāng)一個(gè)任務(wù)需要使用
7、一個(gè)共享資源時(shí),它必須先申請(qǐng)得到這個(gè)信號(hào)量,而一旦得到了此信號(hào)量,那就只有等使用完了該資源,信號(hào)量才會(huì)被釋放。在這個(gè)過(guò)程中即使有優(yōu)先權(quán)更高的任務(wù)進(jìn)入了就緒態(tài),因?yàn)闊o(wú)法得到此信號(hào)量,也不能使用該資源。這個(gè)特點(diǎn)的好處顯而易見(jiàn),例如當(dāng)顯示屏正在顯示信息的時(shí)候,外部產(chǎn)生了一個(gè)中斷,而在中斷服務(wù)程序中需要顯示屏顯示其他信息。這樣,退出中斷服務(wù)程序后,原有的信息就可能被破壞了。而在C/OS-II中采用信號(hào)量的方法時(shí),只有顯示屏把原有信息顯示完畢后才可以顯示新信息,從而可以避免這個(gè)現(xiàn)象。不過(guò),采用這種方法是以犧牲系統(tǒng)的實(shí)時(shí)性為代價(jià)的。如果顯示原有信息需要耗費(fèi)大量時(shí)間,系統(tǒng)只好等待。從結(jié)果上看,等于延長(zhǎng)了中斷
8、響應(yīng)時(shí)間,這對(duì)于未顯示信息是報(bào)警信息的情況,無(wú)疑是致命的。發(fā)生這種情況,在C/OS-II中稱為優(yōu)先級(jí)反轉(zhuǎn),就是高優(yōu)先級(jí)任務(wù)必須等待低優(yōu)先級(jí)任務(wù)的完成。在上述情況下,在兩個(gè)任務(wù)之間發(fā)生優(yōu)先級(jí)反轉(zhuǎn)是無(wú)法避免的。所以在使用ucos ii時(shí),必須對(duì)所開(kāi)發(fā)的系統(tǒng)了解清楚,才能決定對(duì)于某種共享資源是否使用信號(hào)量。ucos ii在單片機(jī)使用中的一些特點(diǎn)1在單片機(jī)系統(tǒng)中嵌入ucos ii將增強(qiáng)系統(tǒng)的可靠性,并使得調(diào)試程序變得簡(jiǎn)單。以往傳統(tǒng)的單片機(jī)開(kāi)發(fā)工作中經(jīng)常遇到程序跑飛或是陷入死循環(huán)??梢杂每撮T狗解決程序跑飛問(wèn)題,而對(duì)于后一種情況,尤其是其中牽扯到復(fù)雜數(shù)學(xué)計(jì)算的話,只有設(shè)置斷點(diǎn),耗費(fèi)大量時(shí)間來(lái)慢慢分析。如果
9、在系統(tǒng)中嵌入 ucos ii的話,事情就簡(jiǎn)單多了。可以把整個(gè)程序分成許多任務(wù),每個(gè)任務(wù)相對(duì)獨(dú)立,然后在每個(gè)任務(wù)中設(shè)置超時(shí)函數(shù),時(shí)間用完以后,任務(wù)必須交出 CPU的使用權(quán)。即使一個(gè)任務(wù)發(fā)生問(wèn)題,也不會(huì)影響其他任務(wù)的運(yùn)行。這樣既提高了系統(tǒng)的可靠性,同時(shí)也使得調(diào)試程序變得容易。2在單片機(jī)系統(tǒng)中嵌入ucos ii將增加系統(tǒng)的開(kāi)銷?,F(xiàn)在所使用的51單片機(jī),一般是指87C51或者89C51,其片內(nèi)都帶有一定的RAM和 ROM。對(duì)于一些簡(jiǎn)單的程序,如果采用傳統(tǒng)的編程方法,已經(jīng)不需要外擴(kuò)存儲(chǔ)器了。如果在其中嵌入ucos ii的話,在只需要使用任務(wù)調(diào)度、任務(wù)切換、信號(hào)量處理、延時(shí)或超時(shí)服務(wù)的情況下,也不需要外擴(kuò)
10、ROM了,但是外擴(kuò)RAM是必須的。由于ucos ii是可裁減的操作系統(tǒng),其所需要的RAM大小就取決于操作系統(tǒng)功能的多少。舉例來(lái)說(shuō),C/OS-II允許用戶定義最大任務(wù)數(shù)。由于每建立一個(gè)任務(wù),都要產(chǎn)生一個(gè)與之相對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)TCB,該數(shù)據(jù)結(jié)構(gòu)要占用很大一部分內(nèi)存空間。所以在定義最大任務(wù)數(shù)時(shí),一定要考慮實(shí)際情況的需要。如果定得過(guò)大,勢(shì)必會(huì)造成不必要的浪費(fèi)。嵌入ucos ii以后,總的RAM需求可以由如下表達(dá)式得出:RAM總需求=應(yīng)用程序的RAM需求+內(nèi)核數(shù)據(jù)區(qū)的RAM需求+(任務(wù)棧需求+最大中斷嵌套棧需求)任務(wù)數(shù)所幸的是,C/OS-II可以對(duì)每個(gè)任務(wù)分別定義堆棧空間的大小,開(kāi)發(fā)人員可根據(jù)任務(wù)的實(shí)際需
11、求來(lái)進(jìn)行??臻g的分配。但在RAM容量有限的情況下,還是應(yīng)該注意一下對(duì)大型數(shù)組、數(shù)據(jù)結(jié)構(gòu)和函數(shù)的使用,別忘了,函數(shù)的形參也是要推入堆棧的。3ucos ii的移植也是一件需要值得注意的工作。如果沒(méi)有現(xiàn)成的移植實(shí)例的話,就必須自己來(lái)編寫(xiě)移植代碼。雖然只需要改動(dòng)兩個(gè)文件,但仍需要對(duì)相應(yīng)的微處理器比較熟悉才行,最好參照已有的移植實(shí)例。另外,即使有移植實(shí)例,在編程前最好也要閱讀一下,因?yàn)槔锩鏍砍兜蕉褩2僮?。在編?xiě)中斷服務(wù)程序時(shí),把寄存器推入堆棧的順序必須與移植代碼中的順序相對(duì)應(yīng)。4和其他一些著名的嵌入式操作系統(tǒng)不同,ucos ii在單片機(jī)系統(tǒng)中的啟動(dòng)過(guò)程比較簡(jiǎn)單,不像有些操作系統(tǒng)那樣,需要把內(nèi)核編譯成一個(gè)映像文件寫(xiě)入ROM中,上電復(fù)位后,再?gòu)腞OM中把文件加載到RAM中去,然后再運(yùn)行應(yīng)用程序。ucos ii的內(nèi)核是和應(yīng)用程序放在一起編譯成一個(gè)文件的,使用者只需要把這個(gè)文件轉(zhuǎn)換成HEX格式,寫(xiě)入ROM中就可以了,上電后,會(huì)像普通的單片機(jī)程序一樣運(yùn)行。結(jié)語(yǔ)由以上介紹可以看出,ucos
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2021學(xué)年廣東省汕頭市潮陽(yáng)區(qū)高一上學(xué)期期末考試英語(yǔ)試題 解析版
- 施工企業(yè)2025年《春節(jié)節(jié)后復(fù)工復(fù)產(chǎn)》工作實(shí)施方案 (匯編3份)
- 《燃油供給系檢修》課件
- 檔案管理知識(shí)競(jìng)賽試題附答案
- 上范司諫書(shū)(文言文)高考語(yǔ)文閱讀理解
- 云南省楚雄州2023-2024學(xué)年高三上學(xué)期期末考試英語(yǔ)試卷
- 高端會(huì)議保安工作總結(jié)與策略計(jì)劃
- 超市食品安全監(jiān)測(cè)總結(jié)
- 高管團(tuán)隊(duì)建設(shè)與管理計(jì)劃
- 機(jī)場(chǎng)保安工作要點(diǎn)
- 小班音樂(lè)教案:小瓢蟲(chóng)飛教案及反思
- 生活中的代數(shù)智慧樹(shù)知到課后章節(jié)答案2023年下成都師范學(xué)院
- 監(jiān)獄物業(yè)投標(biāo)方案 (技術(shù)方案)
- 盲眼鐘表匠:生命自然選擇的秘密
- 雷達(dá)的分類及雷達(dá)信號(hào)處理詳解
- 焊接檢驗(yàn)作業(yè)指導(dǎo)書(shū)
- 甘河工業(yè)園區(qū)穩(wěn)定化固化車間和危廢暫存庫(kù)項(xiàng)目環(huán)評(píng)報(bào)告
- 《新時(shí)代勞動(dòng)教育教程與實(shí)踐(第2版)》課程標(biāo)準(zhǔn)
- 21ZJ111 變形縫建筑構(gòu)造
- 皮帶輸送機(jī)日常點(diǎn)檢表
- 自愿放棄證明書(shū)怎么寫(xiě)
評(píng)論
0/150
提交評(píng)論