色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機嵌入操作系統(tǒng)μC/OS-II的利弊分析

MCU開發(fā)加油站 ? 來源:未知 ? 作者:易水寒 ? 2017-12-22 13:40 ? 次閱讀

近年來,在單片機系統(tǒng)中嵌入操作系統(tǒng)已經(jīng)成為人們越來越關(guān)心的一個話題。本文通過對一種源碼公開的單片機嵌入式實時操作系統(tǒng)μC/OS-II為例,闡述了在單片機中使用該嵌入式操作系統(tǒng)的優(yōu)缺點,以及在應(yīng)用中應(yīng)當(dāng)注意的一些問題。

早在20世紀(jì)60年代,就已經(jīng)有人開始研究和開發(fā)嵌入式操作系統(tǒng)。但直到最近,它才在國內(nèi)被越來越多的提及,在通信電子、自動化等需要實時處理的領(lǐng)域所日益顯現(xiàn)的重要性吸引了人們越來越多的注意力。但是,人們所談?wù)摰耐且恍┲纳虡I(yè)內(nèi)核,諸如VxWorks、PSOS等。這些商業(yè)內(nèi)核性能優(yōu)越,但價格昂貴,主要用于16位和32位處理器中,針對國內(nèi)大部分用戶使用的51系列8位單片機,可以選擇免費的μC/OS-II。

μC/OS-II的特點

1、μC/OS-II是由Labrosse先生編寫的一個開放式內(nèi)核,最主要的特點就是源碼公開。這一點對于用戶來說可謂利弊各半,好處在于,一方面它是免費的,另一方面用戶可以根據(jù)自己的需要對它進行修改。缺點在于它缺乏必要的支持,沒有功能強大的軟件包,用戶通常需要自己編寫驅(qū)動程序,特別是如果用戶使用的是不太常用的單片機,還必須自己編寫移植程序。

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

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

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

μC/OS-II在單片機使用中的一些特點:

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

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

RAM總需求=應(yīng)用程序的RAM需求+內(nèi)核數(shù)據(jù)區(qū)的RAM需求+(任務(wù)棧需求+最大中斷嵌套棧需求)·任務(wù)數(shù)

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

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

(4)和其他一些著名的嵌入式操作系統(tǒng)不同,μC/OS-II在單片機系統(tǒng)中的啟動過程比較簡單,不像有些操作系統(tǒng)那樣,需要把內(nèi)核編譯成一個映像文件寫入ROM中,上電復(fù)位后,再從ROM中把文件加載到RAM中去,然后再運行應(yīng)用程序。μC/OS-II的內(nèi)核是和應(yīng)用程序放在一起編譯成一個文件的,使用者只需要把這個文件轉(zhuǎn)換成HEX格式,寫入ROM中就可以了,上電后,會像普通的單片機程序一樣運行。

結(jié)語

由以上介紹可以看出,μC/OS-II具有免費、使用簡單、可靠性高、實時性好等優(yōu)點,但也有移植困難、缺乏必要的技術(shù)支持等缺點,尤其不像商用嵌入式系統(tǒng)那樣得到廣泛使用和持續(xù)的研究更新。但開放性又使得開發(fā)人員可以自行裁減和添加所需的功能,在許多應(yīng)用領(lǐng)域發(fā)揮著獨特的作用。當(dāng)然,是否在單片機系統(tǒng)中嵌入μC/OS-II應(yīng)視所開發(fā)的項目而定,對于一些簡單的、低成本的項目來說,就沒必要使用嵌入式操作系統(tǒng)了。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634690
  • μC/OS-II
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    12321

原文標(biāo)題:在單片機中,嵌入操作系統(tǒng)的利弊

