學(xué)號(hào):17020150042
姓名:宗澤民
原文鏈接:https://blog.csdn.net/DP29syM41zyGndVF/article/details/79017424
【嵌牛導(dǎo)讀】STM32的五大嵌入式操作系統(tǒng)
【嵌牛鼻子】STM32
【嵌牛正文】
????基于STM平臺(tái)且滿足實(shí)時(shí)控制要求操作系統(tǒng)赏僧,有以下5種可供移植選擇。分別為μClinux耸棒、μC/OS-II、eCos恩脂、FreeRTOS和rt-thread龄砰。下面分別介紹這五種嵌入式操作系統(tǒng)的特點(diǎn)及不足,通過(guò)對(duì)比担巩,可以根據(jù)自己的應(yīng)用需求選擇合適的平臺(tái)方援。
TOP1:μClinux
????μClinux是一種優(yōu)秀的嵌入式Linux版本,其全稱(chēng)為micro-control Linux涛癌,從字面意思看是指微控制Linux犯戏。同標(biāo)準(zhǔn)的Linux相比窥浪,μClinux的內(nèi)核非常小,但是它仍然繼承了Linux操作系統(tǒng)的主要特性笛丙,包括良好的穩(wěn)定性和移植性漾脂、強(qiáng)大的網(wǎng)絡(luò)功能、出色的文件系統(tǒng)支持胚鸯、標(biāo)準(zhǔn)豐富的API骨稿,以及TCP/IP網(wǎng)絡(luò)協(xié)議等。因?yàn)闆](méi)有MMU內(nèi)存管理單元姜钳,所以其多任務(wù)的實(shí)現(xiàn)需要一定技巧坦冠。
????μClinux在結(jié)構(gòu)上繼承了標(biāo)準(zhǔn)Linux的多任務(wù)實(shí)現(xiàn)方式,分為實(shí)時(shí)進(jìn)程和普通進(jìn)程哥桥,分別采用先來(lái)先服務(wù)和時(shí)間片輪轉(zhuǎn)調(diào)度辙浑,僅針對(duì)中低檔嵌入式CPU特點(diǎn)進(jìn)行改良,且不支持內(nèi)核搶占拟糕,實(shí)時(shí)性一般判呕。
????在內(nèi)存管理上由于μClinux是針對(duì)沒(méi)有MMU的處理器設(shè)計(jì)的,不能使用處理器的虛擬內(nèi)存管理技術(shù)送滞,只能采用實(shí)存儲(chǔ)器管理策略侠草。系統(tǒng)使用分頁(yè)內(nèi)存分配方式,在啟動(dòng)時(shí)對(duì)實(shí)際存儲(chǔ)器進(jìn)行分頁(yè)犁嗅。系統(tǒng)對(duì)內(nèi)存的訪問(wèn)是直接的边涕,操作系統(tǒng)對(duì)內(nèi)存空間沒(méi)有保護(hù),多個(gè)進(jìn)程可共享一個(gè)運(yùn)行空間褂微,所以功蜓,即使是一個(gè)無(wú)特權(quán)進(jìn)程調(diào)用一個(gè)無(wú)效指針也會(huì)觸發(fā)一個(gè)地址錯(cuò)誤,并有可能引起程序崩潰甚至系統(tǒng)崩潰宠蚂。
????μClinux操作系統(tǒng)的中斷管理是將中斷處理分為兩部分:頂半處理和底半處理式撼。在頂半處理中,必須關(guān)中斷運(yùn)行肥矢,且僅進(jìn)行必要的端衰、非常少、速度快的處理甘改,其他處理交給底半處理;底半處理執(zhí)行那些復(fù)雜旅东、耗時(shí)的處理,而且接受中斷十艾。因?yàn)橄到y(tǒng)中存在有許多中斷的底半處理抵代,所以會(huì)引起系統(tǒng)中斷處理的延時(shí)。
????μClinux對(duì)文件系統(tǒng)支持良好忘嫉,由于μClinux繼承了Linux完善的文件系統(tǒng)性能荤牍,它支持ROMFS案腺、NFS、ext2康吵、MS-DOS劈榨、JFFS等文件系統(tǒng)。但一般采用ROMFS文件系統(tǒng)晦嵌,這種文件系統(tǒng)相對(duì)于一般的文件系統(tǒng)(如ext2)占用更少的空間同辣。但是ROMFS文件系統(tǒng)不支持動(dòng)態(tài)擦寫(xiě)保存,對(duì)于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)須采用虛擬RAM盤(pán)/JFFS的方法進(jìn)行處理惭载。
????在對(duì)硬件的支持上旱函,由于μClinux繼承了Linux的大部分性能,所以至少需要512KB的RAM空間描滔,lMB的ROM/Flash空間棒妨。
????在μClinux的移植方面,μClinux是Linux針對(duì)嵌入式系統(tǒng)的一種改良含长,其結(jié)構(gòu)比較復(fù)雜券腔。移植μClinux,目標(biāo)處理器除了需要修改與處理器相關(guān)的代碼外茎芋,還需要足夠容量的外部ROM和RAM颅眶。
? ??點(diǎn)評(píng):μClinux最大特點(diǎn)在于針對(duì)無(wú)MMU處理器設(shè)計(jì),這對(duì)于沒(méi)有MMU功能的stm32f103來(lái)說(shuō)是合適的田弥,但移植此系統(tǒng)需要至少512KB的RAM空間,1MB的ROM/FLASH空間铡原,而stmf103擁有256K的FLASH偷厦,需要外接存儲(chǔ)器,這就增加了硬件設(shè)計(jì)的成本燕刻。μClinux結(jié)構(gòu)復(fù)雜只泼,移植相對(duì)困難,內(nèi)核也較大卵洗,其實(shí)時(shí)性也差一些请唱,若開(kāi)發(fā)的嵌入式產(chǎn)品注重文件系統(tǒng)和與網(wǎng)絡(luò)應(yīng)用則μClinux是一個(gè)不錯(cuò)的選擇。
TOP2:μC/OS-II
????μC/OS-II是在μC/OS的基礎(chǔ)上發(fā)展起來(lái)的过蹂,是用C語(yǔ)言編寫(xiě)的一個(gè)結(jié)構(gòu)小巧十绑、搶占式的多任務(wù)實(shí)時(shí)內(nèi)核。? ?μC/OS-II能管理64個(gè)任務(wù)酷勺,并提供任務(wù)調(diào)度與管理本橙、內(nèi)存管理、任務(wù)間同步與通信脆诉、時(shí)間管理和中斷服務(wù)等功能甚亭,具有執(zhí)行效率高贷币、占用空間小、實(shí)時(shí)性能優(yōu)良和擴(kuò)展性強(qiáng)等特點(diǎn)亏狰。
????對(duì)于實(shí)時(shí)性的滿足上役纹,由于μC/OS-II內(nèi)核是針對(duì)實(shí)時(shí)系統(tǒng)的要求設(shè)計(jì)實(shí)現(xiàn)的,所以只支持基于固定優(yōu)先級(jí)搶占式調(diào)度;調(diào)度方法簡(jiǎn)單暇唾,可以滿足較高的實(shí)時(shí)性要求促脉。
????在內(nèi)存管理上,μC/OS-II把連續(xù)的大塊內(nèi)存按分區(qū)來(lái)管理信不,每個(gè)分區(qū)中都包含整數(shù)個(gè)大小相同的內(nèi)存塊嘲叔,但不同分區(qū)之間內(nèi)存的大小可以不同。用戶(hù)動(dòng)態(tài)分配內(nèi)存時(shí)抽活,只須選擇一個(gè)適當(dāng)?shù)姆謪^(qū)硫戈,按塊來(lái)分配內(nèi)存,釋放時(shí)將該塊放回到以前所屬的分區(qū)下硕,這樣就消除了因多次動(dòng)態(tài)分配和釋放內(nèi)存所引起的碎片問(wèn)題丁逝。
????μC/OS-II中斷處理比較簡(jiǎn)單。一個(gè)中斷向量上只能掛一個(gè)中斷服務(wù)子程序ISR梭姓,而且用戶(hù)代碼必須都在ISR(中斷服務(wù)程序)中完成霜幼。ISR需要做的事情越多,中斷延時(shí)也就越長(zhǎng),內(nèi)核所能支持的最大嵌套深度為255誉尖。
????在文件系統(tǒng)的支持方面罪既,由于μC/OS-II是面向中小型嵌入式系統(tǒng)的,即使包含全部功能铡恕,編譯后內(nèi)核也不到10 KB琢感,所以系統(tǒng)本身并沒(méi)有提供對(duì)文件系統(tǒng)的支持。但是μC/OS-II具有良好的擴(kuò)展性能探熔,如果需要也可自行加入文件系統(tǒng)的內(nèi)容驹针。
????在對(duì)硬件的支持上,μC/OS-II能夠支持當(dāng)前流行的大部分CPU诀艰,μC/OS-II由于本身內(nèi)核就很小柬甥,經(jīng)過(guò)剪裁后的代碼最小可以為2KB,所需的最小數(shù)據(jù)RAM空間為4 KB其垄,μC/OS-II的移植相對(duì)比較簡(jiǎn)單苛蒲,只需要修改與處理器相關(guān)的代碼就可以。
? ??點(diǎn)評(píng):μC/OS-II是一個(gè)結(jié)構(gòu)簡(jiǎn)單捉捅、功能完備和實(shí)時(shí)性很強(qiáng)的嵌入式操作系統(tǒng)內(nèi)核撤防,針對(duì)于沒(méi)有MMU功能的CPU,它是非常合適的。它需要很少的內(nèi)核代碼空間和數(shù)據(jù)存儲(chǔ)空間寄月,擁有良好的實(shí)時(shí)性辜膝,良好的可擴(kuò)展性能,并且是開(kāi)源的漾肮,網(wǎng)上擁有很多的資料和實(shí)例厂抖,所以很適合向stm32f103這款CPU上移植。
TOP3:eCos??
????eCos(embedded Configurable operating system)克懊,即嵌入式可配置操作系統(tǒng)忱辅。它是一個(gè)源代碼開(kāi)放的可配置、可移植谭溉、面向深度嵌入式應(yīng)用的實(shí)時(shí)操作系統(tǒng)墙懂。最大特點(diǎn)是配置靈活,采用模塊化設(shè)計(jì)扮念,核心部分由小同的組件構(gòu)成损搬,包括內(nèi)核、C語(yǔ)言庫(kù)和底層運(yùn)行包等柜与。每個(gè)組件可提供大量的配置選項(xiàng)(實(shí)時(shí)內(nèi)核也可作為可選配置)巧勤,使用eCos提供的配置工具可以很方便地配置,并通過(guò)不同的配置使得eCos能夠滿足不同的嵌入式應(yīng)用要求弄匕。
????在實(shí)時(shí)性反面颅悉,由于eCos調(diào)度方法豐富,提供了兩種基于優(yōu)先級(jí)的調(diào)度器(即位圖調(diào)度器和多級(jí)隊(duì)列調(diào)度器)迁匠,允許用戶(hù)在進(jìn)行配置時(shí)選擇其中一個(gè)調(diào)度器剩瓶,適應(yīng)性好。因此在實(shí)時(shí)性方面表現(xiàn)良好城丧。
????在內(nèi)存管理上eCos對(duì)內(nèi)存分配既不分段也不分頁(yè)儒搭,而是采用一種基于內(nèi)存池的動(dòng)態(tài)內(nèi)存分配機(jī)制。通過(guò)兩種內(nèi)存池來(lái)實(shí)現(xiàn)兩種內(nèi)存管理方法:一種是變長(zhǎng)的內(nèi)存池;另一種是定長(zhǎng)的內(nèi)存池芙贫,類(lèi)似于VxWorks的管理方案。
????在中斷管理上eCos使用了分層式中斷處理機(jī)制傍药,把中斷處理分為傳統(tǒng)的ISR(中斷服務(wù)程序)和滯后中斷服務(wù)程序DSR(遞延服務(wù)程序)磺平。類(lèi)似于μClinux的處理機(jī)制,這種機(jī)制可以在中斷允許時(shí)運(yùn)行DSR拐辽,因此在處理較低優(yōu)先級(jí)中斷時(shí)允許高優(yōu)先級(jí)的中斷和處理拣挪。為了極大地縮短中斷延時(shí),ISR應(yīng)當(dāng)可以快速運(yùn)行俱诸。如果中斷引起的服務(wù)量少菠劝,則ISR可以單獨(dú)處理中斷;如果中斷服務(wù)復(fù)雜,則ISR只屏蔽中斷源睁搭,然后交由DSR(遞延服務(wù)程序)處理赶诊。
????eCos操作系統(tǒng)的可配置性非常強(qiáng)大笼平,用戶(hù)可以自己加入所需的文件系統(tǒng)。eCos操作系統(tǒng)同樣支持當(dāng)前流行的大部分嵌入式CPU舔痪,eCos操作系統(tǒng)可以在16位寓调、32位和64位等不同體系結(jié)構(gòu)之間移植。eCos由于本身內(nèi)核就很小锄码,經(jīng)過(guò)裁剪后的代碼最小可以為10 KB夺英,所需的最小數(shù)據(jù)RAM空間為10 KB。
????在系統(tǒng)移植方面 eCos操作系統(tǒng)的可移植性很好滋捶,要比μC/OS-II和μClinux容易痛悯。
? ??點(diǎn)評(píng):eCos最大特點(diǎn)是配置靈活,并且支持無(wú)MMU的CPU的移植重窟,開(kāi)源且具有很好的移植性载萌,也比較合適于移植到STM32平臺(tái)的CPU上。但eCOS的應(yīng)用還不是太廣泛亲族,還沒(méi)有像μC/OS-II那樣普遍炒考,并且資料也沒(méi)有μC/OS-II多。eCos適合用于一些商業(yè)級(jí)或工業(yè)級(jí)對(duì)成本敏感的嵌入式系統(tǒng),例如消費(fèi)電子領(lǐng)域中的一些應(yīng)用霎迫。
TOP4:FreeRTOS
????由于RTOS需占用一定的系統(tǒng)資源(尤其是RAM資源)斋枢,只有μC/OS-II、embOS知给、salvo瓤帚、FreeRTOS等少數(shù)實(shí)時(shí)操作系統(tǒng)能在小RAM單片機(jī)上運(yùn)行。相對(duì)于C/OS-II涩赢、 embOS等商業(yè)操作系統(tǒng)戈次,F(xiàn)reeRTOS操作系統(tǒng)是完全免費(fèi)的操作系統(tǒng),具有源碼公開(kāi)筒扒、可移植怯邪、可裁減、調(diào)度策略靈活的特點(diǎn)花墩,可以方便地移植到各種單片機(jī)上運(yùn)行悬秉,其最新版本為6.0版。
????作為一個(gè)輕量級(jí)的操作系統(tǒng)冰蘑,F(xiàn)reeRTOS提供的功能包括:任務(wù)管理和泌、時(shí)間管理、信號(hào)量祠肥、消息隊(duì)列武氓、內(nèi)存管理、記錄功能等,可基本滿足較小系統(tǒng)的需要县恕。 FreeRTOS內(nèi)核支持優(yōu)先級(jí)調(diào)度算法东羹,每個(gè)任務(wù)可根據(jù)重要程度的不同被賦予一定的優(yōu)先級(jí),CPU總是讓處于就緒態(tài)的弱睦、優(yōu)先級(jí)最高的任務(wù)先運(yùn)行百姓。 FreeRT0S內(nèi)核同時(shí)支持輪換調(diào)度算法,系統(tǒng)允許不同的任務(wù)使用相同的優(yōu)先級(jí)况木,在沒(méi)有更高優(yōu)先級(jí)任務(wù)就緒的情況下垒拢,同一優(yōu)先級(jí)的任務(wù)共享CPU的使用 時(shí)間。
????FreeRTOS的內(nèi)核可根據(jù)用戶(hù)需要設(shè)置為可剝奪型內(nèi)核或不可剝奪型內(nèi)核火惊。當(dāng) FreeRTOS被設(shè)置為可剝奪型內(nèi)核時(shí)求类,處于就緒態(tài)的高優(yōu)先級(jí)任務(wù)能剝奪低優(yōu)先級(jí)任務(wù)的CPU使用權(quán),這樣可保證系統(tǒng)滿足實(shí)時(shí)性的要求;當(dāng) FreeRTOS被設(shè)置為不可剝奪型內(nèi)核時(shí)屹耐,處于就緒態(tài)的高優(yōu)先級(jí)任務(wù)只有等當(dāng)前運(yùn)行任務(wù)主動(dòng)釋放CPU的使用權(quán)后才能獲得運(yùn)行尸疆,這樣可提高CPU的運(yùn)行 效率。
????FreeRTOS的移植:FreeRTOS操作系統(tǒng)可以被方便地移植到不同處理器上工作惶岭,現(xiàn)已提供了ARM寿弱、MSP430、 AVR按灶、PIC症革、C8051F等多款處理器的移植。FrceRTOS在不同處理器上的移植類(lèi)似于μC/0S一II鸯旁,故本文不再詳述FreeRTOS的移 植噪矛。此外,TCP/IP協(xié)議棧μIP已被移植到FreeRTOS上铺罢,具體代碼可見(jiàn)FreeRTOS網(wǎng)站艇挨。
? ??點(diǎn)評(píng):相對(duì)于常見(jiàn)的μC/OS—II操作系統(tǒng),F(xiàn)reeRTOS操作系統(tǒng)既有優(yōu)點(diǎn)也存在不足韭赘。其不足之處缩滨, 一方面體現(xiàn)在系統(tǒng)的服務(wù)功能上,如FreeRTOS只提供了消息隊(duì)列和信號(hào)量的實(shí)現(xiàn)泉瞻,無(wú)法以后進(jìn)先出的順序向消息隊(duì)列發(fā)送消息;另一方 面楷怒,F(xiàn)reeRTOS只是一個(gè)操作系統(tǒng)內(nèi)核,需外擴(kuò)第三方的GUI(圖形用戶(hù)界面)瓦灶、TCP/IP協(xié)議棧、FS(文件系統(tǒng))等才能實(shí)現(xiàn)一個(gè)較復(fù)雜的系統(tǒng)抱完, 不像μC/OS-II可以和μC/GUI贼陶、μC/FS、μC/TCP-IP等無(wú)縫結(jié)合。
TOP5:RT-Thread
????RT-Thread 是一款主要由中國(guó)開(kāi)源社區(qū)主導(dǎo)開(kāi)發(fā)的開(kāi)源實(shí)時(shí)操作系統(tǒng)(許可證GPLv2)碉怔。實(shí)時(shí)線程操作系統(tǒng)不僅僅是一個(gè)單一的實(shí)時(shí)操作系統(tǒng)內(nèi)核烘贴,它也是一個(gè)完整的應(yīng)用系統(tǒng),包含了實(shí)時(shí)撮胧、嵌入式系統(tǒng)相關(guān)的各個(gè)組件:TCP/IP協(xié)議棧桨踪,文件系統(tǒng),libc接口芹啥,圖形用戶(hù)界面等锻离。
????中國(guó)人自己開(kāi)發(fā)的,穩(wěn)定版本是 1.2.1墓怀,有希望看完源碼汽纠。精簡(jiǎn)、靠譜傀履,自帶一個(gè)叫做 finsh 的片上調(diào)試工具虱朵,非常實(shí)用。各種信號(hào)量钓账、互斥鎖碴犬、郵箱、事件等線程協(xié)同功能都有梆暮。
????需要注意的是服协,rt-thread 2.0 版本的設(shè)計(jì)思想和 1.2 的完全不同胸懈,將會(huì)把 linux 納入進(jìn)來(lái)雅宾,是的,不是在 linux 里面嵌入 rt-thread推捐,而是把 linux 嵌入到 rt-thread 里面!
? ??點(diǎn)評(píng):rt-thread 的文檔呢卖陵,官網(wǎng)是有的遭顶,不過(guò),真的是只能作為參考泪蔫,很明顯是開(kāi)發(fā)人員的事后開(kāi)發(fā)筆記整理的棒旗。目前還是只能通過(guò)看代碼來(lái)理解詳細(xì)的使用方式,從文檔和論壇的只言片語(yǔ)里面撩荣,是難以還原真相的铣揉。rt-thread 的好處就是它的版本還比較小,即便缺乏文檔餐曹,也是可以看源碼看下去的逛拱。