国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

FreeRTOS與μC/OS—III內(nèi)核分析及選型研究

2018-01-03 10:20楊玥邵浩然張索非
科技視界 2018年24期

楊玥 邵浩然 張索非

【摘 要】FreeRTOS與μC/OS-III是當(dāng)今主流實(shí)時(shí)操作系統(tǒng)的代表,使用量位于嵌入式應(yīng)用前列。從任務(wù)管理、同步與通信、時(shí)間管理及軟件定時(shí)器、內(nèi)存管理、中斷管理等方面分析FreeRTOS與μC/OS-III內(nèi)核。介紹了FreeRTOS和μC/OS-III授權(quán)方式,并說明了μC/OS-III符合行業(yè)認(rèn)證標(biāo)準(zhǔn)情況。分析了行業(yè)因素、自身開發(fā)實(shí)力、可利用資源以及成本等方面的影響,為實(shí)時(shí)操作系統(tǒng)選型提供思路。

【關(guān)鍵詞】FreeRTOS;μC/OS-III;實(shí)時(shí)操作系統(tǒng)

中圖分類號(hào): TP316.2 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2018)24-0011-003

DOI:10.19694/j.cnki.issn2095-2457.2018.24.005

【Abstract】Today,F(xiàn)reeRTOS and μC/OS-III are the representatives of the mainstream real-time operating systems, and they are used by many embedded projects.FreeRTOS and μC/OS-III kernels are analyzed from the aspects of task management,synchronization and communication,time management and software timer,memory management and interrupt management.The licensing methods of FreeRTOS and μC/OS-III are introduced,and the situation of μC/OS-III compliance with some certification standards is explained.This paper analyzes the influence of industry factors, development ability,available resources and cost,and provides ideas for the selection of real-time operating system.

【Key words】FreeRTOS;μC/OS-III;RTOS

0 引言

嵌入式系統(tǒng)相關(guān)技術(shù)在當(dāng)今發(fā)展迅速,嵌入式設(shè)備滲透到生產(chǎn)、生活的方方面面。很多嵌入式系統(tǒng)也是實(shí)時(shí)系統(tǒng),實(shí)時(shí)系統(tǒng)不僅要求計(jì)算結(jié)果正確,而且要求結(jié)果具有時(shí)效性[1]。嵌入式系統(tǒng)包括硬件和軟件,其硬件主要依賴各種類型處理器,包括微控制器(Microcontroller Unit,MCU)、微處理器(Microprocessor Unit,MPU)、數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)等。

嵌入式系統(tǒng)軟件,對(duì)于簡(jiǎn)單系統(tǒng)控制邏輯不復(fù)雜、計(jì)算復(fù)雜度較小,可以采用前臺(tái)/后臺(tái)系統(tǒng)(Foreground/Background System)[2],即一個(gè)應(yīng)用包含一個(gè)無限循環(huán),這個(gè)循環(huán)調(diào)用模塊執(zhí)行相應(yīng)操作(后臺(tái)),而中斷服務(wù)例程(Interrupt Service Routine,ISR)處理異步事件(前臺(tái))。顯然對(duì)于復(fù)雜的嵌入式實(shí)時(shí)系統(tǒng)僅采用前臺(tái)/后臺(tái)系統(tǒng)設(shè)計(jì)方式是無法實(shí)現(xiàn)的,因此需要采用嵌入式實(shí)時(shí)操作系統(tǒng)(Embedded Real-time Operation System,RTOS)。RTOS是嵌入式系統(tǒng)中的核心軟件,包括系統(tǒng)內(nèi)核、底層驅(qū)動(dòng)軟件、設(shè)備驅(qū)動(dòng)接口、通信協(xié)議處理軟件等,甚至還包括交互界面[3]。RTOS用于管理處理器的時(shí)間和資源,采用RTOS使得應(yīng)用軟件開發(fā)更加容易,軟件便于維護(hù)的同時(shí)提高了系統(tǒng)穩(wěn)定性和可靠性。

