嵌入式操作系統(tǒng)這么多,該如何選擇?各有啥特點(diǎn)馋艺。本博客主要來(lái)介紹一下這些操作系統(tǒng)。
1. FreeRTOS
??FreeRTOS是專(zhuān)為小型嵌入式系統(tǒng)設(shè)計(jì)的可擴(kuò)展的實(shí)時(shí)內(nèi)核迈套。
亮點(diǎn)包括:
——微小的封裝形式捐祠。
——免費(fèi)的RTOS調(diào)度程序
——免費(fèi)嵌入式軟件源代碼。
——免版稅桑李。
——搶占式踱蛀,協(xié)作式和混合配置選項(xiàng)窿给,可選時(shí)間分片。
——SafeRTOS衍生產(chǎn)品對(duì)代碼完整性提供了高度的信心率拒。
——包括一個(gè)為低功耗應(yīng)用設(shè)計(jì)的tickless模式崩泡。
——可以使用動(dòng)態(tài)或靜態(tài)分配的RAM來(lái)創(chuàng)建RTOS對(duì)象(任務(wù),隊(duì)列猬膨,信號(hào)量角撞,軟件定時(shí)器,互斥體和事件組)勃痴。
——官方支持>30個(gè)嵌入式系統(tǒng)架構(gòu)(以ARM7和ARM Cortex-M3為一體架構(gòu))谒所。
——FreeRTOS-MPU支持ARM Cortex-M3內(nèi)存保護(hù)單元(MPU)。
——設(shè)計(jì)小巧沛申,簡(jiǎn)單易用劣领。通常,RTOS內(nèi)核二進(jìn)制映像將在4K到9K字節(jié)的區(qū)域內(nèi)铁材。
——可移植性非常好的源代碼結(jié)構(gòu)尖淘,主要用C.
——支持實(shí)時(shí)任務(wù)和協(xié)同程序。
——直接到任務(wù)通知衫贬,隊(duì)列德澈,二進(jìn)制信號(hào)量,計(jì)數(shù)信號(hào)量固惯,遞歸信號(hào)量和互斥體梆造,用于任務(wù)之間的通信和同步,或?qū)崟r(shí)任務(wù)和中斷之間葬毫。
——?jiǎng)?chuàng)新事件組(或事件標(biāo)志)實(shí)施镇辉。
——具有優(yōu)先級(jí)繼承的互斥體。
——高效的軟件定時(shí)器贴捡。
——強(qiáng)大的執(zhí)行跟蹤功能忽肛。
——堆棧溢出檢測(cè)選項(xiàng)。
——免費(fèi)監(jiān)控的論壇支持或可選的商業(yè)支持和許可烂斋。
——對(duì)可創(chuàng)建的實(shí)時(shí)任務(wù)數(shù)量沒(méi)有軟件限制屹逛。
——對(duì)可以使用的任務(wù)優(yōu)先級(jí)的數(shù)量沒(méi)有軟件限制。
——對(duì)任務(wù)優(yōu)先級(jí)分配沒(méi)有限制 - 可以為多個(gè)實(shí)時(shí)任務(wù)分配相同的優(yōu)先級(jí)汛骂。
——許多支持的架構(gòu)的免費(fèi)開(kāi)發(fā)工具罕模。
——從標(biāo)準(zhǔn)的Windows主機(jī)開(kāi)發(fā)。
2. uCOS家族(I/II/III)
??μC/ OS-II和μC/ OS-III是搶占式帘瞭,高度便攜式和可擴(kuò)展的實(shí)時(shí)內(nèi)核淑掌。這些內(nèi)核旨在便于在大量CPU架構(gòu)上使用,這些內(nèi)核是μC/ OS實(shí)時(shí)操作系統(tǒng)的關(guān)鍵組件蝶念。
關(guān)鍵價(jià)值(Key Values):
——可移植性抛腕。 提供前所未有的易用性芋绸,μC/OS內(nèi)核提供完整的源代碼和深入的文檔。 μC/ OS內(nèi)核運(yùn)行在大量處理器架構(gòu)上担敌,端口可供下載摔敛。
——可擴(kuò)展性。 μC/ OS內(nèi)核允許無(wú)限制的任務(wù)和內(nèi)核對(duì)象柄错。內(nèi)核的內(nèi)存占用可以縮小舷夺,僅包含應(yīng)用程序所需的功能,通常為6-24 KB的代碼空間和1KB的數(shù)據(jù)空間售貌。
——可靠。 μC/ OS內(nèi)核包括減少開(kāi)發(fā)時(shí)間的調(diào)試功能疫萤。內(nèi)核提供廣泛的范圍檢查颂跨,包括檢查API調(diào)用中傳遞的指針,來(lái)自ISR的任務(wù)級(jí)服務(wù)扯饶,允許范圍內(nèi)的參數(shù)以及有效的指定選項(xiàng)恒削。
——高效。 Micrium的內(nèi)核還包括有價(jià)值的運(yùn)行時(shí)統(tǒng)計(jì)信息尾序,使您的應(yīng)用程序的內(nèi)部可視化钓丰。 識(shí)別性能瓶頸,并在開(kāi)發(fā)周期的早期優(yōu)化電源使用每币。
——μC/ OS內(nèi)核的特性包括以下亮點(diǎn)(Highlights):
——搶占式多任務(wù)實(shí)時(shí)內(nèi)核携丁,可選擇循環(huán)調(diào)度
——提供完整,干凈兰怠,一致的源代碼梦鉴,具有深入的文檔。
——高可擴(kuò)展性:無(wú)限數(shù)量的任務(wù)揭保,優(yōu)先級(jí)和內(nèi)核對(duì)象
——同時(shí)等待多個(gè)內(nèi)核對(duì)象
——直接向任務(wù)發(fā)送信號(hào)/消息
——資源高效:6K至24K字節(jié)代碼空間肥橙,1K +字節(jié)數(shù)據(jù)空間)
——非常低的中斷禁用時(shí)間
——廣泛的性能測(cè)量指標(biāo)(可配置)
——可用于關(guān)注安全型應(yīng)用
——下表顯示了μC/OS 多年來(lái)的演變, 比較了每個(gè)版本中可用的功能。
3. RT-Thread
??RT-Thread是一款來(lái)自中國(guó)的開(kāi)源嵌入式實(shí)時(shí)操作系統(tǒng)秸侣,由國(guó)內(nèi)一些專(zhuān)業(yè)開(kāi)發(fā)人員從2006年開(kāi)始開(kāi)發(fā)存筏、維護(hù),除了類(lèi)似FreeRTOS和UCOS的實(shí)時(shí)操作系統(tǒng)內(nèi)核外味榛,也包括一系列應(yīng)用組件和驅(qū)動(dòng)框架椭坚,如TCP/IP協(xié)議棧,虛擬文件系統(tǒng)励负,POSIX接口藕溅,圖形用戶(hù)界面,F(xiàn)reeModbus主從協(xié)議棧继榆,CAN框架巾表,動(dòng)態(tài)模塊等汁掠,因?yàn)橄到y(tǒng)穩(wěn)定,功能豐富的特性被廣泛用于新能源集币,電網(wǎng)考阱,風(fēng)機(jī)等高可靠性行業(yè)和設(shè)備上,已經(jīng)被驗(yàn)證是一款高可靠的實(shí)時(shí)操作系統(tǒng)鞠苟。
??RT-Thread實(shí)時(shí)操作系統(tǒng)遵循GPLv2+許可證乞榨,實(shí)時(shí)操作系統(tǒng)內(nèi)核及所有開(kāi)源組件可以免費(fèi)在商業(yè)產(chǎn)品中使用,不需要公布應(yīng)用源碼当娱,沒(méi)有任何潛在商業(yè)風(fēng)險(xiǎn)吃既。
??RT-Thread實(shí)時(shí)操作系統(tǒng)核心是一個(gè)高效的硬實(shí)時(shí)核心,它具備非常優(yōu)異的實(shí)時(shí)性跨细、穩(wěn)定性鹦倚、可剪裁性,當(dāng)進(jìn)行最小配置時(shí)冀惭,內(nèi)核體積可以到 3k ROM 占用震叙、1k RAM 占用。
任務(wù)/線(xiàn)程調(diào)度
??在RT-Thread中線(xiàn)程是最小的調(diào)度單位散休,線(xiàn)程調(diào)度算法是基于優(yōu)先級(jí)的全搶占式多線(xiàn)程調(diào)度算法媒楼,支持256個(gè)線(xiàn)程優(yōu)先級(jí)(也能通過(guò)配置文件更改為最大支持32個(gè)或8個(gè)線(xiàn)程優(yōu)先級(jí)),0優(yōu)先級(jí)代表最高優(yōu)先級(jí)戚丸,255優(yōu)先級(jí)留給空閑線(xiàn)程使用划址;支持創(chuàng)建相同優(yōu)先級(jí)線(xiàn)程,相同優(yōu)先級(jí)的線(xiàn)程采用可設(shè)置時(shí)間片的輪轉(zhuǎn)調(diào)度算法昏滴;調(diào)度器尋找下一個(gè)最高優(yōu)先級(jí)就緒線(xiàn)程的時(shí)間是恒定的(時(shí)間復(fù)雜度是1猴鲫,即O(1))。系統(tǒng)不限制線(xiàn)程數(shù)量的多少谣殊,只和硬件平臺(tái)的具體內(nèi)存相關(guān)拂共。
任務(wù)同步機(jī)制
??系統(tǒng)支持semaphore(信號(hào)量)、mutex(互斥鎖)作為線(xiàn)程間同步機(jī)制姻几。mutex采用優(yōu)先級(jí)繼存方式以解決優(yōu)先級(jí)翻轉(zhuǎn)問(wèn)題宜狐。semaphore的釋放動(dòng)作可安全用于中斷服務(wù)例程中。同步機(jī)制支持線(xiàn)程按優(yōu)先級(jí)等待或按先進(jìn)先出方式獲取信號(hào)量或互斥鎖蛇捌。
任務(wù)間通信機(jī)制
??系統(tǒng)支持event(事件)抚恒、mbox(郵箱)和MessageQueue(消息隊(duì)列)等通信機(jī)制。event支持多事件”或觸發(fā)”及”與觸發(fā)”络拌,適合于線(xiàn)程等待多個(gè)事件情況俭驮。mbox中一封郵件的長(zhǎng)度固定為4字節(jié),效率較MessageQueue更為高效。通信設(shè)施中的發(fā)送動(dòng)作可安全用于中斷服務(wù)例程中混萝。通信機(jī)制支持線(xiàn)程按優(yōu)先級(jí)等待或按先進(jìn)先出方式獲取遗遵。
時(shí)間管理
??系統(tǒng)使用時(shí)鐘節(jié)拍來(lái)完成同優(yōu)先級(jí)任務(wù)的時(shí)間片輪轉(zhuǎn)調(diào)度;線(xiàn)程對(duì)內(nèi)核對(duì)象的時(shí)間敏感性是通過(guò)系統(tǒng)定時(shí)器來(lái)實(shí)現(xiàn)的逸嘀;定時(shí)器支持軟定時(shí)器及硬定時(shí)器(軟定時(shí)器的處理在系統(tǒng)線(xiàn)程的上下文中车要,硬定時(shí)器的處理在中斷的上下文中);定時(shí)器支持一次性超時(shí)及周期性超時(shí)崭倘。
內(nèi)存管理
??系統(tǒng)支持靜態(tài)內(nèi)存池管理及動(dòng)態(tài)內(nèi)存堆管理翼岁。從靜態(tài)內(nèi)存池中獲取內(nèi)存塊時(shí)間恒定,當(dāng)內(nèi)存池為空時(shí)司光,可把申請(qǐng)內(nèi)存塊的線(xiàn)程阻塞(或立刻返回琅坡,或等待一段時(shí)間后仍未獲得內(nèi)存塊返回。這取決于內(nèi)存塊申請(qǐng)時(shí)設(shè)置的等待時(shí)間)飘庄,當(dāng)其他線(xiàn)程釋內(nèi)存塊到內(nèi)存池時(shí)脑蠕,將把相應(yīng)阻塞線(xiàn)程喚醒。動(dòng)態(tài)堆內(nèi)存管理對(duì)于不同的系統(tǒng)資源情況跪削,提供了面向小內(nèi)存系統(tǒng)的小內(nèi)存管理算法及大內(nèi)存系統(tǒng)的SLAB內(nèi)存管理算法。
設(shè)備管理
??系統(tǒng)實(shí)現(xiàn)了按名稱(chēng)訪(fǎng)問(wèn)的設(shè)備管理子系統(tǒng)迂求,可按照統(tǒng)一的API界面訪(fǎng)問(wèn)硬件設(shè)備碾盐。在設(shè)備驅(qū)動(dòng)接口上,根據(jù)嵌入式系統(tǒng)的特點(diǎn)揩局,對(duì)不同的設(shè)備可以?huà)旖酉鄳?yīng)的事件毫玖,當(dāng)設(shè)備事件觸發(fā)時(shí),通知給上層的應(yīng)用程序凌盯。
RT-Thread這個(gè)系統(tǒng)還是有很多自己的想法在里面的付枫,比如Finish,設(shè)備樹(shù)等都是參照Linux的思想來(lái)設(shè)計(jì)的。
freeRTOS比uCOS II優(yōu)勝的地方:
1驰怎。內(nèi)核ROM和耗費(fèi)RAM都比uCOS 小阐滩,特別是RAM。 這在單片機(jī)里面是稀缺資源县忌,uCOS至少要5K以上掂榔, 而freeOS用2~3K也可以跑的很好。
2症杏。freeRTOS 可以用協(xié)程(Co-routine)装获,減少RAM消耗(共用STACK)。uCOS只能用任務(wù)(TASK厉颤,每個(gè)任務(wù)有一個(gè)獨(dú)立的STACK)穴豫。
3。freeRTOS 可以有優(yōu)先度一樣的任務(wù)逼友,這些任務(wù)是按時(shí)間片來(lái)輪流處理精肃,uCOSII 每個(gè)任務(wù)都只有一個(gè)獨(dú)一無(wú)二的優(yōu)先級(jí)秤涩。因此,理論上講肋杖,freeRTOS 可以管理超過(guò)64個(gè)任務(wù)溉仑,而uCOS只能管理64個(gè)。(ucos iii已經(jīng)對(duì)此作了優(yōu)化和擴(kuò)展)
4状植。freeRTOS 是在商業(yè)上免費(fèi)應(yīng)用浊竟。uCOS在商業(yè)上的應(yīng)用是要付錢(qián)的。
freeRTOS 不如uCOS的地方:
1津畸。比uCOS簡(jiǎn)單振定,任務(wù)間通訊freeRTOS只支持Queque, Semaphores肉拓, Mutex后频。 uCOS除這些外,還支持Flag, MailBox.
2暖途。uCOS的支持比f(wàn)reeRTOS 多卑惜。除操作系統(tǒng)外,freeRTOS只支持TCPIP驻售, uCOS則有大量外延支持露久,比如FS, USB欺栗, GUI毫痕, CAN等的支持
3。uCOS可靠性更高迟几,而且耐優(yōu)化消请,freeRTOS 在我設(shè)置成中等優(yōu)化的時(shí)候,就會(huì)出問(wèn)題类腮。