基于嵌入式實(shí)時(shí)操作系統uCOS II的分析

發(fā)布時(shí)間:2018-10-21 10:18    發(fā)布者:xyd2018
關(guān)鍵詞: II
引言
早在20世紀60年代,就已經(jīng)有人開(kāi)始研究和開(kāi)發(fā)嵌入式操作系統。但直到最近,它才在國內被越來(lái)越多的提及,在通信、電子、自動(dòng)化等需要實(shí)時(shí)處理的領(lǐng)域所曰益顯現的重要性吸引了人們越來(lái)越多的注意力。但是,人們所談?wù)摰耐且恍┲?zhù)名的商業(yè)內核,諸如VxWorks、PSOS等。這些商業(yè)內核性能優(yōu)越,但價(jià)格昂貴,主要用于16位和32位處理器中,針對國內大部分用戶(hù)使用的51系列8位單片機,可以選擇免費的uCOS II。

uCOS II的特點(diǎn)
1.uCOS II是由Labrosse先生編寫(xiě)的一個(gè)開(kāi)放式內核,最主要的特點(diǎn)就是源碼公開(kāi)。這一點(diǎn)對于用戶(hù)來(lái)說(shuō)可謂利弊各半,好處在于,一方面它是免費的,另一方面用戶(hù)可以根據自己的需要對它進(jìn)行修改。缺點(diǎn)在于它缺乏必要的支持,沒(méi)有功能強大的軟件包,用戶(hù)通常需要自己編寫(xiě)驅動(dòng)程序,特別是如果用戶(hù)使用的是不太常用的單片機,還必須自己編寫(xiě)移植程序。

2.uCOS II是一個(gè)占先式的內核,即已經(jīng)準備就緒的高優(yōu)先級任務(wù)可以剝奪正在運行的低優(yōu)先級任務(wù)的CPU使用權。這個(gè)特點(diǎn)使得它的實(shí)時(shí)性比非占先式的內核要好。通常我們都是在中斷服務(wù)程序中使高優(yōu)先級任務(wù)進(jìn)入就緒態(tài)(例如發(fā)信號),這樣退出中斷服務(wù)程序后,將進(jìn)行任務(wù)切換,高優(yōu)先級任務(wù)將被執行。拿51單片機為例,比較一下就可以發(fā)現這樣做的好處。假如需要用中斷方式采集一批數據并進(jìn)行處理,在傳統的編程方法中不能在中斷服務(wù)程序中進(jìn)行復雜的數據處理,因為這會(huì )使得關(guān)中斷時(shí)間過(guò)長(cháng)。所以經(jīng)常采用的方法是置一標志位,然后退出中斷。由于主程序是循環(huán)執行的,所以它總有機會(huì )檢測到這一標志并轉到數據處理程序中去。但是因為無(wú)法確定發(fā)生中斷時(shí)程序到底執行到了什么地方,也就無(wú)法判斷要經(jīng)過(guò)多長(cháng)時(shí)間數據處理程序才會(huì )執行,中斷響應時(shí)間無(wú)法確定,系統的實(shí)時(shí)性不強。如果使用μC/OS-II的話(huà),只要把數據處理程序的優(yōu)先級設定得高一些,并在中斷服務(wù)程序中使它進(jìn)入就緒態(tài),中斷結束后數據處理程序就會(huì )被立即執行。這樣可以把中斷響應時(shí)間限制在一定的范圍內。對于一些對中斷響應時(shí)間有嚴格要求的系統,這是必不可少的。但應該指出的是如果數據處理程序簡(jiǎn)單,這樣做就未必合適。因為uCOS II要求在中斷服務(wù)程序末尾使用OSINTEXIT函數以判斷是否進(jìn)行任務(wù)切換,這需要花費一定的時(shí)間。