當(dāng)前的RTOS種類很多,比較常用的有FreeRTOS、μC/OS-II(III)、RT Linux、VxWorks等等。FreeRTOS是開源軟件,而μC/OS-II(III)是商業(yè)軟件。FreeRTOS和μC/OS-III用戶數(shù)量領(lǐng)先[4]并且各具特色,因此針對(duì)這兩種嵌入式實(shí)時(shí)操作系統(tǒng)進(jìn)行分析,對(duì)新入門的嵌入式軟件開發(fā)人員理解RTOS內(nèi)核有一定幫助。嵌入式應(yīng)用軟件開發(fā)之初還存在RTOS選型問題,論文通過對(duì)影響選型的幾個(gè)因素進(jìn)行分析,為RTOS選型提供依據(jù)。

1 FreeRTOS、μC/OS-III內(nèi)核分析

RTOS內(nèi)核的基本功能包括任務(wù)管理、同步與通信、時(shí)間管理及軟件定時(shí)器、內(nèi)存管理、中斷管理等。下面在閱讀文獻(xiàn)[5,6]并理解兩種操作系統(tǒng)內(nèi)核源碼的基礎(chǔ)上從各個(gè)功能方面分析FreeRTOS和μC/OS-III內(nèi)核。

1.1 任務(wù)管理

“任務(wù)(task)”是RTOS中的術(shù)語,這里的“任務(wù)”類似于通用操作系統(tǒng)中的進(jìn)程或線程[7]。RTOS中任務(wù)管理包括任務(wù)創(chuàng)建、改變?nèi)蝿?wù)優(yōu)先級(jí)、任務(wù)刪除、任務(wù)掛起、任務(wù)恢復(fù),μC/OS-III和FreeRTOS都有相應(yīng)函數(shù)用于任務(wù)管理。FreeRTOS的任務(wù)創(chuàng)建函數(shù)xTaskCreate()有6個(gè)參數(shù):任務(wù)函數(shù)、任務(wù)名字、任務(wù)堆棧大小、傳遞給任務(wù)函數(shù)的參數(shù)、任務(wù)優(yōu)先級(jí)、任務(wù)句柄。然而,μC/OS-III的任務(wù)創(chuàng)建函數(shù)OSTaskCreate()有13個(gè)參數(shù),這些參數(shù)中除了與xTaskCreate()前5個(gè)基本相同的參數(shù)外,還有任務(wù)控制塊指針、任務(wù)堆?;刂分羔?、堆棧水印限制、任務(wù)可接受消息最大數(shù)量、時(shí)間份額、用作任務(wù)控制塊擴(kuò)展的內(nèi)存地址指針、選項(xiàng)標(biāo)志位、錯(cuò)誤代碼指針。任務(wù)創(chuàng)建函數(shù)參數(shù)數(shù)量的不同其實(shí)反映了兩種RTOS實(shí)現(xiàn)細(xì)節(jié)的差異。

嵌入式實(shí)時(shí)系統(tǒng)通常運(yùn)行多個(gè)任務(wù),因此存在“調(diào)度”問題,這也是內(nèi)核的主要職責(zé)之一,即決定輪到哪個(gè)任務(wù)運(yùn)行。調(diào)度機(jī)制分為優(yōu)先級(jí)搶占式調(diào)度和時(shí)間片輪轉(zhuǎn)調(diào)度,F(xiàn)reeRTOS與μC/OS-III內(nèi)核調(diào)度都支持這兩種機(jī)制。對(duì)于不同優(yōu)先級(jí)任務(wù)采用優(yōu)先級(jí)搶占式調(diào)度,而對(duì)于相同優(yōu)先級(jí)任務(wù)采用時(shí)間片輪轉(zhuǎn)調(diào)度,并且對(duì)于優(yōu)先級(jí)數(shù)量、相同優(yōu)先級(jí)任務(wù)數(shù)量都不做限制。

1.2 同步與通信

應(yīng)用系統(tǒng)包含若干任務(wù)和ISR,任務(wù)之間、任務(wù)與ISR以及ISR之間必須協(xié)調(diào)配合,為此RTOS提供任務(wù)同步與通信機(jī)制。FreeRTOS和μC/OS-III內(nèi)核提供的同步與通信機(jī)制如表1所示。

表1中“√”表示具有該項(xiàng)機(jī)制,“╳”表示無該項(xiàng)機(jī)制。雖然從表1中可以看出μC/OS-III沒有郵箱功能,但是μC/OS-III內(nèi)核設(shè)計(jì)人員認(rèn)為不需要郵箱,因?yàn)榭梢岳闷渌鼨C(jī)制實(shí)現(xiàn)與郵箱等同的功能。

