嵌入式RTOS

基本信息

在嵌入式套用領域,很多場合對系統的實時性要求嚴格,因此作業系統的選擇要基於實時系統。實時多任務作業系統(Real Time Operating System,簡稱RTOS)是根據作業系統的工作特性而言的,實時是指物理進程的真實時間。實時作業系統是指具有實時性,能支持實時控制系統工作的作業系統。其首要任務是調度一切可利用的資源完成實時控制任務,其次才著眼於提高計算機系統的使用效率,重要特點是要滿足對時間的限制和要求。

通常對於分時作業系統,軟體的執行在時間上的要求並不嚴格,時間上的錯誤一般不會造成災難性的後果。但對於實時作業系統,主要任務是要求對事件進行實時的處理,雖然事件可能在無法預知的時刻到達.但是軟體上必須在事件發生時能夠在嚴格的時限內做出回響(系統回響時間),即使能夠回響,但是如果超出了時限,系統時間回響的逾時就意味著致命的失敗。實時作業系統的重要特點是具有系統的可確定性,即系統能對運行情況的最好和最壞等情況能做出精確的估計。

實時多任務作業系統(RTOS)是嵌入式套用軟體的基礎和開發平台。目前大多數嵌入式開發還是在單片機上直接進行,沒有RTOS,但仍要有一個主程式負責調度各個任務。RTOS是一段嵌入在目標代碼中的程式,系統復位後首先執行,相當於用戶的主程式,用戶的其他應用程式都建立在RTOS之上。不僅如此,RTOS還是一個標準的核心,將CPU時間、中斷、I/O、定時器等資源都包裝起來,留給用戶一個標準的API(系統調用),並根據各個任務的優先權,合理地在不同任務之間分配CPU時間。

RTOS是針對不同處理器最佳化設計的高效率實時多任務核心,RTOS可以面對幾十個系列的嵌入式處理器MPU、MCU、DSP、SOC等提供類同的API接口,這是RTOS基於設備獨立的應用程式開發基礎。因此,基於RTOS的C語言程式具有極大的可移植性。據專家測算,優秀RTOS上跨處理器平台的程式移植只需要修改1%~4%的內容。在RTOS基礎上可以編寫出各種硬體驅動程式、專家庫函式、行業庫函式、產品庫函式,和通用性的應用程式一起,可以作為產品銷售,促進行業的智慧財產權交流。因此,RTOS又是一個軟體開發平台。

發展過程

實時作業系統(RTOS)的研究是從20世紀60年代開始的。從系統結構上看,RTOS到現在已經歷了如下三個階段:

早期的實時作業系統

早期的實時作業系統,還不能稱為真正的RTOS,它只是小而簡單的、帶有一定專用性的軟體,功能較弱,可以認為是一種實時監控程式。它一般為用戶提供對系統的初始化管理以及簡單的實時時鐘管理,有的實時監控程式也引入了任務調度及簡單的任務間協調等功能,屬於這類實時監控程式的有RTMX等。這個時期,實時套用較簡單,實時性要求也不高。應用程式、實時監控程式和硬體運行平台往往是緊密聯繫在一起的。

專用實時作業系統

專用實時作業系統,隨著套用的發展,早期的RTOS已越來越顯示出明顯的不足了。有些實時系統的開發者為了滿足實時套用的需要,自己研製與特定硬體相匹配的實時作業系統。這類專用實時作業系統在國外稱為Real—Time Operating System Developed in House。它是在早期用戶為滿足自身開發需要而研製的。一般只能適用於特定的硬體環境,且缺乏嚴格的評測,移植性也不太好。屬於這類實時作業系統的有Intel公司的iMAX86等。

通用實時作業系統

在各種專用RTOS中,一些多任務的機制如基於優先權的調度、實時時鐘管理、任務間的通信、同步互斥機構等基本上是相同的,不同的只是面向各自的硬體環境與套用目標。實際上,相同的多任務機制是能夠共享的,因而可以把這部分很好地組織起來,形成一個通用的實時操作相同核心。這類實時作業系統大多採用軟組件結構,以一個個軟體“標準組件”構成通用的實時作業系統,一方面,在RTOS核心的最底層將不同的硬體特性禁止掉;另一方面.對不同的套用環境提供了標準的、可剪裁的系統服務軟組件。這使得用戶可根據不同的實時套用要求及硬體環境選擇不同的軟組件,也使得實時作業系統開發商在開發過程中減少了重複性工作。這類通用實時作業系統,有Integrated System公司的psosystem,Intel公司的iRMX386,Ready System公司(後與MicrotecResearch合併)的VRTX32,WindRiver SystomS公司(位於美國加州Almeda市)的VxworkS,Accelerated Technology Inc公司的NuclouS PLUS等。它們一般都提供了實時性較好的核心、多種任務通信機制、基於TCP/IP的網路組件、檔案管理及I/O服務,提供了集編輯、編譯、調試、仿真為一體的集成開發環境,支持用戶使用C、C++進行應用程式的開發。

