基於STM32平台的實時作業系統

2021-10-04 05:08:15 字數 2975 閱讀 3962

基於stm32平台且滿足實時控制要求作業系統,有以下5種可供移植選擇,分別為μclinux、μc/os-ii、ecos、freertos和都江堰作業系統(djyos)。

下面分別介紹這五種嵌入式作業系統的特點及不足。

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

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

綜上可知,μclinux最大特點在於針對無mmu處理器設計,這對於沒有mmu功能的stm32f103來說是合適的,但移植此系統需要至少512kb的ram空間,1mb的rom/flash空間,而stmf103擁有256k的flash,需要外接儲存器,這就增加了硬體設計的成本。

μclinux結構複雜,移植相對困難,核心也較大,其實時性也差一些,若開發的嵌入式產品注重檔案系統和與網路應用則μclinux是乙個不錯的選擇。

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

在檔案系統的支援方面,由於μ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上移植。

ecos(embedded configurable operating system),即嵌入式可配置作業系統。

它是乙個源**開放的可配置、可移植、面向深度嵌入式應用的實時作業系統。

最大特點是配置靈活,採用模組化設計,核心部分由小同的元件構成,包括核心、c語言庫和底層執行包等。

每個元件可提供大量的配置選項(實時核心也可作為可選配置),使用ecos提供的配置工具可以很方便地配置,並通過不同的配置使得ecos能夠滿足不同的嵌入式應用要求。

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適合用於一些商業級或工業級對成本敏感的嵌入式系統,例如消費電子領域中的一些應用。

由於rtos需占用一定的系統資源(尤其是ram資源),只有μc/os-ii、embos、salvo、freertos等少數實時作業系統能在小ram微控制器上執行。

相對於c/os-ii、 embos等商業作業系統,freertos作業系統是完全免費的作業系統,具有原始碼公開、可移植、可裁減、排程策略靈活的特點,可以方便地移植到各種微控制器上執行,其最新版本為6.0版。

作為乙個輕量級的作業系統,freertos提供的功能包括:任務管理、時間管理、訊號量、訊息佇列、記憶體管理、記錄功能等,可基本滿足較小系統的需要。

freertos核心支援優先順序排程演算法,每個任務可根據重要程度的不同被賦予一定的優先順序,cpu總是讓處於就緒態的、優先順序最高的任務先執行。

freert0s核心同時支援輪換排程演算法,系統允許不同的任務使用相同的優先順序,在沒有更高優先順序任務就緒的情況下,同一優先順序的任務共享cpu的使用時間。

freertos的不足:

相對於常見的μc/os—ii作業系統,freertos作業系統既有優點也存在不足。

其不足之處, 一方面體現在系統的服務功能上,如freertos只提供了訊息佇列和訊號量的實現,無法以後進先出的順序向訊息佇列傳送訊息;另一方 面,freertos只是乙個作業系統核心,需外擴第三方的gui(圖形使用者介面)、tcp/ip協議棧、fs(檔案系統)等才能實現乙個較複雜的系統, 不像μc/os-ii可以和μc/gui、μc/fs、μc/tcp-ip等無縫結合。

都江堰作業系統,簡稱djyos,得名於乙個偉大的水利工程:都江堰。

與傳統作業系統不同,djyos不是以執行緒而是以事件為排程核心,這種排程演算法使程式設計師擺脫模擬計算機執行過程編寫程式的思維方式,而是按人類認知世界的方式編寫應用程式,就如同在嵌入式程式設計中引入了vc似的。

djyos的排程演算法使程式設計師可以擺脫執行緒和程序的束縛,djyos沒有有關執行緒的api,乙個完全不懂執行緒知識的程式設計師也可以順利地在djyos下編寫應用程式。

djyos 作業系統是以事件為核心進行排程的,這種排程策略使程式設計師可以按人類認知事物的習慣而不是計算機的習慣來程式設計。

由上所述,對於stm32f103來說,移植μc/os-ii、ecos、freertos、都江堰作業系統是合適的。

STM32實時作業系統

1 裸機和作業系統的區別 裸機是在乙個main函式裡執行的,除了有中斷才會跳到其他地方,否則就會一直按照位址不斷加4來執行 為什麼是加4呢 順序的執行結構就是你可以通過 找到相應的執行流程。作業系統 main函式當通過函式堆疊切換的跳轉到第乙個任務之後,第乙個任務好像還是預設的,通過優先順序的判斷優...

12864移植到STM32平台

利用串列埠方式將原本51微控制器上的串列埠程式移植到stm32上,除錯了兩天終於可以顯示了 1.排查io的初始化是否有問題,在stm32平台上需要對io口時鐘使能,io口模式配置,一些特殊的管腳還需要做特殊的配置。2.檢查延時函式,一般來說移植到51的程式到了stm32的話時序會發生比較大的改變,這...

UCGUI在STM32平台移植經驗(無作業系統)

ucgui 移植的前提是已經具備了lcd驅動函式,已經能夠實現點亮lcd螢幕,並實現畫點以及獲取指定點顏色值的功能。一般的顯示屏 商會提供對應的驅動函式。主要有初始化函式void lcd init 螢幕畫點函式 void lcd drawpoint u16 x,u16 y,u16 color 以及獲...