18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

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

MCU開發(fā)加油站 ? 來源:未知 ? 作者:易水寒 ? 2017-12-22 13:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

μC/OS-II的特點(diǎn)

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

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í)間過長。所以經(jīng)常采用的方法是置一標(biāo)志位,然后退出中斷。由于主程序是循環(huán)執(zhí)行的,所以它總有機(jī)會(huì)檢測(cè)到這一標(biāo)志并轉(zhuǎn)到數(shù)據(jù)處理程序中去。但是因?yàn)闊o法確定發(fā)生中斷時(shí)程序到底執(zhí)行到了什么地方,也就無法判斷要經(jīng)過多長時(shí)間數(shù)據(jù)處理程序才會(huì)執(zhí)行,中斷響應(yīng)時(shí)間無法確定,系統(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ù)處理程序簡單,這樣做就未必合適。因?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í)來使用,如果優(yōu)先級(jí)相同,任務(wù)將無法區(qū)分。進(jìn)入就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)首先得到CPU的使用權(quán),只有等它交出CPU的使用權(quán)后,其他任務(wù)才可以被執(zhí)行。所以它只能說是多任務(wù),不能說是多進(jìn)程,至少不是我們所熟悉的那種多進(jìn)程。顯而易見,如果只考慮實(shí)時(shí)性,它當(dāng)然比分時(shí)系統(tǒng)好,它可以保證重要任務(wù)總是優(yōu)先占有CPU。但是在系統(tǒng)中,重要任務(wù)畢竟是有限的,這就使得劃分其他任務(wù)的優(yōu)先權(quán)變成了一個(gè)讓人費(fèi)神的問題。另外,有些任務(wù)交替執(zhí)行反而對(duì)用戶更有利。例如,用單片機(jī)控制兩小塊顯示屏?xí)r,無論是編程者還是使用者肯定希望它們同時(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)量的方法。簡單地說,先創(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è)過程中即使有優(yōu)先權(quán)更高的任務(wù)進(jìn)入了就緒態(tài),因?yàn)闊o法得到此信號(hào)量,也不能使用該資源。這個(gè)特點(diǎn)的好處顯而易見,例如當(dāng)顯示屏正在顯示信息的時(shí)候,外部產(chǎn)生了一個(gè)中斷,而在中斷服務(wù)程序中需要顯示屏顯示其他信息。這樣,退出中斷服務(wù)程序后,原有的信息就可能被破壞了。而在μC/OS-II中采用信號(hào)量的方法時(shí),只有顯示屏把原有信息顯示完畢后才可以顯示新信息,從而可以避免這個(gè)現(xiàn)象。不過,采用這種方法是以犧牲系統(tǒng)的實(shí)時(shí)性為代價(jià)的。如果顯示原有信息需要耗費(fèi)大量時(shí)間,系統(tǒng)只好等待。從結(jié)果上看,等于延長了中斷響應(yīng)時(shí)間,這對(duì)于未顯示信息是報(bào)警信息的情況,無疑是致命的。發(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)是無法避免的。所以在使用μC/OS-II時(shí),必須對(duì)所開發(fā)的系統(tǒng)了解清楚,才能決定對(duì)于某種共享資源是否使用信號(hào)量。

μC/OS-II在單片機(jī)使用中的一些特點(diǎn):

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

(2)在單片機(jī)系統(tǒng)中嵌入μC/OS-II將增加系統(tǒng)的開銷?,F(xiàn)在所使用的51單片機(jī),一般是指87C51或者89C51,其片內(nèi)都帶有一定的RAMROM。對(duì)于一些簡單的程序,如果采用傳統(tǒng)的編程方法,已經(jīng)不需要外擴(kuò)存儲(chǔ)器了。如果在其中嵌入μC/OS-II的話,在只需要使用任務(wù)調(diào)度、任務(wù)切換、信號(hào)量處理、延時(shí)或超時(shí)服務(wù)的情況下,也不需要外擴(kuò)ROM了,但是外擴(kuò)RAM是必須的。由于μC/OS-II是可裁減的操作系統(tǒng),其所需要的RAM大小就取決于操作系統(tǒng)功能的多少。舉例來說,μ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í)際情況的需要。如果定得過大,勢(shì)必會(huì)造成不必要的浪費(fèi)。嵌入μC/OS-II以后,總的RAM需求可以由如下表達(dá)式得出:

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

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

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

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

