嵌入式實時作業系統 C OS II與eCos的比較

2021-04-13 11:06:39 字數 4179 閱讀 4580

摘要:敘述嵌入式系統和嵌入式作業系統的概念,簡述嵌入式實時系統的發展階段。重點介紹μc/os-ii和ecos的發展歷史,並且對μc/os-ii與ecos進行比較,為大家在選擇嵌入式作業系統時提供參考。

1 背景

隨著計算機技術的迅速發展和晶元製造工藝的不斷進步,嵌入式系統的應用日益廣泛:從民用的電視、手機等電路裝置到軍用的飛機、坦克等**系統,到處都有嵌入式系統的身影。在嵌入式系統的應用開發中,採和嵌入式實時作業系統(簡稱rtos)能夠支援多工,使得程式開發更加容易,便於維護,同時能夠提高系統的穩定性和可靠性。這已逐漸成為嵌入式系統開發的乙個發展方向。

2 嵌入式作業系統概述

嵌入式作業系統是一種支援嵌入式系統應用的作業系統軟體。它是嵌入式系統(包括硬、軟體系統)極為重要的組成部分,通常包括與硬體相關的底層驅動軟體、系統核心、裝置驅動介面、通訊協議、圖形介面、標準化瀏覽器browser等。嵌入式作業系統具有通用作業系統的基本特點,如能夠有效管理越來越複雜的系統資源;能夠把硬體虛擬化,使得開發人員從繁忙的驅動程式移植和維護中解脫出來;能夠提供庫函式、標準裝置驅動程式以及工具集等。與通用作業系統相比較,嵌入式作業系統在系統實時高效性、硬體的相關依賴性、軟體固態化以及應用的專用性等方面具有較為突出的特點。

嵌入式系統的出現至今已經有30多年的歷史。縱觀嵌入式技術的發展過程,大致經歷了四個階段。

(1)無作業系統的嵌入式演算法階段

這一階段的嵌入式系統是以單晶元為核心的系統,具有與一些監測、伺服、指示裝置相配合的功能。一般沒有明顯的作業系統支援,而是通過組合語言程式設計對系統進行直接控制。主要特點是系統結構和功能都相對單一,針對性強,無作業系統支援,幾乎沒有使用者介面。

(2)簡單監控式的實時作業系統階段

這一階段的嵌入式系統主要以嵌入式式器為基礎、以簡單監控式作業系統為核心。系統的特點是:處理器種類繁多,通用性比較弱;開銷小,效率高;一般配備系統**器,具有一定的相容性和擴充套件性;使用者介面不夠友好,主要用來控制系統負載以及監控應用程式執行。

(3)通用的嵌入式實時作業系統階段

以通用型嵌入式實時作業系統為標誌的嵌入式系統,如vxworks、psos、windows ce就是這一階段的典型代表。這一階段嵌入式系統的特點是:能執行在各種不同的微處理器上;具有強大的能用型作業系統的功能,如具備了檔案和目錄管理、多工、裝置驅動支援、網路支援、圖形視窗以及使用者介面等功能;具有豐富的api和嵌入式應用軟體。

(4)以internet為標誌的嵌入式系統

伴隨著通用型嵌入式實時作業系統的發展,面向internet網路和特定應用的嵌入式作業系統正日益引起人們的重視,成為重要的發展方向。嵌入式系統與internet的真正結合、嵌入式作業系統與應用裝置的無縫結合代表著嵌入式作業系統發展的未來。

3 兩種原始碼開放的rtos

嵌入式實時作業系統有很多,如vxworks、palmos、windowsce等。這些作業系統均屬於商品化產品,**昂貴且由於源泉**不公開導致了諸如對裝置的支援、應用軟體的移植等一系列的問題;而開放原始碼的rtos在成本和技術上有其特有的優勢,在rtos領域占有越來越重要的地位,本文將介紹μc/os-ii和ecos兩種優秀的原始碼公開的實時作業系統,通過對它們各自的特點和效能進行分析和比較,給出相關的資料,為選擇一種合適的rtos提供參考。

3.1 μc/os-ii

μc/os和μc/os-ii是專門為計算機的嵌入式應用設計的,絕大部分**是用c語言編寫的。cpu硬體相關部分是用組合語言編寫的、總量約200行的組合語言部分被壓縮到最低限度,為的是便於移植到任何一種其它的cpu上。許多移植的範例可以從**上得到。使用者只要有標準的ansi的c交叉編譯器,有彙編器、聯結器等軟體工具,就可以將μc/os嵌入到開發的產品中。

μc/os具有執行效率高、占用空間小、實時效能優良和可擴充套件性能等特點,最小核心可編譯至2kb。μc/os-ii已經移植到了幾乎所有知名的cpu上。

3.2 ecos

ecos(embedded configurable operating system),即嵌入式可配置作業系統,最初起源於美國的cygnus solutions公司。cygnus公司於2023年11月發布了第乙個ecos版本ecos1.1,當時只支援有限的幾種處理器結構。2023年11月,redhat公司以6.74億美元收購了cygnus公司。在此後的幾年裡,ecos成為其嵌入式領域的關鍵產品,得到了迅速的發展。2023年,redhat公司由於財務方面的原因,裁剪了ecos開發隊伍,但並沒有停止ecos的發展。redhat公司隨後宣稱將繼續支援ecos的發展,而由原ecos主要開發人員組建了ecos centric公司,並於2023年5月正式發布了ecos2.0。

