1. 程式人生 > >學習STM32必須瞭解的五大嵌入式作業系統

學習STM32必須瞭解的五大嵌入式作業系統

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

好訊息:新年大促!《微控制器與嵌入式系統應用》2017全年電子刊合集僅售29.9!歡迎大家進入嵌粉商城購買~ 

基於STM平臺且滿足實時控制要求作業系統,有以下5種可供移植選擇。分別為μClinux、μC/OS-II、eCos、FreeRTOS和rt-thread。下面分別介紹這五種嵌入式作業系統的特點及不足,通過對比,讀者可以根據自己的應用需求選擇合適的平臺。

TOP1:μClinux

μClinux是一種優秀的嵌入式Linux版本,其全稱為micro-control Linux,從字面意思看是指微控制Linux。同標準的Linux相比,μClinux的核心非常小,但是它仍然繼承了Linux作業系統的主要特性,包括良好的穩定性和移植性、強大的網路功能、出色的檔案系統支援、標準豐富的API,以及TCP/IP網路協議等。因為沒有MMU記憶體管理單元,所以其多工的實現需要一定技巧。

μClinux在結構上繼承了標準Linux的多工實現方式,分為實時程序和普通程序,分別採用先來先服務和時間片輪轉排程,僅針對中低檔嵌入式CPU特點進行改良,且不支援核心搶佔,實時性一般。

在記憶體管理上由於μClinux是針對沒有MMU的處理器設計的,不能使用處理器的虛擬記憶體管理技術,只能採用實儲存器管理策略。系統使用分頁記憶體分配方式,在啟動時對實際儲存器進行分頁。系統對記憶體的訪問是直接的,作業系統對記憶體空間沒有保護,多個程序可共享一個執行空間,所以,即使是一個無特權程序呼叫一個無效指標也會觸發一個地址錯誤,並有可能引起程式崩潰甚至系統崩潰。

μClinux作業系統的中斷管理是將中斷處理分為兩部分:頂半處理和底半處理。在頂半處理中,必須關中斷執行,且僅進行必要的、非常少、速度快的處理,其他處理交給底半處理;底半處理執行那些複雜、耗時的處理,而且接受中斷。因為系統中存在有許多中斷的底半處理,所以會引起系統中斷處理的延時。

μClinux對檔案系統支援良好,由於μClinux繼承了Linux完善的檔案系統性能,它支援ROMFS、NFS、ext2、MS-DOS、JFFS等檔案系統。但一般採用ROMFS檔案系統,這種檔案系統相對於一般的檔案系統(如ext2)佔用更少的空間。但是ROMFS檔案系統不支援動態擦寫儲存,對於系統需要動態儲存的資料須採用虛擬RAM盤/JFFS的方法進行處理。

在對硬體的支援上,由於μClinux繼承了Linux的大部分效能,所以至少需要512KB的RAM空間,lMB的ROM/Flash空間。

在μClinux的移植方面,μClinux是Linux針對嵌入式系統的一種改良,其結構比較複雜。移植μClinux,目標處理器除了需要修改與處理器相關的程式碼外,還需要足夠容量的外部ROM和RAM。

點評μClinux最大特點在於針對無MMU處理器設計,這對於沒有MMU功能的stm32f103來說是合適的,但移植此係統需要至少512KB的RAM空間,1MB的ROM/FLASH空間,而stmf103擁有256K的FLASH,需要外接儲存器,這就增加了硬體設計的成本。μClinux結構複雜,移植相對困難,核心也較大,其實時性也差一些,若開發的嵌入式產品注重檔案系統和與網路應用則μClinux是一個不錯的選擇。

TOP2:μC/OS-II

μC/OS-II是在μC/OS的基礎上發展起來的,是用C語言編寫的一個結構小巧、搶佔式的多工實時核心。μC/OS-II能管理64個任務,並提供任務排程與管理、記憶體管理、任務間同步與通訊、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時效能優良和擴充套件性強等特點。

對於實時性的滿足上,由於μC/OS-II核心是針對實時系統的要求設計實現的,所以只支援基於固定優先順序搶佔式排程;排程方法簡單,可以滿足較高的實時性要求。