1.3 時(shí)間管理及軟件定時(shí)器

操作系統(tǒng)都需要一個(gè)系統(tǒng)時(shí)鐘,每個(gè)系統(tǒng)時(shí)鐘周期都會(huì)觸發(fā)內(nèi)核執(zhí)行一些系統(tǒng)調(diào)用。處理器硬件提供系統(tǒng)節(jié)拍定時(shí)器,英文名字為SysTick,內(nèi)核則有ISR完成相應(yīng)操作。此外,內(nèi)核還必須維持相對(duì)時(shí)間和日歷時(shí)間,而這些都屬于內(nèi)核時(shí)間管理的范疇。FreeRTOS和μC/OS-III內(nèi)核都有相應(yīng)函數(shù)實(shí)現(xiàn)獲取當(dāng)前節(jié)拍、設(shè)置節(jié)拍、相對(duì)延時(shí)、絕對(duì)延時(shí)等功能。

處理器都有硬件定時(shí)器,雖然功能強(qiáng)大,但是數(shù)量受限。FreeRTOS和μC/OS-III內(nèi)核提供軟件定時(shí)器,與硬件定時(shí)器或計(jì)數(shù)器沒有關(guān)系。相比于硬件定時(shí)器,軟件定時(shí)器的定時(shí)精度不太高,但是對(duì)于普通的、精度要求不高的周期性處理任務(wù)足夠了。FreeRTOS和μC/OS-III內(nèi)核對(duì)軟件定時(shí)器的絕對(duì)數(shù)量沒有限制,僅僅受限于內(nèi)存大小,因?yàn)檐浖〞r(shí)器需要占用一定的內(nèi)存。

1.4 內(nèi)存管理

應(yīng)用程序可以使用標(biāo)準(zhǔn)C編譯器提供的malloc()和free()函數(shù)分配和釋放動(dòng)態(tài)內(nèi)存,但是在小型嵌入式實(shí)時(shí)系統(tǒng)中使用這兩個(gè)函數(shù)比較危險(xiǎn),最終可能因?yàn)樗槠鵁o法獲得單個(gè)連續(xù)的內(nèi)存區(qū)域。因此,μC/OS-III和FreeRTOS都有替代函數(shù)用于內(nèi)存管理,但是兩者思路和方法又有所不同。

在μC/OS-III中將一片連續(xù)內(nèi)存區(qū)域作為一個(gè)分區(qū),每個(gè)分區(qū)又分成整數(shù)個(gè)相同大小的內(nèi)存塊。一個(gè)應(yīng)用可以有多個(gè)內(nèi)存分區(qū),每個(gè)分區(qū)有不同數(shù)量的內(nèi)存塊,不同分區(qū)的內(nèi)存塊大小可以不同。應(yīng)用程序能夠基于需求獲得不同大小的內(nèi)存塊,但是特定內(nèi)存塊釋放時(shí)必須還回到分配它的分區(qū)。這種內(nèi)存管理方法不會(huì)產(chǎn)生碎片,除非程序運(yùn)行溢出內(nèi)存塊。

而FreeRTOS內(nèi)核設(shè)計(jì)者認(rèn)為:不同嵌入式系統(tǒng)對(duì)于存分配和時(shí)序要求不同,某個(gè)具體的動(dòng)態(tài)內(nèi)存分配方案僅適用于一部分應(yīng)用。因此,F(xiàn)reeRTOS將動(dòng)態(tài)內(nèi)存分配函數(shù)從內(nèi)核代碼庫中移除,使得內(nèi)存管理成為可移植層的一部分,允許應(yīng)用程序編寫者提供特定的動(dòng)態(tài)內(nèi)存管理實(shí)現(xiàn)代碼。此外,F(xiàn)reeRTOS提供了5個(gè)實(shí)現(xiàn)案例,分別對(duì)應(yīng)5個(gè)不同的內(nèi)存分配機(jī)制和算法。

1.5 中斷管理

中斷是硬件機(jī)制,用于通知處理器發(fā)生了異步事件。當(dāng)處理器識(shí)別到中斷,保護(hù)現(xiàn)場(chǎng)并跳轉(zhuǎn)到ISR中執(zhí)行。ISR處理完事件,要么返回原先被中斷的任務(wù)繼續(xù)執(zhí)行,要么執(zhí)行更高優(yōu)先級(jí)的任務(wù)。處理器通過開、關(guān)中斷從而達(dá)到響應(yīng)、忽略中斷的目的。

