十分鐘了解RTOS!
實時操作系統(tǒng)(RTOS)是管理微處理器或微控制器時間的軟件。實時系統(tǒng)指如果系統(tǒng)的邏輯和時序正確性無法滿足,可能會導致嚴重后果的系統(tǒng)。實時多任務(wù)應用是一個必須同時處理多個時間關(guān)鍵活動的系統(tǒng)。實時多任務(wù)內(nèi)核(也稱為實時操作系統(tǒng))是確保盡可能高效地處理時間關(guān)鍵事件的軟件。RTOS的使用,通過將應用程序劃分為多個獨立的任務(wù),簡化了系統(tǒng)設(shè)計過程。
本文引用地址:http://www.ex-cimer.com/article/202210/439158.htm1.前/后臺系統(tǒng)
不使用RTOS的系統(tǒng)通常設(shè)計如圖1所示,這類系統(tǒng)稱為前/后臺系統(tǒng)。應用程序由一個無限循環(huán)組成,該循環(huán)調(diào)用不同的應用模塊來執(zhí)行所需的操作。模塊按順序執(zhí)行(后臺),由中斷服務(wù)程序(ISR)處理異步事件(前臺)。關(guān)鍵操作必須由ISR執(zhí)行,以確保及時處理。由ISR提供的數(shù)據(jù)信息在相應的后臺模塊執(zhí)行之前不會被處理,其延遲時間取決于后臺循環(huán)執(zhí)行所需的時間。
2.實時內(nèi)核
1、多任務(wù)處理
多任務(wù)處理是在多個任務(wù)之間調(diào)度和切換CPU的過程,單個CPU在多個順序任務(wù)之間切換使用。多任務(wù)處理提供了將應用程序分解為一組共享處理器的小型專用任務(wù)的能力。實時內(nèi)核使應用程序更易于設(shè)計和維護。任務(wù)是一個簡單的程序,認為自己擁有整個CPU。實時應用程序的設(shè)計過程涉及將要完成的工作拆分為負責部分問題的任務(wù)。
2、內(nèi)核
內(nèi)核負責任務(wù)管理和任務(wù)之間的通信。當內(nèi)核決定運行另一個任務(wù)時,它將當前任務(wù)的上下文(CPU寄存器)保存到當前任務(wù)的獨立堆棧區(qū)域。新任務(wù)的上下文將從其堆棧區(qū)域恢復,恢復新任務(wù)的代碼執(zhí)行。這個過程稱為上下文切換或任務(wù)切換。每個任務(wù)的堆頂?shù)刂返刃畔⒈淮鎯υ谌蝿?wù)控制塊(TCB)數(shù)據(jù)結(jié)構(gòu)中。TCB在創(chuàng)建任務(wù)時分配,并由RTOS管理。
3、中斷
實時系統(tǒng)中的一個重要問題是從中斷響應到實際開始執(zhí)行用戶中斷處理代碼需要時間。在處理臨界代碼時,RTOS都會禁用中斷。禁用中斷的時間越長,中斷延遲就越大。RTOS通常在短于50 uS的時間內(nèi)禁用中斷,越短越好。
4、調(diào)度
調(diào)度是內(nèi)核的主要職責,負責確認運行哪個任務(wù)以及何時運行。大多數(shù)實時內(nèi)核采用優(yōu)先級策略,每個任務(wù)根據(jù)其重要性分配一個優(yōu)先級。任務(wù)的優(yōu)先級由應用指定。在基于優(yōu)先級調(diào)度的內(nèi)核中,CPU的控制權(quán)將始終交給就緒的最高優(yōu)先級任務(wù)。然而,最高優(yōu)先級任務(wù)何時獲得CPU取決于所使用的調(diào)度類型。有兩種類型調(diào)度:非搶占式調(diào)度和搶占式調(diào)度。
非搶占式調(diào)度
非搶占式調(diào)度要求每個任務(wù)主動放棄對CPU的控制。為了保持任務(wù)并發(fā),這個過程必須經(jīng)常進行。非搶占式調(diào)度也稱為協(xié)作式多任務(wù)處理。當一個任務(wù)放棄CPU時,內(nèi)核會執(zhí)行下一個就緒的最重要的任務(wù)代碼。異步事件由ISR處理。ISR可以使更高優(yōu)先級任務(wù)就緒,但ISR完成后將返回到被中斷的任務(wù)。只有當前任務(wù)自愿放棄CPU時,新的更高優(yōu)先級任務(wù)才會獲得CPU的控制權(quán)。如圖2所示。非搶占式調(diào)度的延遲遠低于前后臺系統(tǒng);延遲由最長任務(wù)的時間確定。
搶占式調(diào)度
在搶占式內(nèi)核中,當一個事件使高優(yōu)先級的任務(wù)就緒時,當前任務(wù)立即掛起,較高優(yōu)先級的任務(wù)獲得CPU控制權(quán)。如果ISR使更高優(yōu)先級的任務(wù)就緒,則被中斷的任務(wù)掛起,恢復執(zhí)行新的更高優(yōu)先級的任務(wù)。大多數(shù)實時系統(tǒng)采用搶占式調(diào)度,其響應速度更快。搶占式調(diào)度如圖3所示。
5、重入
可重入函數(shù)是可以由多個任務(wù)使用而不必擔心數(shù)據(jù)損壞的函數(shù)。相反,不可重入函數(shù)不能被多個任務(wù)共享,但可以通過使用信號量或在臨界段中代碼中禁用中斷來互斥使用不可重入函數(shù)。可重入函數(shù)可以被隨時中斷并恢復,不會丟失數(shù)據(jù)??芍厝牒瘮?shù)使用局部變量(CPU寄存器或堆棧變量),如果使用全局變量需保護其數(shù)據(jù)。專門為嵌入式軟件設(shè)計的編譯器通常會提供可重入的運行時庫。非搶占式調(diào)度不需要可重入函數(shù),除非函數(shù)在任務(wù)和ISR之間共享。如果函數(shù)由多個任務(wù)共享,則搶占式調(diào)度需要函數(shù)可重入。
6、內(nèi)核服務(wù)
實時內(nèi)核為應用程序提供各種服務(wù)。內(nèi)核提供的最常見的服務(wù)之一是信號量管理。信號量是一種協(xié)議機制,用于控制對共享資源的訪問(互斥)、發(fā)布事件的發(fā)生或允許兩個任務(wù)同步它們的活動。信號量通常是代碼能否繼續(xù)執(zhí)行的開關(guān)。如果信號量已在使用中,則請求任務(wù)將被掛起,直到信號量被其當前所有者釋放。掛起的任務(wù)通常不消耗CPU時間。
內(nèi)核還提供與時間相關(guān)的服務(wù),允許任務(wù)自身延遲整數(shù)個系統(tǒng)時鐘。時鐘節(jié)拍通常每10到200毫秒發(fā)生一次,具體取決于應用要求。
任務(wù)或ISR將信息傳遞給另一個任務(wù),這稱為任務(wù)間通信,用于發(fā)送和接收消息的服務(wù)通常由內(nèi)核提供。用于發(fā)送消息的兩個最常見的內(nèi)核服務(wù)是消息郵箱和消息隊列。消息郵箱也稱為消息交換,通常是一個指針變量。通過內(nèi)核提供的服務(wù),任務(wù)或ISR將消息(指針)發(fā)送到郵箱。發(fā)送任務(wù)和接收任務(wù)約定指針指向的消息內(nèi)容。消息隊列用于向一個任務(wù)發(fā)送多個消息。消息隊列本質(zhì)上是一個郵箱數(shù)組。
3.商業(yè)RTOS
目前大約有100家RTOS供應商。產(chǎn)品可用于8、16和32位微處理器。其中一些是完整的操作系統(tǒng),包括實時內(nèi)核、輸入/輸出管理器、窗口系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧、語言接口庫、調(diào)試器和跨平臺編譯器等。RTOS的成本從100美元到超過10,000美元不等。如此多的供應商,困難在于選擇合適的RTOS。
4.小型嵌入式系統(tǒng)
許多小型嵌入式系統(tǒng),如引擎控制、智能儀器、機器人、計算機外圍設(shè)備和電信設(shè)備都可以從使用RTOS中受益。此類系統(tǒng)通?;?位微處理器設(shè)計。對于64 KB地址空間,大多數(shù)8位微處理器無法承受需要大量存儲器的RTOS。商業(yè)內(nèi)核只需要大約1到3 KB的ROM。一些內(nèi)核甚至允許用戶在逐個任務(wù)的基礎(chǔ)上指定堆棧大小。此功能有助于減少應用所需的RAM的空間。對RTOS的一個常見誤解是它大量增加了CPU開銷。事實上,一個RTOS只需要1%到4%的CPU時間來換取有價值的服務(wù)。小型RTOS的特性包括:
·低成本
·具有最小的中斷延遲
·內(nèi)核服務(wù)的執(zhí)行時間確定
·能夠管理至少20個任務(wù)
·允許動態(tài)創(chuàng)建和刪除任務(wù)
·提供信號量管理服務(wù)
·基于內(nèi)核服務(wù)提供時間延遲和超時
5.總結(jié)
RTOS允許輕松設(shè)計和擴展實時應用程序,無需對軟件進行重大更改即可添加新的功能。大量應用程序可以從使用RTOS中受益。RTOS可以確保時間關(guān)鍵事件被快速有效地處理。一旦你將RTOS用于應用程序,你將離不開它!
評論