3.uCOS II和大家所熟知的Linux等分時(shí)操作系統不同,它不支持時(shí)間片輪轉法。uCOS II是一個(gè)基于優(yōu)先級的實(shí)時(shí)操作系統,每個(gè)任務(wù)的優(yōu)先級必須不同,分析它的源碼會(huì )發(fā)現,uCOS II把任務(wù)的優(yōu)先級當做任務(wù)的標識來(lái)使用,如果優(yōu)先級相同,任務(wù)將無(wú)法區分。進(jìn)入就緒態(tài)的優(yōu)先級最高的任務(wù)首先得到CPU的使用權,只有等它交出CPU的使用權后,其他任務(wù)才可以被執行。所以它只能說(shuō)是多任務(wù),不能說(shuō)是多進(jìn)程,至少不是我們所熟悉的那種多進(jìn)程。顯而易見(jiàn),如果只考慮實(shí)時(shí)性,它當然比分時(shí)系統好,它可以保證重要任務(wù)總是優(yōu)先占有CPU。但是在系統中,重要任務(wù)畢竟是有限的,這就使得劃分其他任務(wù)的優(yōu)先權變成了一個(gè)讓人費神的問(wèn)題。另外,有些任務(wù)交替執行反而對用戶(hù)更有利。例如,用單片機控制兩小塊顯示屏時(shí),無(wú)論是編程者還是使用者肯定希望它們同時(shí)工作,而不是顯示完一塊顯示屏的信息以后再顯示另一塊顯示屏的信息。這時(shí)候,要是uCOS II即支持優(yōu)先級法又支持時(shí)間片輪轉法就更合適了。

4.uCOS II對共享資源提供了保護機制。正如上文所提到的,uCOS II是一個(gè)支持多任務(wù)的操作系統。一個(gè)完整的程序可以劃分成幾個(gè)任務(wù),不同的任務(wù)執行不同的功能。這樣,一個(gè)任務(wù)就相當于模塊化設計中的一個(gè)子模塊。在任務(wù)中添加代碼時(shí),只要不是共享資源就不必擔心互相之間有影響。而對于共享資源(比如串口),uCOS II也提供了很好的解決辦法。一般情況下使用的是信號量的方法。簡(jiǎn)單地說(shuō),先創(chuàng )建一個(gè)信號量并對它進(jìn)行初始化。當一個(gè)任務(wù)需要使用一個(gè)共享資源時(shí),它必須先申請得到這個(gè)信號量,而一旦得到了此信號量,那就只有等使用完了該資源,信號量才會(huì )被釋放。在這個(gè)過(guò)程中即使有優(yōu)先權更高的任務(wù)進(jìn)入了就緒態(tài),因為無(wú)法得到此信號量,也不能使用該資源。這個(gè)特點(diǎn)的好處顯而易見(jiàn),例如當顯示屏正在顯示信息的時(shí)候,外部產(chǎn)生了一個(gè)中斷,而在中斷服務(wù)程序中需要顯示屏顯示其他信息。這樣,退出中斷服務(wù)程序后,原有的信息就可能被破壞了。而在μC/OS-II中采用信號量的方法時(shí),只有顯示屏把原有信息顯示完畢后才可以顯示新信息,從而可以避免這個(gè)現象。不過(guò),采用這種方法是以犧牲系統的實(shí)時(shí)性為代價(jià)的。如果顯示原有信息需要耗費大量時(shí)間,系統只好等待。從結果上看,等于延長(cháng)了中斷響應時(shí)間,這對于未顯示信息是報警信息的情況,無(wú)疑是致命的。發(fā)生這種情況,在μC/OS-II中稱(chēng)為優(yōu)先級反轉,就是高優(yōu)先級任務(wù)必須等待低優(yōu)先級任務(wù)的完成。在上述情況下,在兩個(gè)任務(wù)之間發(fā)生優(yōu)先級反轉是無(wú)法避免的。所以在使用uCOS II時(shí),必須對所開(kāi)發(fā)的系統了解清楚,才能決定對于某種共享資源是否使用信號量。

uCOS II在單片機使用中的一些特點(diǎn)
1.在單片機系統中嵌入uCOS II將增強系統的可靠性,并使得調試程序變得簡(jiǎn)單。以往傳統的單片機開(kāi)發(fā)工作中經(jīng)常遇到程序跑飛或是陷入死循環(huán)?梢杂看門(mén)狗解決程序跑飛問(wèn)題,而對于后一種情況,尤其是其中牽扯到復雜數學(xué)計算的話(huà),只有設置斷點(diǎn),耗費大量時(shí)間來(lái)慢慢分析。如果在系統中嵌入 uCOS II的話(huà),事情就簡(jiǎn)單多了?梢园颜麄(gè)程序分成許多任務(wù),每個(gè)任務(wù)相對獨立,然后在每個(gè)任務(wù)中設置超時(shí)函數,時(shí)間用完以后,任務(wù)必須交出 CPU的使用權。即使一個(gè)任務(wù)發(fā)生問(wèn)題,也不會(huì )影響其他任務(wù)的運行。這樣既提高了系統的可靠性,同時(shí)也使得調試程序變得容易。

