實時多任務操作系統(RTOS)進入單片機開發領域

實時多任務操作系統(RTOS)進入單片機開發領域

內 容 1.實時多任務操作系統(RTOS)
(1)更加面向硬件系統,而不是操作者
嵌入式系統處理器一般都是獨立工作的,沒有人的直接參與;即使參與,也沒有大量的文字信息輸出,這是和桌面計算機有所不同的。因此RTOS着重面向的是硬件,而不是具有完整的人機界面。
(2)實時性
單片機系統的監測、控制、通信等工作都要求實時性,一旦出現有關情況,CPU能夠及時響應,刻不容緩。爲此,一個實用的RTOS都應具有完善的中斷響應機制,保證中斷響應潛伏時間足夠短。
(3)多任務
半導體技術的發展和應用複雜性的增長促使CPU的處理能力越來越高,當今的一片16位或32位單片機,在運算速度、尋址能力等方面可以相當於8位單片機的幾十片之和。在這樣強大的處理器上運行應用程序,必然不是整塊,而是根據所要實現的若干方面功能,劃分爲數個任務,這樣有利於軟件的開發和維護。
因此單片機系統中採用的RTOS必然是支持多任務的,並能夠根據各個任務的輕重緩急,合理地在它們之間分配CPU和各種資源的佔用時間。
(4)不同的典型外設驅動支持
單片機的典型片內外設爲定時器、A/D、PWM、D/A、串行口、LCD/LED接口,CAN-bus、IC-bus等。根據處理器類型的不同,RTOS在出廠時一般附帶若干上面硬件接口的驅動程度,而網卡等片外設備的驅動程序,以及其它一些高級驅動函數,如兼容DOS的文件系統、TCP/IP協議等,則需要另行選購。以RTOS爲基礎和接口標準,可以設計出大量的庫函數驅動模塊,並根據實際需要選擇或裁剪。
(5)高可靠性
一般計算機的操作系統出現問題,例如死機,除數據丟失等外,不會有太大的問題;而單片機系統一般都是和工業控制、交通工具、醫用器械等機電系統密切相關,不適當的輸出甚至不及時的輸出都可能會帶來財產損失和安全問題。因此嵌入式系統中的RTOS要求高可靠性,發行之前必須經過嚴格的測試。這是一個耗費時間和精力的過程,也是RTOS價格普遍高於一般操作系統的原因之一。

2.RTOS是一個內核
典型的單片機程序在程序指針復位後,首先進行堆棧、中斷、中斷向量、定時器、串行口等接口設置、初始化數據存儲區和顯示內容,然後就來到了一個監測、等待或空循環,在這個循環中,CPU可以監視外設、響應中斷或用戶輸入。
這段主程序可以看作是一個內核,內核負責系統的初始化和開放、調度其它任務,相當於C語言中的主函數。
RTOS就是這樣的一個標準內核,包括了各種片上外設初始化和數據結構的格式化,不必、也不推薦用戶再對硬件設備和資源進行直接操作,所有的硬件設置和資源訪問都要通過RTOS核心。硬件這樣屏蔽起來以後,用戶不必清楚硬件系統的每一個細節就可以進行開發,這樣就減少了開發前的學習量。
一般來說,對硬件的直接訪問越少,系統的可靠性越高。RTOS是一個經過測試的內核,與一般用戶自行編寫的主程序內核相比,更規範,效率和可靠性更高。對於一個精通單片機硬件系統和編程的“老手”而言,通過RTOS對系統進行管理可能不如直接訪問更直觀、自由度大,但是通過RTOS管理能夠排除人爲疏忽因素,提高軟件可靠性。
另外,高效率地進行多任務支持是RTOS設計從始至終的一條主線,採用RTOS管理系統可以統一協調各個任務,優化CPU時間和系統資源的分配,使之不空閒、不擁塞。針對某種具體應用,精細推敲的應用程序不採用RTOS可能比採用RTOS能達到更高的效率;但是對於大多數一般用戶和新手而言,採用RTOS是可以提高資源利用率的,尤其是在片上資源不斷增長、產品可靠性和進入市場時間更重要的今天。

3.RTOS是一個平臺
RTOS建立在單片機硬件系統之上,用戶的一切開發工作都進行於其上,因此它可以稱作是一個平臺。採用RTOS的用戶不必花大量時間學習硬件,和直接開發相比起點更高。
RTOS還是一個標準化的平臺,它定義了每個應用任務和內核的接口,也促進了應用程序的標準化。應用程序標準化後便於軟件的存檔、交流、修改和擴展,爲嵌入式軟件開發的工程化創造了條件、減少開發管理工作量。嵌入式軟件標準化推廣到社會後,可以促進軟件開發的分工,減少重複勞動,近來出現的建立於RTOS上的文件和通信協議庫函數產品等就是實例。
RTOS對於開發單位和開發者個人來說也是一種提高。引入RTOS的開發單位,相當於引入了一套行業中廣泛採用的嵌入式系統應用程序開發標準,使開發管理更簡易、有效。基於RTOS和C語言的開發,具有良好的可繼承性,在應用程序、處理器升級以及更換處理器類型時,現存的軟件大部分可以不經修改地移植過來。
對於開發人員來說,則相當於在程序設計中採用一種標準化的思維方式,提高知識創造的效率;同時因爲具有類似的思路,可以更快地理解同行其它人員的創造成果。