在記憶體管理上,μC/OS-II把連續的大塊記憶體按分割槽來管理,每個分割槽中都包含整數個大小相同的記憶體塊,但不同分割槽之間記憶體的大小可以不同。使用者動態分配記憶體時,只須選擇一個適當的分割槽,按塊來分配記憶體,釋放時將該塊放回到以前所屬的分割槽,這樣就消除了因多次動態分配和釋放記憶體所引起的碎片問題。

μC/OS-II中斷處理比較簡單。一箇中斷向量上只能掛一箇中斷服務子程式ISR,而且使用者程式碼必須都在ISR(中斷服務程式)中完成。ISR需要做的事情越多,中斷延時也就越長,核心所能支援的最大巢狀深度為255。

在檔案系統的支援方面,由於μC/OS-II是面向中小型嵌入式系統的,即使包含全部功能,編譯後核心也不到10 KB,所以系統本身並沒有提供對檔案系統的支援。但是μC/OS-II具有良好的擴充套件效能,如果需要也可自行加入檔案系統的內容。

在對硬體的支援上,μC/OS-II能夠支援當前流行的大部分CPU,μC/OS-II由於本身核心就很小,經過裁剪後的程式碼最小可以為2KB,所需的最小資料RAM空間為4 KB,μC/OS-II的移植相對比較簡單,只需要修改與處理器相關的程式碼就可以。

點評:μC/OS-II是一個結構簡單、功能完備和實時性很強的嵌入式作業系統核心,針對於沒有MMU功能的CPU,它是非常合適的。它需要很少的核心程式碼空間和資料儲存空間,擁有良好的實時性,良好的可擴充套件效能,並且是開源的,網上擁有很多的資料和例項,所以很適合向stm32f103這款CPU上移植。

TOP3:eCos

eCos(embedded Configurable operating system),即嵌入式可配置作業系統。它是一個原始碼開放的可配置、可移植、面向深度嵌入式應用的實時作業系統。最大特點是配置靈活,採用模組化設計,核心部分由小同的元件構成,包括核心、C語言庫和底層執行包等。每個元件可提供大量的配置選項(實時核心也可作為可選配置),使用eCos提供的配置工具可以很方便地配置,並通過不同的配置使得eCos能夠滿足不同的嵌入式應用要求。

在實時性反面,由於eCos排程方法豐富,提供了兩種基於優先順序的排程器(即點陣圖排程器和多級佇列排程器),允許使用者在進行配置時選擇其中一個排程器,適應性好。因此在實時性方面表現良好。

在記憶體管理上eCos對記憶體分配既不分段也不分頁,而是採用一種基於記憶體池的動態記憶體分配機制。通過兩種記憶體池來實現兩種記憶體管理方法:一種是變長的記憶體池;另一種是定長的記憶體池,類似於VxWorks的管理方案。

在中斷管理上eCos使用了分層式中斷處理機制,把中斷處理分為傳統的ISR(中斷服務程式)和滯後中斷服務程式DSR(遞延服務程式)。類似於μClinux的處理機制,這種機制可以在中斷允許時執行DSR,因此在處理較低優先順序中斷時允許高優先順序的中斷和處理。為了極大地縮短中斷延時,ISR應當可以快速執行。如果中斷引起的服務量少,則ISR可以單獨處理中斷;如果中斷服務複雜,則ISR只遮蔽中斷源,然後交由DSR(遞延服務程式)處理。

eCos作業系統的可配置性非常強大,使用者可以自己加入所需的檔案系統。eCos作業系統同樣支援當前流行的大部分嵌入式CPU,eCos作業系統可以在16位、32位和64位等不同體系結構之間移植。eCos由於本身核心就很小,經過裁剪後的程式碼最小可以為10 KB,所需的最小資料RAM空間為10 KB。

在系統移植方面 eCos作業系統的可移植性很好,要比μC/OS-II和μClinux容易。

點評:eCos最大特點是配置靈活,並且支援無MMU的CPU的移植,開源且具有很好的移植性,也比較合適於移植到STM32平臺的CPU上。但eCOS的應用還不是太廣泛,還沒有像μC/OS-II那樣普遍,並且資料也沒有μC/OS-II多。eCos適合用於一些商業級或工業級對成本敏感的嵌入式系統,例如消費電子領域中的一些應用。

