Microsoft Windows CE
快速反應的嵌入式應用常常管理嚴格的時間反應。例如,制造過程控制,高速的數(shù)據(jù)采集設備,電訊交換設備,醫(yī)用設備,空中“有線”控制,武器發(fā)射裝備,空間航行和導航,實驗室,實驗控制,汽車發(fā)動機控制,機器人系統(tǒng)。
為保證這種功能,就意味著不僅需要計算精確性,還有結果的時間性,此種應用必須在指定的時間參數(shù)內做出反應。
實時系統(tǒng)的廣義定義是“對任何外部刺激,計算機做出及時反應是至關重要的系統(tǒng)”,標準定義在Internet newsgroup corp realtime group中 。實時定義為:一個實時系統(tǒng)它的計算正確性,不僅依靠于計算邏輯上的正確,還包括及時的產生結果。如果沒有達到系統(tǒng)時間限制條件,系統(tǒng)也是失效的。
搞清楚實時系統(tǒng)和實時操作系統(tǒng)(RTOS)的區(qū)別至關重要,實時系統(tǒng)代表所有系統(tǒng)組成設備——硬件,操作系統(tǒng)和應用——它需要達到系統(tǒng)的要求,實時操作系統(tǒng)(RTOS)只是整個實時系統(tǒng)的一個組成部分,它必須提供足夠的功能以確保整個實時系統(tǒng)達到要求。
同樣,搞清快速操作系統(tǒng)和實時操作系統(tǒng)之間區(qū)別,也很重要,對于一個RTOS雖然達到全面要求十分有用,但并不是它自己達到這種要求。Internet neusgronp cornp.realtime列舉了作為一個實時操作系統(tǒng),必須達到的要求: - OS(操作系統(tǒng))必須是多線程和優(yōu)先級之分。
- OS必須支持線程優(yōu)先級。
- 一個優(yōu)先級繼承的系統(tǒng)必須存在。
- OS必須支持可預測的線程,同步發(fā)送機理。
另外,OS的行為必須是可預測的,這意味實時系統(tǒng)的開發(fā)者必須對系統(tǒng)中斷級,系統(tǒng)調用和分時了如指掌: - 必須知道OS和設備驅動器的中數(shù)據(jù)匹配******時間。
- 設備驅動器用來處理一個中斷******時間和關于這些驅動器的中斷申請信息必須清楚。
- 中斷響應(從中斷到運行時間),必須可預測并滿足功能要求。
每次系統(tǒng)調用時間必須可以預測,并且獨立于系統(tǒng)的對象數(shù)目。本篇論文論述了微軟Windows CE 操作系統(tǒng)是如何達到一個實時系統(tǒng)的要求,更有意義的是,Windows CE 保證一個時間的上限,它在收到中斷后開始一個實時的優(yōu)先級線程。本論文論述了對特定參考平臺的中數(shù)據(jù)響應時間,參考為有 Hinathi SH3 的微處理器的 “Odo” 平臺。
Microsoft Windows CE
概論
微軟Windows CE 被設計成針對小型設備(它是典型的擁有有限內存的無磁盤系統(tǒng))的通用操作系統(tǒng)。Windows CE 可以通過設計一層位于內核和硬件之間代碼來用設定硬件平臺,這即是眾所周知的硬盤壓縮層(HAL),(在以前解釋時,這被稱為 OEMC (原始設備制造)適應層,即 OAL; 內核壓縮層,即 KAL。 以免與微軟的 Windows NT 操作系統(tǒng) HAL 混淆)
不象其它的微軟 Windows 操作系統(tǒng),Windows CE 并不是代表一個標準的相同的對所有平臺適用的軟件。為了足夠靈活以達到適應廣泛產品需求, Windows CE 采用標準模式,這就意味著,它能夠由一系列軟件模式做出選擇,從而使產品定制。另外,一些可利用模式也可作為其組成部分,這意味著這些模式能夠通過從一套可利用的組份做出選擇,從而成為標準模式,通過選擇,能夠達到系統(tǒng)要求的最小模式, OEM 能夠減少存儲腳本和操作系統(tǒng)的運行。
Windows CE 關于 VC++ 5.0 開發(fā)系統(tǒng)嵌入式工具包,提供系統(tǒng)庫、工具、文本和樣本代碼,以使 OEMS 能夠對特定的硬件平臺使 Windows CE 標準定制。嵌入式工具包也包括設備驅動包(DDK)和軟件開發(fā)包(SDK) ,DDK 提供了關于寫驅動器的附加文本,SDK 提供庫、頭文件、樣本代碼、文本以允許,開發(fā)者對基于 Windows CE 的平臺進行寫操作。 Windows CE 提供了相同的程序界面,以用來為其它的視窗操作系統(tǒng)開發(fā)功能,例如,Windows CE 版本 1.01支持大約1000個微軟的Win 32 API 函數(shù)的其中500個。這就意味著大量不同類的工具,第三方書籍,關于 Win 32 開發(fā)者訓練教程,可以替代或為 Windows CE 系統(tǒng)的開發(fā)者所用。
實時系統(tǒng)的開發(fā)者能夠使用,關于VDFF 5.0 的嵌入式工具包,以把操作系統(tǒng)轉移到特定的平臺,并為這個平臺開發(fā)附加設備驅動器和實時功能。
線程和線程優(yōu)先權級
Windows CE 是有優(yōu)先級的多任務操作系統(tǒng),它允許多重功能、進程,在相同時間系統(tǒng)中運行 Windows CE 支持******的 32 位同步進程。一個進程包括一個或多個線程,每個線程代表進程的一個獨立部分,一個線程被指定為進程的基本線程,進程也能創(chuàng)造一個未定數(shù)目的額外線程,額外線程實際數(shù)目,僅由可利用的系統(tǒng)資源限定。
Windows CE 利用基于優(yōu)先級的時間片演算法以安排線程的執(zhí)行,Windows CE 支持八個不同的優(yōu)先級,由0到7,0代表*********,它在頭文件 Winbasw.h中定義。 優(yōu)先級 | 描述 | 0 (*********) | 關鍵的線程優(yōu)先級 (最高優(yōu)先等級) | 1 | 最高線程優(yōu)先級 | 2 | 高于通常的線程優(yōu)先級 | 3 | 通常線程優(yōu)先級 | 4 | 低于常規(guī)線程優(yōu)先級 | 5 | 最低線程優(yōu)先級 | 6 | 高于IDLE的線程優(yōu)先級 | 7 (最低) | IDLE線程優(yōu)先級 (最低優(yōu)先級) |
級別0和1通常做為實時過程和設備驅動器,級別2-4做為線程和通常功能,級別5-7做為是低于其它功能級別,注意級別6是目前狀態(tài)并有穩(wěn)定聯(lián)接。
優(yōu)先權唯一的取決于線程優(yōu)先級,擁有高級優(yōu)先權的線程安排優(yōu)先運行,同一優(yōu)先級的線程,以循環(huán)優(yōu)先先級方式運行,即每個線程接受定制的時間或時間片,定量時間默認值為25毫秒 (Windows CE 2.0 支持在 MIPS 平臺更改定量時間)。較低優(yōu)先權的線程,要直到較高級線程完成之后再運行,也即直到他們或者放棄或停止。一個重要的例外是最高優(yōu)先級的線程(級別0,關鍵時間優(yōu)先級)不與其它的線程共享時間片,這些線程連續(xù)執(zhí)行直到他們完成。不象其它的微軟窗操作系統(tǒng),Windows CE 是固定不能改變,它不匹配基于這引進優(yōu)先級的中斷,他們能夠暫時改動,但僅能通過 Windows CE 內核以避免所謂的的“優(yōu)先權倒置”。
優(yōu)先權倒置指的是當它們同時競爭同一資源時,低優(yōu)先級的線程,阻礙了高優(yōu)先權線程對資源的利用。為了改正這種局面并解放較高優(yōu)先權的線程,Windows CE 允許低級優(yōu)先權繼承,嚴格的線程優(yōu)先權,并且運行較高優(yōu)先級直到它釋放所用資源。
例如,如果一個線程在最高優(yōu)先權運行試圖蕕取由低級優(yōu)先權占有的互斥體,低級優(yōu)先權的線程變成高級優(yōu)先權,并且運行直到它釋放互斥體。優(yōu)先權倒置適用于系統(tǒng)的所有線程。例如,甚至在優(yōu)先級別1運行的內核線程能轉成級別0,如果優(yōu)先級0線程運行內存分頁代碼,將引起塊失誤。
基于優(yōu)先級的多任務設計,保證運行在最低級的線程在一個預所知時間段執(zhí)行。本論文在后面討論設定響應,對于指定的平臺和公式,并由其它的平臺獲取數(shù)字。在 DAK 和 SDK 的工具,顯示了線程狀態(tài)和優(yōu)先級別,并描繪指定實時系統(tǒng)操作輪廓。
線程同步
實時系統(tǒng)必須保證進程和線程同步,例如,如果實時應用的一部分在另一部分獲得最多當前數(shù)據(jù)前即完成,此應用的管理進程可能不穩(wěn)定,同步將確保在應用線程間交換正確。
如同其它的 Windows 操作系統(tǒng)一樣,Windows CE 為線程同步提供了一個豐富的“等待對象”,這包括關鍵部門、事件、互斥體,些等待對象,允許一個線程減緩它的運行并且等待直到指定事件發(fā)生。
Windows CE 將互斥體、關鍵部分、事件請求按“先入先出,優(yōu)先級(FIFO)”順序排列:不同的先入先出順序序列定義成八個不同的優(yōu)先級,在給定的優(yōu)稱級的線程請求,將被放在優(yōu)先級列表末尾,當優(yōu)先級倒置出現(xiàn)時,調度程序調整這些序列。
除了等待對象,Windows CE 支持標準的 Win 32 時間 API 函數(shù),這些來自內核的應用,軟件中斷將獲得時間間隔,它被用來管理實時應用。通過調用 GetTickCont 函數(shù),它能夠返回幾毫秒,線程能夠使用系統(tǒng)間隔時間。關于更詳細的分時信息,Windows CE 內核也支持Win 32 API 函數(shù)QueryPerformanreCounter 和 QueryPerFormanteFrequency 。OEM 必須為這些調用提供硬件和軟件支持,它提供一個較高的時間分辨力和 OAL 界面其它方面。
其它方面考慮
Windows CE 提供了一個重要的存儲系統(tǒng),例如,當目前某些運行 Windows CE 的平臺提供 4MB 的物理內存,Windows CE 支持一個重要的 2GB 的地址空間,每個進程聯(lián)接在它自己的32MB 物理空間上,當它需要產生內存分頁中斷(這可能影響線程執(zhí)行時間),物理內存進行線程代碼或數(shù)據(jù)內存分頁。
內存分頁輸入輸出,將比實時進程優(yōu)先級低。在實時進程中內存分頁仍可自由出現(xiàn),但這要確保后臺的實際內存管理贏得實時系統(tǒng)優(yōu)先權。 實時線程應該鎖存在內存中,以防止這些無關緊要的內存分頁阻礙其運行,它們可能會占用實際內存管理系統(tǒng)。
Windows CE 允許映射,這將陰止多個進程共享同一物理內存,結果將會導致協(xié)同進程間或驅動器與映射快速的數(shù)據(jù)傳送,內存映射能夠戲劇性的增強實時操作。
中斷處理: IRQS ISRS 和 ISTS
實時應用被設立在指定的時間間隔內,對外部事件做出反應,實時應用使用中斷做為一種確保外部事件由操作系統(tǒng)獲知的方式。在 Windows 中,內核和 OEM 適應層 (OAL)被設定成使系統(tǒng)其它部分的中斷和調度最優(yōu)化。Windows CE 平衡操作,并通過把中斷過程分成兩部分而使執(zhí)行更加容易:它分為中斷服務程序(ISR)和中斷服務線程(IST)兩部分。
每條硬件中斷申請線(IRQ),與一個ISR相連。當中斷成立和中斷出現(xiàn)時,內核為此調用寄存的 ISR, ISR 為中斷處理的內核模式部分盡可能短的保存。它首先將內核放在適合的 IST 上。
ISR 執(zhí)行它的最小處理并返回一個 ID 號到內核,內核檢查返回的中斷 ID 號,并設置相關事件,中斷服務線程等待事件。當內核設置事件時,IST 停止等待并開始執(zhí)行,附加的中斷進程,中斷處理大部分實際上出現(xiàn)在 IST 中,兩個最高的線程優(yōu)先權 (級別0和1),通常指定為 ISTS,保證這些線程運行得足夠快。
正如前面所說,處在*********的 ISTS 不能被其它的線程占用,這些線程持續(xù)執(zhí)行直到它們截止或放棄。
Windows CE 不能支持群體中斷,這就意味著當以前一個中斷處理中,另一個不同接受服務,也就是當內核位于 ISR 時如果中斷出現(xiàn),在為新的 IRQ 開始 ISR 前它將一直執(zhí)行直到ISR 結束,這將引起硬件中斷和 ISR 開始之間的延遲,拖延和響應時間中斷響應。
中斷響應
本論文中,Intervupt Latency 詞組主要指的是較件中斷,處理響應,也即是從處部中斷到達處理器到中斷開始處理間的時間。
Windows CE 中斷響應時間是針對鎖存在內存上的線程 (當內存響應不存在時)。這使得計算最差事件響應成為可能——中斷服務程序(ISR) 開始和中斷服務線程(IST)開始D的總時間,直到中斷處理的總時間能夠通ISR 和 IST 中所需時間計算決定。
ISR 響應通用公式定義如下: ISR開始時間 = value1 |