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