TOP4:FreeRTOS

由於RTOS需佔用一定的系統資源(尤其是RAM資源),只有μC/OS-II、embOS、salvo、FreeRTOS等少數實時作業系統能在小RAM微控制器上執行。相對於C/OS-II、 embOS等商業作業系統,FreeRTOS作業系統是完全免費的作業系統,具有原始碼公開、可移植、可裁減、排程策略靈活的特點,可以方便地移植到各種微控制器上執行,其最新版本為6.0版。

作為一個輕量級的作業系統,FreeRTOS提供的功能包括:任務管理、時間管理、訊號量、訊息佇列、記憶體管理、記錄功能等,可基本滿足較小系統的需要。 FreeRTOS核心支援優先順序排程演算法,每個任務可根據重要程度的不同被賦予一定的優先順序,CPU總是讓處於就緒態的、優先順序最高的任務先執行。 FreeRT0S核心同時支援輪換排程演算法,系統允許不同的任務使用相同的優先順序,在沒有更高優先順序任務就緒的情況下,同一優先順序的任務共享CPU的使用 時間。

FreeRTOS的核心可根據使用者需要設定為可剝奪型核心或不可剝奪型核心。當 FreeRTOS被設定為可剝奪型核心時,處於就緒態的高優先順序任務能剝奪低優先順序任務的CPU使用權,這樣可保證系統滿足實時性的要求;當 FreeRTOS被設定為不可剝奪型核心時,處於就緒態的高優先順序任務只有等當前執行任務主動釋放CPU的使用權後才能獲得執行,這樣可提高CPU的執行 效率。

FreeRTOS的移植:FreeRTOS作業系統可以被方便地移植到不同處理器上工作,現已提供了ARM、MSP430、 AVR、PIC、C8051F等多款處理器的移植。FrceRTOS在不同處理器上的移植類似於μC/0S一II,故本文不再詳述FreeRTOS的移 植。此外,TCP/IP協議棧μIP已被移植到FreeRTOS上,具體程式碼可見FreeRTOS網站。

點評:相對於常見的μC/OS—II作業系統,FreeRTOS作業系統既有優點也存在不足。其不足之處, 一方面體現在系統的服務功能上,如FreeRTOS只提供了訊息佇列和訊號量的實現,無法以後進先出的順序向訊息佇列傳送訊息;另一方 面,FreeRTOS只是一個作業系統核心,需外擴第三方的GUI(圖形使用者介面)、TCP/IP協議棧、FS(檔案系統)等才能實現一個較複雜的系統, 不像μC/OS-II可以和μC/GUI、μC/FS、μC/TCP-IP等無縫結合。

TOP5:RT-Thread

RT-Thread 是一款主要由中國開源社群主導開發的開源實時作業系統(許可證GPLv2)。實時執行緒作業系統不僅僅是一個單一的實時作業系統核心,它也是一個完整的應用系統,包含了實時、嵌入式系統相關的各個元件:TCP/IP協議棧,檔案系統,libc介面,圖形使用者介面等。

中國人自己開發的,穩定版本是 1.2.1,有希望看完原始碼。精簡、靠譜,自帶一個叫做 finsh 的片上除錯工具,非常實用。各種訊號量、互斥鎖、郵箱、事件等執行緒協同功能都有。

需要注意的是,rt-thread 2.0 版本的設計思想和 1.2 的完全不同,將會把 linux 納入進來,是的,不是在 linux 裡面嵌入 rt-thread,而是把 linux 嵌入到 rt-thread 裡面!

點評:rt-thread 的文件呢,官網是有的,不過,真的是隻能作為參考,很明顯是開發人員的事後開發筆記整理的。目前還是隻能通過看程式碼來理解詳細的使用方式,從文件和論壇的隻言片語裡面,是難以還原真相的。rt-thread 的好處就是它的版本還比較小,即便缺乏文件,也是可以看原始碼看下去的。

640?

0?wx_fmt=gif

免責宣告:本文系網路轉載,版權歸原作者所有。如涉及作品版權問題,請與我們聯絡,我們將根據您提供的版權證明材料確認版權並支付稿酬或者刪除內容。