雖然ecos是redhat的產品,但是ecos並不是linux或linux的派生,ecos彌補了linux在嵌入式應用領域的不足。目前,乙個最小配置的linux核心大概有500kb,需要占用1.5mb的記憶體空間,這還不包括應用程式和其它所需的服務;ecos可以提供實時嵌入式應用所需的基本執行基件,而只占用幾十kb或幾百kb的記憶體空間。ecos是乙個原始碼開放的可配置、可移植、無版稅、面向深嵌入式應用的實時作業系統。從ecos的名稱可以看出,它最大的特點在於它是乙個配置靈活的系統。ecos的核心部分是由不同的元件組成的,包括核心、c語言庫和底層執行包等。每個元件以能提供大量的可配置選項,利用ecos提供的配置工具可以很方便地進行配置。通過不同的配置使得ecos能夠滿足不同的嵌入式應用。

4 μc/os-ii與ecos的比較

4.1 核心排程機制

rtos核心的核心是排程器。當系統包含多個任務或多個執行緒時,必須使用排程器來決定當前執行哪乙個任務或執行緒。排程器對執行緒的執行進行控制,並為執行緒提供一種同步機制。表1列出了這兩種rtos排程器(排程機制)的比較。

表1 排程器比較

排程方法

同優先順序排程

優先級數/個

任務數量/個

uc/os-ii

固定優先順序

搶占式無

64(8個保留)

56ecos

位圖優先順序

搶占式無

3232

多級佇列

優先順序搶占式有32

無限獎券

獎券法目前在測試中

μc/os只支援固定優先順序搶占式,不支援時間片輪轉排程,排程方法簡單、實時性好,用法也簡單;ecos排程方法豐富,適應性好。當然,目前的ecos只允許在其目標系統中使用乙個單獨的排程器,未來的版本將可以允許多個排程器協同工作。

4.2 任務間同步、通訊機制

rtos的功能一般要通過若干任務和中斷服務程式共同完成,任務與任務之間、任務與中斷服務程式之間必須協調動作,互相配合,這就牽涉到任務間的同步與通訊問題。表2為這兩種作業系統同步與通訊機制的比較。

表2 同步與通訊機制的比較

uc/os-ii

ecos

同步與通訊機制

訊號量、郵箱、訊息佇列

互斥、條件變數、計數型訊號量、郵箱和事件標誌

4.3 任務切換時間和中斷延遲時間

任務切換時間和中斷延遲時間是評估rtos效能的兩個重要指標。任務切換時間可以反映出rtos執行任務的速度,而中斷延遲時間可以反映出rtos對外界變化的反應速度。表3為這兩種作業系統任務切換時間和中斷延遲時間的比較。

表3 任務切換時間和中斷延遲時間的比較

測試環境

μc/os-ii

29.7~34.2

78.8

intel80186(33mhz)

ecos

15.84

19.2

mpc860a3(33mhz)

4.4 對硬體的支援

μc/os-ii和ecos支援當前流行的大部分嵌入式cpu,都具有很好的可移植特性。μc/os-ii支援從8位到32位的cpu;而ecos可以在16位、32位和64位等不同體系結構之間移植。μc/os-ii和ecos由於本身核心就很小,經過裁剪後的**最小可以分別為小於2kb和10kb,所需的最小資料ram空間可以為4kb和10kb,因此它們對硬體的要求很低,具有極高的經濟性。

結語

通過比較可以看到:μc/os-ii相對ecos來說,源**最小很多,特別適合學習和研究。它最大的特點是小巧,適合應用在一些ram和rom有限的小型嵌入式系統中,如微控制器系統。ecos最大的特點是配置靈活,適合於用在一些商業級或工業級的嵌入式系統,如一些消費電子、汽車領域等等。總之,選用什麼樣的作業系統,要根據目標系統的硬體條件和使用者應用程式的複雜度來確定。

嵌入式 實時作業系統導論

排程任務和資料 訊號量和共享資料 可重入性和訊號量 多個訊號量 訊號量作為訊號裝置 使用訊號量的易出現問題 訊號量變數 所謂任務,是指在乙個rtos中所寫的軟體的基本構造塊,也就是通常所說的子程式。有關任務是如何呼叫 它與rots是如何配合工作的等問題稍後再討論。在rtos中乙個任務總是處在下列三種...

嵌入式系統 實時作業系統 RTOS

一 rtos中的基本概念 背景 rtos具有的功能 作業系統中的程序與執行緒 二 嵌入式作業系統的主要種類 1 uc os ii 2 linux 作業系統 3 vxworks 4 wince os 作業系統,operating system 是嵌入式系統中的靈魂,是其軟體系統中的重要組成部分,嵌入式...

嵌入式實時作業系統的移植 !

所謂移植,就是使選用的實時核心能在某個特定的微處理器上執行。為了方便移植,大部分的實時作業系統 是用c語言編寫的,但仍需要用c和組合語言編寫一些與微處理器相關的 這是因為有一些操作只能通過組合語言來實現。由於所有的實時作業系統在設計時就已經充分考慮了可移植性,所以移植相對來說是比較容易的。以ucos...