在實(shí)時(shí)環(huán)境中,內(nèi)核最重要指標(biāo)之一是總的關(guān)中斷時(shí)間。中斷關(guān)閉時(shí)間盡可能短,因?yàn)殛P(guān)中斷可能會(huì)影響中斷響應(yīng)時(shí)間并導(dǎo)致中斷信號(hào)丟失。然而,實(shí)時(shí)系統(tǒng)中進(jìn)入臨界區(qū)必須關(guān)閉中斷。另一個(gè)方面,ISR盡可能短,它的主要作用最好只是發(fā)送信號(hào)或者消息給相應(yīng)任務(wù)去處理具體事務(wù),從而減少中斷處理時(shí)間。此外,某些處理器支持多個(gè)中斷優(yōu)先級(jí)并允許中斷嵌套,還有處理器所有中斷的向量對(duì)應(yīng)唯一的中斷處理程序,有些則每個(gè)中斷向量對(duì)應(yīng)一個(gè)中斷處理程序。

FreeRTOS和μC/OS-III不強(qiáng)加特定的事件處理策略于應(yīng)用設(shè)計(jì),但是提供一組函數(shù)和機(jī)制使應(yīng)用開發(fā)工程師以簡(jiǎn)單和可維護(hù)的方式實(shí)現(xiàn)某種中斷管理策略。μC/OS-III內(nèi)核提供了從ISR向任務(wù)發(fā)送信號(hào)、標(biāo)志、消息的函數(shù),而發(fā)送模式有兩種:直接發(fā)布和延遲發(fā)布。FreeRTOS則提供延遲中斷處理機(jī)制,即ISR僅記錄中斷原因并清除中斷,而大量與中斷相關(guān)的處理則通知相應(yīng)任務(wù)完成,利用系統(tǒng)函數(shù)提高該任務(wù)的優(yōu)先級(jí),從而保證在中斷退出后該任務(wù)最先得到執(zhí)行。

2 版權(quán)及認(rèn)證

2.1 內(nèi)核、中間件版權(quán)

FreeRTOS內(nèi)核是開源軟件,內(nèi)核采用GPL授權(quán)方式,并做了修改給出一個(gè)例外條件[8]:“即這些獨(dú)立模塊如果使用的是FreeRTOS API與FreeRTOS進(jìn)行通信,并且這些獨(dú)立模塊不涉及內(nèi)核和內(nèi)核調(diào)度,也沒有對(duì)任務(wù)、任務(wù)通信和信號(hào)量等內(nèi)核功能作出改動(dòng),這些模塊可以不按照GPL方式公開源代碼?!盕reeRTOS還開發(fā)了附在內(nèi)核上的中間件FreeRTOS+TCP和FreeRTOS+FAT,這些同樣是開源軟件。而其他第三方公司開發(fā)的中間件,其授權(quán)不在FreeRTOS內(nèi)核授權(quán)范圍,授權(quán)方式由軟件開發(fā)方確定。

μC/OS系列RTOS內(nèi)核是商用軟件產(chǎn)品,Micrium公司對(duì)其擁有知識(shí)產(chǎn)權(quán)。這些產(chǎn)品以源代碼方式提供給客戶,具有極大的適用性。但是,該產(chǎn)品不是免費(fèi)軟件,也不是開源軟件,因此,不能免費(fèi)使用。Micrium公司還提供μC/OS相關(guān)中間件μC/GUI、μC/FS、μC/TCP-IP、μC/USB、μC/Probe等,這些也是商業(yè)軟件。

2.2 認(rèn)證

FreeRTOS內(nèi)核沒有經(jīng)過認(rèn)證,然而FreeRTOS內(nèi)核衍生出另一個(gè)系統(tǒng)SAFERTOS支持廣泛的國際設(shè)計(jì)安全標(biāo)準(zhǔn),但是SAFERTOS是商用軟件。

μC/OS-III內(nèi)核符合航空電子設(shè)備DO-178B Level E至Level A、工業(yè)控制IEC 61508 SIL 3、醫(yī)藥IEC 62304 Class A到Class C[FDA 510(k)]的認(rèn)證標(biāo)準(zhǔn)。

