1、μclinux
μclinux是一種優秀的嵌入式linux版本,其全稱為micro-control linux,從字面意思看是指微控制linux。同標準的linux相比,μclinux的核心非常小,但是它仍然繼承了linux作業系統的主要特性,包括良好的穩定性和移植性、強大的網路功能、出色的檔案系統支援、標準豐富的api,以及tcp/ip網路協議等。因為沒有mmu記憶體管理單元,所以其多工的實現需要一定技巧。
μclinux在結構上繼承了標準linux的多工實現方式,分為實時程序和普通程序,分別採用先來先服務和時間片輪轉排程,僅針對中低檔嵌入式cpu特點進行改良,且不支援核心搶占,實時性一般。
μclinux作業系統的中斷管理是將中斷處理分為兩部分:頂半處理和底半處理。在頂半處理中,必須關中斷執行,且僅進行必要的、非常少、速度快的處理,其他處理交給底半處理;底半處理執行那些複雜、耗時的處理,而且接受中斷。因為系統中存在有許多中斷的底半處理,所以會引起系統中斷處理的延時。
μclinux對檔案系統支援良好,由於μclinux繼承了linux完善的檔案系統效能,它支援romfs、nfs、ext2、ms-dos、jffs等檔案系統。但一般採用romfs檔案系統,這種檔案系統相對於一般的檔案系統(如ext2)占用更少的空間。但是romfs檔案系統不支援動態擦寫儲存,對於系統需要動態儲存的資料須採用虛擬ram盤/jffs的方法進行處理。
綜上可知,μclinux最大特點在於針對無mmu處理器設計,這對於沒有mmu功能的stm32f103來說是合適的,但移植此系統需要至少512kb的ram空間,1mb的rom/flash空間,而stmf103擁有256k的flash,需要外接儲存器,這就增加了硬體設計的成本。μclinux結構複雜,移植相對困難,核心也較大,其實時性也差一些,若開發的嵌入式產品注重檔案系統和與網路應用則μclinux是乙個不錯的選擇。
2、μ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上移植。
3、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適合用於一些商業級或工業級對成本敏感的嵌入式系統,例如消費電子領域中的一些應用。
嵌入式作業系統linux:
linux基礎
快速上手linux
linux網路經典案例
linux網路高併發技術之epoll
linux之c語言記憶體管理
linux網路聊天室設計
linux開發除錯技巧
linux高階
linux多執行緒程式設計
嵌入式之STM32系列筆記
一 微控制器程式構架設計 用微控制器開發專案,當 開發到一定的程度後,由於涉及到的源程式檔案與標頭檔案眾多,若在前期為程式設計好架構,則在一定程度上便於程式的維護與管理,更有利於理清思路,加快專案的開發。通常將程式架構設定為四層,如下圖 其中middleware可以沒有,如果沒有外部擴充套件件,如外...
Stm32嵌入式電子相簿簡易實現
kevinten10 stm32 lifecat 基於stm32晶元進行開發,採用480 320解析度內建視訊記憶體模組的lcd顯示屏模組,使用stm32晶元內建的fsmc模擬8080介面時序從而驅動lcd。通過fatfs檔案系統進行sd儲存空間的管理。1 通過fatfs方式讀取fat32格式sd卡...
學STM32還是學嵌入式linux
01 話 題 經常有大學生同學糾結 我到底是學stm32還是學嵌入式linux。這個問題很多人都會有自己的看法,今天我試著從多個角度,把我了解到的事實講一下,希望對大家有所啟發。02 stm32確實好 首先得承認stm32確實好,好到stm32都成了微控制器mcu的代名詞了,現在很多人甚至說微控制器...