資料介紹
近年來(lái),在單片機(jī)系統(tǒng)中嵌入操作系統(tǒng)已經(jīng)成為人們?cè)絹?lái)越關(guān)心的一個(gè)話題。本文通過(guò)對(duì)一種源碼公開(kāi)的單片機(jī)嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II為例,闡述了在單片機(jī)中使用該嵌入式操作系統(tǒng)的優(yōu)缺點(diǎn),以及在應(yīng)用中應(yīng)當(dāng)注意的一些問(wèn)題。
早在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)的重要性吸引了人們?cè)絹?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)的μC/OS-II。

μC/OS-II的特點(diǎn)
1. μC/OS-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ě)移植程序。
2. μC/OS-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í)程序到底執(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)棣藽/OS-II要求在中斷服務(wù)程序末尾使用OSINTEXIT函數(shù)以判斷是否進(jìn)行任務(wù)切換,這需要花費(fèi)一定的時(shí)間。
3. μC/OS-II和大家所熟知的Linux等分時(shí)操作系統(tǒng)不同,它不支持時(shí)間片輪轉(zhuǎn)法。μC/OS-II是一個(gè)基于優(yōu)先級(jí)的實(shí)時(shí)操作系統(tǒng),每個(gè)任務(wù)的優(yōu)先級(jí)必須不同,分析它的源碼會(huì)發(fā)現(xiàn),μC/OS-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ú)論是編程者還是使用者肯定希望它們同時(shí)工作,而不是顯示完一塊顯示屏的信息以后再顯示另一塊顯示屏的信息。這時(shí)候,要是μC/OS-II即支持優(yōu)先級(jí)法又支持時(shí)間片輪轉(zhuǎn)法就更合適了。
4. μC/OS-II對(duì)共享資源提供了保護(hù)機(jī)制。正如上文所提到的,μC/OS-II是一個(gè)支持多任務(wù)的操作系統(tǒng)。一個(gè)完整的程序可以劃分成幾個(gè)任務(wù),不同的任務(wù)執(zhí)行不同的功能。這樣,一個(gè)任務(wù)就相當(dāng)于模塊化設(shè)計(jì)中的一個(gè)子模塊。在任務(wù)中添加代碼時(shí),只要不是共享資源就不必?fù)?dān)心互相之間有影響。而對(duì)于共享資源(比如串口),μC/OS-II也提供了很好的解決辦法。一般情況下使用的是信號(hào)量的方法。簡(jiǎn)單地說(shuō),先創(chuàng)建一個(gè)信號(hào)量并對(duì)它進(jìn)行初始化。當(dāng)一個(gè)任務(wù)需要使用一個(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)了中斷響應(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ú)法避免的。所以在使用μC/OS-II時(shí),必須對(duì)所開(kāi)發(fā)的系統(tǒng)了解清楚,才能決定對(duì)于某種共享資源是否使用信號(hào)量。
- 單片機(jī)編程和操作系統(tǒng)綜述 40次下載
- 嵌入式實(shí)時(shí)操作系統(tǒng)的應(yīng)用詳細(xì)教程說(shuō)明 2次下載
- 使用51單片機(jī)簡(jiǎn)單實(shí)現(xiàn)小型操作系統(tǒng)的程序免費(fèi)下載
- 在51單片機(jī)中使用ucosii有哪些優(yōu)缺點(diǎn)詳細(xì)資料分析
- 單片機(jī)與嵌入式系統(tǒng)linux有什么區(qū)別
- 32位單片機(jī)與嵌入式操作系統(tǒng)的測(cè)試復(fù)習(xí)題和答案資料免費(fèi)下載 12次下載
- 單片機(jī)搶占式嵌入式操作系統(tǒng) 1次下載
- 基于NoC結(jié)構(gòu)的嵌入式操作系統(tǒng)的設(shè)計(jì) 0次下載
- 51單片機(jī)多任務(wù)操作系統(tǒng)的原理與實(shí)現(xiàn) 17次下載
- MSP430單片機(jī)實(shí)時(shí)多任務(wù)操作系統(tǒng)c源代碼 91次下載
- 基于分時(shí)操作系統(tǒng)原理的單片機(jī)控制系統(tǒng)
- 嵌入式實(shí)時(shí)操作系統(tǒng)ucosii的分析
- 基于單片機(jī)的嵌入式USB主機(jī)系統(tǒng)的實(shí)現(xiàn)
- 單片機(jī)+CPLD結(jié)構(gòu)體系在電子設(shè)計(jì)中的應(yīng)用
- 多單片機(jī)系統(tǒng)中的數(shù)據(jù)交換
- 國(guó)產(chǎn)RT-thread操作系統(tǒng)在國(guó)民技術(shù)單片機(jī)上移植 1.3k次閱讀
- 單片機(jī)引腳中的VCC和VDD有什么區(qū)別? 1w次閱讀
- 如何將FreeRTOS移植到STM32單片機(jī)上 4.9k次閱讀
- 51單片機(jī)操作系統(tǒng)開(kāi)發(fā)中有什么技巧會(huì)碰到什么問(wèn)題 3.5k次閱讀
- 51系列中嵌入式單片機(jī)的優(yōu)缺點(diǎn)分析 4k次閱讀
- 該如何正確選擇嵌入式操作系統(tǒng) 3.1k次閱讀
- 目前國(guó)內(nèi)在ARM CPU上廣泛采用的三種嵌入式操作系統(tǒng)淺析 4.5k次閱讀
- 51單片機(jī)實(shí)時(shí)操作系統(tǒng)的基本結(jié)構(gòu)與模式 6.1k次閱讀
- 單片機(jī)和嵌入式系統(tǒng)linux的區(qū)別 7.6k次閱讀
- 51單片機(jī)優(yōu)缺點(diǎn)及應(yīng)用領(lǐng)域介紹 6.4w次閱讀
- 單片機(jī)與嵌入式系統(tǒng)有什么區(qū)別和聯(lián)系? 1.5w次閱讀
- 什么是嵌入式操作系統(tǒng) 常見(jiàn)的嵌入式系統(tǒng)有哪些 4.1w次閱讀
- 嵌入式操作系統(tǒng)是什么_嵌入式操作系統(tǒng)有哪些 2.1w次閱讀
- 基于FreeRTOS的嵌入式實(shí)時(shí)操作系統(tǒng)的原理和實(shí)現(xiàn) 7.3k次閱讀
- 概述及匯總ARM的嵌入式操作系統(tǒng) 3.2k次閱讀
下載排行
本周
- 1冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說(shuō)明書(shū)
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費(fèi)
- 4丹佛斯2800系列變頻器說(shuō)明書(shū)
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開(kāi)關(guān)型降壓3.5A單節(jié)鋰電池充電管理電路技術(shù)手冊(cè)
- 0.74 MB | 1次下載 | 免費(fèi)
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測(cè)距模塊產(chǎn)品手冊(cè)
- 0.43 MB | 1次下載 | 免費(fèi)
- 8SDFM 激光測(cè)距模塊模組手冊(cè)
- 0.54 MB | 1次下載 | 免費(fèi)
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場(chǎng)分析及創(chuàng)新應(yīng)用
- 3.11 MB | 43次下載 | 免費(fèi)
- 3RV1126B系列開(kāi)發(fā)板產(chǎn)品資料
- 4.19 MB | 18次下載 | 免費(fèi)
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開(kāi)發(fā)板 四核異構(gòu)、3路千兆網(wǎng),賦能多元化工業(yè)場(chǎng)景
- 3.05 MB | 12次下載 | 免費(fèi)
- 6【開(kāi)源】60余套STM32單片機(jī)、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項(xiàng)目案例及入門(mén)學(xué)習(xí)資源包
- 10.55 MB | 8次下載 | 免費(fèi)
- 7冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車(chē)載充電機(jī)主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191448次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問(wèn)
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論