3 嵌入式實(shí)時(shí)操作系統(tǒng)選型考慮因素

從以上分析來看,μC/OS-III和FreeRTOS作為RTOS內(nèi)核,具備的功能基本相當(dāng)。雖然不盡相同,但是純粹從技術(shù)角度選擇哪一種操作系統(tǒng)并沒有太大差別。因此,行業(yè)因素、自身開發(fā)實(shí)力、可利用資源以及成本等方面成為選型的決定因素。

a)行業(yè)因素

除了通用產(chǎn)品,對(duì)于某些特定的行業(yè)應(yīng)用產(chǎn)品,需要調(diào)查了解這些行業(yè)產(chǎn)品需要遵守哪些標(biāo)準(zhǔn)?需要做哪些認(rèn)證?獲得這些信息后,對(duì)照μC/OS-III和FreeRTOS所獲得認(rèn)證以及遵守的標(biāo)準(zhǔn),然后做出選擇。當(dāng)然,行業(yè)中的主流選擇也應(yīng)該是考慮因素之一。

b)自身開發(fā)實(shí)力

如果自身開發(fā)能力有限,需要技術(shù)支持無疑需要選擇商業(yè)軟件μC/OS-III。而自主開發(fā)能力強(qiáng),同時(shí)希望節(jié)省軟件許可費(fèi)用,可以選擇開源FreeRTOS。開源軟件沒有技術(shù)支持,因此對(duì)自身技術(shù)實(shí)力要求較高。

c)可利用資源

對(duì)于產(chǎn)品開發(fā),盡可能利用現(xiàn)有參考案例的設(shè)計(jì)代碼、操作系統(tǒng)附加組件或者第三方組件,從而能夠壓縮開發(fā)周期,盡早將產(chǎn)品推向市場(chǎng)。因此,開發(fā)具體產(chǎn)品時(shí)優(yōu)選具有更多可利用資源的RTOS。

d)成本

成本包括多個(gè)方面,軟件許可費(fèi)用僅是其中一部分,其他方面還應(yīng)該包括開發(fā)時(shí)間成本、影響產(chǎn)品上市時(shí)間的間接成本。

4 結(jié)束語

FreeRTOS和μC/OS-III是當(dāng)今主流的嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核,從內(nèi)核功能角度對(duì)這兩種操作系統(tǒng)進(jìn)行分析可以看出兩者實(shí)現(xiàn)思想和方式上的異同。因?yàn)镕reeRTOS是開源軟件,而μC/OS-III是商業(yè)軟件,所以兩者的授權(quán)方式不同,μC/OS-III還符合多種行業(yè)認(rèn)證標(biāo)準(zhǔn)。兩個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核雖然有差異,但是選型時(shí)應(yīng)該主要考慮行業(yè)因素、自身開發(fā)實(shí)力、可利用資源以及成本等方面。

【參考文獻(xiàn)】

[1]Abraham Silberschatz,Peter Baer Galvin,Greg Gagne. Operating System Concepts(Seventh Edition)[M].鄭扣根譯.北京: 高等教育出版社,2010.

[2]李志明,檀永,徐石民.STM32嵌入式系統(tǒng)開發(fā)實(shí)戰(zhàn)指南FreeRTOS與LwIP聯(lián)合移植[M].北京:機(jī)械工業(yè)出版社,2013.

[3]劉俞,劉恒,章懿雯.嵌入式實(shí)時(shí)操作系統(tǒng)中優(yōu)先級(jí)反轉(zhuǎn)問題的研究[J].齊齊哈爾大學(xué)學(xué)報(bào)(自然科學(xué)版),2017,33(1):5-8.

[4]2017 Embedded Markets Study Integrating IoT and Advanced Technology Designs,Application Development & Processing Environments[EB/OL].www.embedded.com.

[5]Mastering the FreeRTOS Real Time Kernel[EB/OL].www.freertos.com.

[6]μC/OS-III The Real-Time Kernel Users Manual[EB/OL].www.micrium.com.

[7]Raj Kamal.嵌入式系統(tǒng)體系結(jié)構(gòu)、編程與設(shè)計(jì)(第3版)[M].郭俊鳳譯.北京:清華大學(xué)出版社,2017.

[8]何小慶.談?wù)凢reeRTOS及其授權(quán)方式[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015,10:3-4.