2.在單片機系統中嵌入uCOS II將增加系統的開(kāi)銷(xiāo),F在所使用的51單片機,一般是指87C51或者89C51,其片內都帶有一定的RAM和 ROM。對于一些簡(jiǎn)單的程序,如果采用傳統的編程方法,已經(jīng)不需要外擴存儲器了。如果在其中嵌入uCOS II的話(huà),在只需要使用任務(wù)調度、任務(wù)切換、信號量處理、延時(shí)或超時(shí)服務(wù)的情況下,也不需要外擴ROM了,但是外擴RAM是必須的。由于uCOS II是可裁減的操作系統,其所需要的RAM大小就取決于操作系統功能的多少。舉例來(lái)說(shuō),μC/OS-II允許用戶(hù)定義最大任務(wù)數。由于每建立一個(gè)任務(wù),都要產(chǎn)生一個(gè)與之相對應的數據結構TCB,該數據結構要占用很大一部分內存空間。所以在定義最大任務(wù)數時(shí),一定要考慮實(shí)際情況的需要。如果定得過(guò)大,勢必會(huì )造成不必要的浪費。嵌入uCOS II以后,總的RAM需求可以由如下表達式得出:
RAM總需求=應用程序的RAM需求+內核數據區的RAM需求+(任務(wù)棧需求+最大中斷嵌套棧需求)·任務(wù)數

所幸的是,μC/OS-II可以對每個(gè)任務(wù)分別定義堆?臻g的大小,開(kāi)發(fā)人員可根據任務(wù)的實(shí)際需求來(lái)進(jìn)行?臻g的分配。但在RAM容量有限的情況下,還是應該注意一下對大型數組、數據結構和函數的使用,別忘了,函數的形參也是要推入堆棧的。

3.uCOS II的移植也是一件需要值得注意的工作。如果沒(méi)有現成的移植實(shí)例的話(huà),就必須自己來(lái)編寫(xiě)移植代碼。雖然只需要改動(dòng)兩個(gè)文件,但仍需要對相應的微處理器比較熟悉才行,最好參照已有的移植實(shí)例。另外,即使有移植實(shí)例,在編程前最好也要閱讀一下,因為里面牽扯到堆棧操作。在編寫(xiě)中斷服務(wù)程序時(shí),把寄存器推入堆棧的順序必須與移植代碼中的順序相對應。

4.和其他一些著(zhù)名的嵌入式操作系統不同,uCOS II在單片機系統中的啟動(dòng)過(guò)程比較簡(jiǎn)單,不像有些操作系統那樣,需要把內核編譯成一個(gè)映像文件寫(xiě)入ROM中,上電復位后,再從ROM中把文件加載到RAM中去,然后再運行應用程序。uCOS II的內核是和應用程序放在一起編譯成一個(gè)文件的,使用者只需要把這個(gè)文件轉換成HEX格式,寫(xiě)入ROM中就可以了,上電后,會(huì )像普通的單片機程序一樣運行。

結語(yǔ)
由以上介紹可以看出,uCOS II具有免費、使用簡(jiǎn)單、可靠性高、實(shí)時(shí)性好等優(yōu)點(diǎn),但也有移植困難、缺乏必要的技術(shù)支持等缺點(diǎn),尤其不像商用嵌入式系統那樣得到廣泛使用和持續的研究更新。但開(kāi)放性又使得開(kāi)發(fā)人員可以自行裁減和添加所需的功能,在許多應用領(lǐng)域發(fā)揮著(zhù)獨特的作用。當然,是否在單片機系統中嵌入uCOS II應視所開(kāi)發(fā)的項目而定,對于一些簡(jiǎn)單的、低成本的項目來(lái)說(shuō),就沒(méi)必要使用嵌入式操作系統了。
以下課程可免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、Python、安卓等。
想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了宋工QQ3524659088 Tel/V17317951908


本文地址:http://selenalain.com/thread-548659-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页