4.RTOS產生並得到迅速發展的原因
單片機處理器能力的提高和應用程序功能的複雜化、精確化,迫使應用程序劃分爲多個重要性不同的任務,在各任務間優化地分配CPU時間和系統資源,同時還要保證實時性。靠用戶自己編寫一個實現上述功能的內核一般是不現實的,而這種需求又是普遍的。在這種形勢之下,由專業人員編寫的、滿足大多數用戶需要的高性能RTOS內核就是一種必然結果了。
對程序實時性和可靠性要求的提高也是RTOS發展的一個原因。此外,單片機系統軟件開發日趨工程化,產品進入市場時間不斷縮短,也迫使管理人員尋找一種有利於程序繼承性、標準化、多人並行開發的管理方式。從長遠的意義上來講,RTOS的推廣能夠帶來嵌入式軟件工業更有效、更專業化的分工,減少社會重複勞動、提高勞動生產率。

5.RTOS的基本特徵
(1)任務
任務(Task)是RTOS中最重要的操作對象,每個任務在RTOS的調用下由CPU分時執行。激活的或當前任務是CPU正在執行的任務,休眠的任務是在存儲器中保留其執行的上下文背景、一旦切換爲當前任務即可從上次執行的末尾繼續執行的任務。任務的調度目前主要有時間分片式(TimeSlicing)、輪流查詢式(Round-Robin)和優先搶佔式(Preemptive)三種,不同的RTOS可能支持其中的一種或幾種,其中優先搶佔式對實時性的支持最好。
(2)任務切換
RTOS管理下的系統CPU和系統資源的時間是同時分配給不同任務的,這樣看起來就象許多任務在同時執行,但實際上每個時刻只有一個任務在執行,也就是當前任務。任務的切換有兩種原因。當一個任務正常地結束操作時,它就把CPU控制權交給RTOS,RTOS則檢查任務隊列中的所有任務,判斷下面那個任務的優先級最高,需要先執行。另一種情況是在一個任務執行時,一個優先級更高的任務發生了中斷,這時RTOS就將當前任務的上下文保存起來,切換到中斷任務。RTOS經常性地整理任務隊列,刪除結束的任務,增加新的要執行任務,並將其按照優先級從大到小的順序排列起來,這樣可以合理地在各個任務之間分配系統資源。
(3)消息和郵箱
消息(Message)和郵箱(Mailbox)是RTOS中任務之間數據傳遞的載體和渠道,一個任務可以有多個郵箱。通過郵箱,各個任務之間可以異步地傳遞信息,沒有佔用CPU時間的查詢和等待。當RTOS包含片上總線接口驅動功能時,各個單片機之間的通信也通過郵箱的方式來進行,用戶並不需要了解更深的關於硬件的內容。
(4)旗語
旗語(Semaphore)相當於一種標誌(Flag),通過預置,一個事件的發生可以改變旗語。一個任務可以通過監測旗語的變化來決定其行動,在監測旗語變化的時候不消耗CPU時間,旗語對任務的觸發是由RTOS來完成的。通過使用旗語,一個任務在等待事件變化的時候就可以不必不斷查詢,而把CPU時間出讓給其它任務。
(5)存儲區分配
RTOS對系統存儲區進行統一分配,分配的方式可以是動態的或靜態的,每個任務在需要存儲區時都要向RTOS內核申請。RTOS通過使用存儲分配類核心對象管理數據存儲器,在動態分配時能夠防止存儲區的零碎化。
(6)中斷和資源管理
RTOS提供了一種通用的設計用於中斷管理,有效率而靈活,這樣可以實現最小的中斷潛伏時間和最大的中斷響應度。RTOS內核中的資源對象類則實現了對系統實體資源或虛擬資源的獨佔式訪問,一個任務可以取得對資源的唯一訪問權,其它任務在資源釋放以前無法訪問,這樣可以避免資源衝突。設計完善的RTOS具有檢查可能導致系統死鎖的資源調用設計。

上面是RTOS的基本特徵。根據產品的不同,它可能還包含許多其它功能。

6.你的處理器是不是需要一套實時多任務操作系統?
RTOS是目前嵌入式系統領域的熱點之一,是流行的開發平臺,但它畢竟對於許多用戶來說還是昂貴的,還會大量改變用戶習慣的開發方式,因此在引入RTOS以前對必要性進行考察還是明智的。你可以思考下面的幾個問題:
(1)你的處理器控制的時間和方式和你預想的一樣嗎?
(2)你是否發現自己花費很多時間盤算怎樣使一段代碼在該執行的時候執行?
(3)你是否花費太多時間在中斷子程序上,知道主程序不可能順序地處理中斷事件,便試圖編出所有代碼來處理中斷事件?
(4)你是否發現自己在不斷地測試標誌或調用測試標誌的子程序,來判斷是否應當執行一段子程序?
如果你對上面問題的回答有一個以上是肯定的話,那麼就是到了需要一套實時多任務操作系統將你從編程的瑣碎中解脫出來的時候了。

8.目前有什麼樣的RTOS?
當你在電子雜誌上尋找RTOS的時候,可能會發現世界上研製RTOS產品的公司多得令你無所適從;但是仔細閱讀後會發現,它們的產品可能只覆蓋幾種處理器,而且是你所不熟悉的。目前產品比較全面的公司主要有美國的CMXCompany和EmbeddedSystemProducts(ESP),Inc.,它們對中國單片機工業流行的單片機,如8051,251,196/296,P51XA,68xxx等都有RTOS及其相關的接口庫函數產品,提供源程序代碼,沒有每個產品的二進制版稅。其中CMX公司的產品價格略低,較適合中國市場;而ESP公司的產品則有較豐富的庫函數支持。
有關更進一步的產品信息,可查詢網址
http://www.cmx.com
http://www.rtxc.com
http://www.bol-system.com
或向中國單片機公共實驗室諮詢,電話爲(010)62059495,64871495。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章