結(jié)語

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


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

    關(guān)注

    6072

    文章

    45267

    瀏覽量

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

    關(guān)注

    0

    文章

    50

    瀏覽量

    12971

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    怎么測(cè)單片機(jī)系統(tǒng)頻率

    ,各有其特點(diǎn)和操作要點(diǎn)。 示波器測(cè)量法 示波器是測(cè)量單片機(jī)系統(tǒng)頻率的常用工具,其原理是通過捕捉單片機(jī)輸出的周期性信號(hào),根據(jù)信號(hào)的周期計(jì)算頻率。 操作
    的頭像 發(fā)表于 07-25 11:39 ?312次閱讀

    嵌入式和單片機(jī),是同一個(gè)東西嗎?

    (RTOS)或沒有任何操作系統(tǒng)的裸機(jī)編程。軟件方面,嵌入系統(tǒng)可能使用專門的編程語言,如C、C++或匯編語言,這些語言能夠提供對(duì)硬件的直接控
    發(fā)表于 07-09 10:20

    嵌入系統(tǒng):國產(chǎn)化現(xiàn)狀與趨勢(shì)

    和模塊,如FreeRTOS內(nèi)核小巧,可在幾KB內(nèi)存的微控制器上運(yùn)行,以最小的資源占用提供基本的任務(wù)調(diào)度和管理功能。輕量級(jí)的操作系統(tǒng)如FreeRTOS、μC/OS-II等更適合資源受限的系統(tǒng)
    的頭像 發(fā)表于 06-23 17:26 ?335次閱讀
    <b class='flag-5'>嵌入</b>式<b class='flag-5'>系統(tǒng)</b>:國產(chǎn)化現(xiàn)狀與趨勢(shì)

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

    單片機(jī)嵌入式 :開發(fā)環(huán)境相對(duì)簡單,通常使用C語言或匯編語言進(jìn)行編程,開發(fā)工具包括Keil、IAR等。 Linux嵌入式 :開發(fā)環(huán)境較為復(fù)雜,除了需要掌握
    發(fā)表于 06-20 09:46

    中國汽車報(bào):睿賽德攜“程翧整車基礎(chǔ)軟件OS”亮相操作系統(tǒng)年會(huì)

    3月29日,開源操作系統(tǒng)年度技術(shù)會(huì)議(OS2ATC2025)在京召開。2013年至今,OS2ATC已成功舉辦12屆。聚焦本次技術(shù)盛會(huì),圍繞“智能系統(tǒng)”主題,本次會(huì)議匯聚了國內(nèi)一線
    的頭像 發(fā)表于 04-01 21:00 ?746次閱讀
    中國汽車報(bào):睿賽德攜“程翧整車基礎(chǔ)軟件<b class='flag-5'>OS</b>”亮相<b class='flag-5'>操作系統(tǒng)</b>年會(huì)

    如何在APM32F407開發(fā)板上應(yīng)用uC/OS-III實(shí)時(shí)操作系統(tǒng)

    最近我開始學(xué)習(xí) uC/OS-III 實(shí)時(shí)操作系統(tǒng),并著手將其移植到APM32F407 開發(fā)板上。在這個(gè)過程中,我遇到了許多有趣的挑戰(zhàn)和發(fā)現(xiàn),也感受到了操作系統(tǒng)帶來的強(qiáng)大功能和靈活性。
    的頭像 發(fā)表于 04-01 09:39 ?1133次閱讀
    如何在APM32F407開發(fā)板上應(yīng)用uC/<b class='flag-5'>OS</b>-III實(shí)時(shí)<b class='flag-5'>操作系統(tǒng)</b>

    ARM嵌入式實(shí)時(shí)操作系統(tǒng)比較

    嵌入系統(tǒng)領(lǐng)域,實(shí)時(shí)操作系統(tǒng)(RTOS)是確保任務(wù)按時(shí)完成的關(guān)鍵技術(shù)。ARM架構(gòu)因其低功耗、高性能的特點(diǎn),在嵌入系統(tǒng)中得到了廣泛應(yīng)用。本
    的頭像 發(fā)表于 12-28 09:15 ?2176次閱讀

    51單片機(jī)中為什么很少出現(xiàn)printf的身影

    51單片機(jī)中為什么很少出現(xiàn) printf 的身影?是用不了嗎? 不是的,51單片機(jī)可以用 printf,只是不建議使用。 平時(shí)我們?cè)?b class='flag-5'>操作系統(tǒng)上寫C語言代碼,使用 printf 可以把數(shù)
    的頭像 發(fā)表于 12-03 10:46 ?1713次閱讀
    51<b class='flag-5'>單片機(jī)</b>中為什么很少出現(xiàn)printf的身影

    ZLG致遠(yuǎn)電子再添兩款重磅級(jí)麒麟操作系統(tǒng)產(chǎn)品

    導(dǎo)讀近日,ZLG致遠(yuǎn)電子聯(lián)合麒麟軟件積極響應(yīng)嵌入式產(chǎn)品國產(chǎn)化浪潮,再新添兩款重磅級(jí)銀河麒麟嵌入操作系統(tǒng)工控機(jī)產(chǎn)品。麒麟軟件適配認(rèn)證麒麟軟件是國產(chǎn)
    的頭像 發(fā)表于 11-26 01:03 ?1074次閱讀
    ZLG致遠(yuǎn)電子再添兩款重磅級(jí)麒麟<b class='flag-5'>操作系統(tǒng)</b>產(chǎn)品

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

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

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

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

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

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

    單片機(jī)編程語言有哪些選擇

    單片機(jī)(Microcontroller Unit,MCU)編程是指為單片機(jī)編寫程序的過程,這些程序控制單片機(jī)的行為和功能。單片機(jī)廣泛應(yīng)用于嵌入
    的頭像 發(fā)表于 11-01 14:13 ?3358次閱讀

    單片機(jī)系統(tǒng)設(shè)計(jì)流程及注意事項(xiàng)

    單片機(jī)系統(tǒng)設(shè)計(jì)是一個(gè)涉及硬件和軟件的綜合過程,它要求設(shè)計(jì)者不僅要有扎實(shí)的電子技術(shù)基礎(chǔ),還要具備一定的編程能力和系統(tǒng)分析能力。 單片機(jī)系統(tǒng)設(shè)計(jì)
    的頭像 發(fā)表于 11-01 14:12 ?2358次閱讀

    單片機(jī)嵌入系統(tǒng)的區(qū)別

    在現(xiàn)代電子技術(shù)領(lǐng)域,單片機(jī)嵌入系統(tǒng)是兩個(gè)經(jīng)常被提及的術(shù)語。它們?cè)谠S多應(yīng)用中發(fā)揮著關(guān)鍵作用,如智能家居、工業(yè)自動(dòng)化、汽車電子等。盡管這兩個(gè)概念經(jīng)常被交替使用,但它們之間存在一些基本的區(qū)別。
    的頭像 發(fā)表于 11-01 14:09 ?2428次閱讀