文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于無操作系統(tǒng)的STM32單片機開發(fā)附源碼

    現(xiàn)在非常多的的MCU性能都還不錯,同時用戶也會去擴展一些外部RAM,這樣如果高效便捷的管理這些內(nèi)存是一個重要話題。 今天給大家分享一份源碼:基于無操作系統(tǒng)的STM32單片機開發(fā),功能強大,可申請
    的頭像 發(fā)表于 11-15 11:24 ?424次閱讀

    linux是實時系統(tǒng)還是分時操作系統(tǒng)

    大家平時玩單片機基本上對于μC/OS、FreeRTOS、ThreadX這些操作系統(tǒng)非常熟悉了,他們都屬于實時操作系統(tǒng)(RTOS),在工業(yè)領(lǐng)域
    的頭像 發(fā)表于 11-11 11:43 ?427次閱讀

    什么是嵌入操作系統(tǒng)?

    什么是嵌入操作系統(tǒng)? 想象一下,如果一個智能設(shè)備,比如你口袋里的智能手機,是一個有頭腦的機器人,那么嵌入操作系統(tǒng)(Embedded Operating System,簡稱EOS)就
    發(fā)表于 11-08 15:07

    優(yōu)化MSP430上用于uC/OS-II的內(nèi)存

    電子發(fā)燒友網(wǎng)站提供《優(yōu)化MSP430上用于uC/OS-II的內(nèi)存.pdf》資料免費下載
    發(fā)表于 10-18 10:16 ?0次下載
    優(yōu)化MSP430上用于uC/<b class='flag-5'>OS-II</b>的內(nèi)存

    工控支持什么操作系統(tǒng)

    工控,全稱工業(yè)控制計算機(Industrial Personal Computer, IPC),支持多種操作系統(tǒng)以滿足不同行業(yè)和應(yīng)用場景的需求。具體來說,工控常見的操作系統(tǒng)包括:
    的頭像 發(fā)表于 09-11 09:24 ?419次閱讀

    linux開發(fā)板和單片機開發(fā)的區(qū)別

    、PIC等,處理能力和內(nèi)存容量相對較低。 操作系統(tǒng) Linux開發(fā)板通常使用Linux操作系統(tǒng),具有豐富的軟件資源和開發(fā)工具。單片機開發(fā)則通常使用嵌入
    的頭像 發(fā)表于 08-30 15:30 ?732次閱讀

    為了學(xué)習(xí)內(nèi)核開發(fā),大佬手搓了一個輕量級操作系統(tǒng)YiYiYa OS

    支持vfs,fat32文件格式 05 支持elf文件,ipc管道等 06 支持ahci、gpio、i2c、spi驅(qū)動等 系統(tǒng)移植教程 作者本人及團隊自制的開源掌FunKey所采用的操作系統(tǒng)
    發(fā)表于 08-30 14:57

    為了學(xué)習(xí)內(nèi)核開發(fā),大佬手搓了一個輕量級操作系統(tǒng)YiYiYa OS

    、gpio、i2c、spi驅(qū)動等 系統(tǒng)移植教程 作者本人及團隊自制的開源掌FunKey所采用的操作系統(tǒng)就是基于Linux內(nèi)核和YiYiYa OS
    發(fā)表于 08-27 10:08

    嵌入式實時操作系統(tǒng):Intewell操作系統(tǒng)與VxWorks操作系統(tǒng)有啥區(qū)別

    Intewell操作系統(tǒng)和VxWorks操作系統(tǒng)都是工業(yè)領(lǐng)域常用的操作系統(tǒng),它們各有特點和優(yōu)勢。以下是它們之間的一些主要區(qū)別:
    的頭像 發(fā)表于 07-08 14:16 ?419次閱讀
    <b class='flag-5'>嵌入</b>式實時<b class='flag-5'>操作系統(tǒng)</b>:Intewell<b class='flag-5'>操作系統(tǒng)</b>與VxWorks<b class='flag-5'>操作系統(tǒng)</b>有啥區(qū)別

    再談嵌入式實時操作系統(tǒng)

    由于嵌入式處理器早期功能單一且運算能力不高,嵌入式應(yīng)用已不能滿足各個領(lǐng)域不斷增長的需求。嵌入操作系統(tǒng)應(yīng)運而生,嵌入
    的頭像 發(fā)表于 04-09 17:27 ?788次閱讀
    再談<b class='flag-5'>嵌入</b>式實時<b class='flag-5'>操作系統(tǒng)</b>

    瑞薩CTSU程序在向嵌入OS操作系統(tǒng)移植時的注意事項

    瑞薩CTSU程序在向嵌入OS操作系統(tǒng)移植時的注意事項
    的頭像 發(fā)表于 03-29 08:05 ?348次閱讀
    瑞薩CTSU程序在向<b class='flag-5'>嵌入</b>式<b class='flag-5'>OS</b><b class='flag-5'>操作系統(tǒng)</b>移植時的注意事項

    國產(chǎn)RT-thread操作系統(tǒng)在國民技術(shù)單片機上移植

    各位嵌入式軟件工程師想必都有類似的經(jīng)驗,使用無操作系統(tǒng)開發(fā)單片機時對于時序把控、任務(wù)延時及各任務(wù)之間的通信很難實現(xiàn)完整地條理清晰地編碼。對于部分經(jīng)驗不足的工程師,總會存在各種各樣的問題,如因為變量
    的頭像 發(fā)表于 03-05 08:20 ?570次閱讀
    國產(chǎn)RT-thread<b class='flag-5'>操作系統(tǒng)</b>在國民技術(shù)<b class='flag-5'>單片機</b>上移植

    請問ADuC7060能否移植uCOS II嵌入操作系統(tǒng)

    我想問一下ADuC7060能否移植uCOS II嵌入操作系統(tǒng)
    發(fā)表于 01-15 06:59

    有了單片機,為什么還要使用操作系統(tǒng)

    問題:? 對于一款單片機來說,裝上了操作系統(tǒng)(比如linux、uc/os-2、winCE等),與不裝操作系統(tǒng)最大的區(qū)別是什么? 回答: 操作系統(tǒng)
    的頭像 發(fā)表于 01-11 08:35 ?808次閱讀

    如何在裸機系統(tǒng)中集成SystemView

    /OS-II、μC/OS-III、FreeRTOS、embOS外,SystemView也支持無OS的裸機系統(tǒng)分析,深入地了解應(yīng)用。
    的頭像 發(fā)表于 12-29 11:07 ?2050次閱讀
    如何在裸機<b class='flag-5'>系統(tǒng)</b>中集成SystemView
    主站蜘蛛池模板: 123超碰在线视频| 精品视频网站| 日本经典片免费看| 97成人免费视频| 久久久久九九| 亚洲色大成网站www久久九九| 国产电影三级午夜a影院| 青青青青青青草| 99久久伊人一区二区yy5o99 | 在线观看成人免费视频| 好男人午夜www视频在线观看| 双腿打开揉弄高潮H苏安安秦慕深 双腿被绑成M型调教PLAY照片 | 亚洲午夜久久久久久久久电影网| 国产精品一区二区三区四区五区 | 成人欧美尽粗二区三区AV| 欧美成人精品高清在线观看| 最近中文字幕MV高清在线视频| 久久精品国产在热亚洲完整版| 亚洲视频在线看| 寂寞护士中文字幕 mp4| 亚洲欧洲日产国产 最新| 精品国产90后在线观看| 亚洲中文 字幕 国产 综合| 九九热精品免费观看| 一本色道久久综合亚洲精品加| 久久99热在线观看7| 樱桃视频高清免费观看在线播放| 九九热精品视频在线观看| 诱受H嗯啊巨肉各种play| 考好老师让你做一次H| 最近最新的日本字幕MV| 男人和女人一起愁愁愁很痛| 99在线免费视频| 日本无码免费久久久精品| 国产 交换 丝雨 巅峰| 无码国产伦一区二区三区视频| 国产人妻人伦精品98| 亚洲精品视频在线免费| 久久精品国产96精品亚洲| 2017欧美狠狠色| 青年医生插曲|