功能

任務管理

分時作業系統中的基本調度單位一般是進程(或者執行緒),而對於實時作業系統,作業系統核心調度的基本單位就是任務。任務一般由任務控制塊、程式區、數據區、堆疊區組成,對於多數實時作業系統來說,堆疊一般又分為系統堆疊和用戶堆疊。系統堆疊用於任務做系統調用訪問系統核心時用到的堆疊,把它從用戶堆疊中獨立出來,是為了保證系統核心的安全性。任務的驅動一般是基於訊息或者事件的.即任務的設計是按照依次處理可能接收到的訊息和事件,周而復始輪詢循環的。實時作業系統中的任務有四種狀態:運行(Executing),就緒(Ready),掛起(Suspended),冬眠(Dormant)。

1)運行:獲得CPU控制權。

2)就緒:進入任務等待佇列,通過調度轉為運行狀態。

3)掛起:任務發生阻塞,移出任務等待佇列,等待系統實時事件的發生而喚醒,從而轉為就緒或運行。

4)冬眠:任務完成或錯誤等原因被清除的任務,也可以認為是系統中不存在了的任務。

系統中只能有一個任務在運行狀態,各任務按級別通過時間片分別獲得對CPU的訪問權。實時作業系統一個最主要的功能就是多任務管理和基於優先權的任務調度。

任務間同步和通信

目前,主要的實時作業系統的任務間同步和通信的機制有:訊息、事件、信號量.而部分實時作業系統仍然在沿用信箱機制,另外一些實時作業系統提供了共享記憶體的任務間通信機制。

1)訊息機制的概念和分時作業系統沒有差別,其基本思想是任務通過系統公用的數據交換區(包括私有訊息緩衝區和共用訊息緩衝池)來互動任務間需要通信的信息。訊息機制的系統調用一般包括訊息佇列的創建(q—create)、刪除(q—delete)、接收訊息(q—receive)、傳送訊息(q—send)、廣播訊息(q-broadcast)、緊急訊息(q—urgency)。目前,大多數實時作業系統支持的訊息佇列既可以是定長的,也可以是變長的。

2)事件機制適用於任務間需要同步並且通信的數據量不大的情況。一般說來,任務之間的事件通信機制是可以覆蓋的,即任務A先後傳送二次事件給任務B,如果任務B還沒有來得及處理的話,任務B只需要處理一次事件就行了。事件機制的系統調用一般包括傳送事件(ev—send)、接收事件(ev—receive)。目前大多數實時作業系統支持16~32個事件。

3)如同分時作業系統中的信號量一樣,實時作業系統提供的信號量機制也是為了解決對於臨界資源共享的加鎖機制。信號量機制提供了信號量的創建(sm—create)、信號量的刪除(sm—delete)、信號量的P操作(sm—p)、信號量的V操作(sm—v)。實時作業系統與分時作業系統在信號量機制上有一個明顯的區別,那就是優秀的商用實時作業系統要解決信號量機制的優先權倒置的問題。

記憶體管理

和分時作業系統一樣,實時作業系統會借用CPU的記憶體管理單元(MMU)來完成記憶體管理,實時作業系統記憶體管理模式可以分為實模式與保護模式。目前主流的實時作業系統一般都可以提供兩種模式,讓用戶根據套用自己選擇。一般來說,實時作業系統的記憶體管理,含有對於記憶體的最佳化分配,以儘量減少整個系統的記憶體占有量的要求。

實時時鐘服務

目前,商用的實時作業系統在硬體的硬時鐘中斷的基礎上,提供了實時時鐘服務。實時時鐘是系統調度的基礎,也是系統定時伺服器的基礎。實時時鐘服務一般包括定時喚醒(tm—wkafter或者tm—wkwhen)、定時事件(tm—wevafter或者tm—evwhen)機制。另外,部分優秀的實時作業系統提供了定時訊息機制,即套用任務(比如說任務A)向系統定時伺服器申請定時器,當定時時間到後,定時伺服器返回任務A一條訊息。相應的系統調用一般有定時器申請(tm—start)、定時器刪除(tm—delete)、定時器重置(tm—restart),定時訊息的接收一般採用訊息佇列的接收機制(q-receive)。是否提供靈活的、高精確度的定時器服務,是衡量實時作業系統功能完整性的一個重要指標。

中斷管理服務

如同分時作業系統一樣,中斷管理服務是作業系統的核心和基本功能。實時作業系統的中斷管理有自己的特殊的要求,那就是中斷處理程式要更加短小、精悍,以減少中斷禁止時間和中斷延遲時間。

相關詞條

相關搜尋

熱門詞條

聯絡我們