《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > WindowsCE.NET中斷延遲測試與分析

WindowsCE.NET中斷延遲測試與分析

2009-06-08
作者:姚連喜1,樊 強2,周井泉1

??? 摘? 要: 嵌入式系統(tǒng)對實時性能一般要求較高,中斷延遲是評估嵌入式操作系統(tǒng)實時性能的重要指標(biāo)。利用ILTiming測試工具對WinCE4.2和5.0進(jìn)行中斷延遲測量,分析了導(dǎo)致中斷延遲的原因,同時針對PXA255處理器的BSP提出了測試WindowsCE系統(tǒng)中斷延遲的方法。?

????關(guān)鍵詞: Xscale PXA255;WindowsCE;實時性;中斷;ILTiming

?

??? 實時系統(tǒng)計算結(jié)果正確與否,不僅取決于計算邏輯的正確性,還取決于計算所消耗的時間,即如果不能滿足系統(tǒng)的時間限制,同樣會認(rèn)為系統(tǒng)失敗。自1986年以來,通用汽車動力公司(GMPTG)在制造應(yīng)用中實施的OMAC(Open ModularArchitecture Controller)技術(shù)方面一直處于領(lǐng)先地位,并且還促成了OMAC用戶群的形成。在對很多應(yīng)用進(jìn)行評估后發(fā)現(xiàn),大多數(shù)系統(tǒng)(95%)需要1 ms或稍長的周期,1 ms周期允許的變化幅度為10%,即100 μs。大部分滿足要求的工業(yè)自動化應(yīng)用是由從一臺機(jī)器發(fā)出的外部信號驅(qū)動的,此信號以中斷形式發(fā)送給硬實時應(yīng)用。這使OMAC抖動重新定義為針對不超過100 μs的中斷服務(wù)線程(IST)延遲的時間限制,其余被評估的應(yīng)用使用計時器創(chuàng)建其周期,這就需要一臺抖動不超過100 μs的1 ms計時器。因此,OMAC定義提出的設(shè)計和測試要求為:IST延遲不超過100 μs;1 ms計時器的誤差時間最長為100 μs。?

??? 實時系統(tǒng)由滿足系統(tǒng)要求的硬件(HardWare)、操作系統(tǒng)(OS)和應(yīng)用程序(Application Program)組成。WinCE是一款實時操作系統(tǒng),具有比桌面Windows更好的實時性、可靠性和安全性。目前,在中國市場上應(yīng)用比較廣泛的WinCE系統(tǒng)主要有4.2和5.0兩個版本。Intel Xscale PXA255微處理器是Intel針對嵌入式高端應(yīng)用推出的高性能ARM微處理器,以PXA255為基礎(chǔ)構(gòu)建的嵌入式平臺能夠滿足實時系統(tǒng)的硬件要求。在硬件平臺Compulab開發(fā)板(一款以色列Compulab公司開發(fā)的以PXA255為處理器的開發(fā)板)上,通過ILTiming測試工具測試WinCE4.2和5.0的實時性能的重要指標(biāo)——中斷延遲時間。實驗結(jié)果表明,中斷延遲時間與微處理器(MPU)頻率成反比關(guān)系,與系統(tǒng)負(fù)荷成正比關(guān)系,并且在惡劣的情況下,WinCE4.2和5.0均能滿足實時系統(tǒng)要求。?

1 硬件平臺設(shè)計?

??? 硬件平臺主要以Intel XScale PXA255處理器為核心,外圍主要集成了以太網(wǎng)控制器、SDRAM、NOR FLASH、NAND FLASH、CompactFLASH、PS/2鼠標(biāo)鍵盤控制器、兩個USB主接口、音頻麥克控制器和電源管理等模塊,并通過PXA255處理器本身的接口功能實現(xiàn)三個串口、一個從USB接口、觸摸屏和LCD顯示屏等。其中Intle Xscale PXA255是一種技術(shù)先進(jìn)的高性能嵌入式處理器,其內(nèi)部采用Xscale核心,性能比ARM9內(nèi)核更加優(yōu)越,頻率最高可達(dá)400 MHz。該內(nèi)核擴(kuò)充了許多DSP指令,極大地提高了多媒體的處理能力,同時還提供了LCD(液晶顯示器)控制器、無線局域網(wǎng)802.11b、藍(lán)牙、高速紅外、USB等多種功能模塊的支持。圖1是以Intel XScale PXA255處理器為核心的硬件平臺系統(tǒng)設(shè)計框圖。?

?

?

??? 在完成電路板上基本硬件的測試后,根據(jù)實際硬件的需要分別針對WinCE4.2和5.0操作系統(tǒng)開發(fā)了板級支持包BSP,經(jīng)測試后,WinCE4.2和5.0系統(tǒng)各項硬件功能均能正常穩(wěn)定工作。BSP開發(fā)是嵌入式系統(tǒng)開發(fā)移植的重要工作之一,但不是本文研究的重點,在此不作介紹。?

2 WindowsCE中斷機(jī)制及中斷延遲測試原理?

??? 由微軟倡導(dǎo)的中斷處理模型,希望用戶盡可能在任務(wù)級通過中斷服務(wù)線程(IST)處理中斷。IST和中斷服務(wù)例程(ISR)通過一個事件對象鏈接在一起。當(dāng)中斷發(fā)生時,經(jīng)ISR處理后,立即向內(nèi)核返回一個中斷標(biāo)識符,內(nèi)核針對此中斷標(biāo)識符設(shè)置相應(yīng)的事件,直到相應(yīng)事件通知的IST在內(nèi)核設(shè)置這一事件后,才開始進(jìn)行WindowsCE中斷處理。?

??? 能夠在指定的時間內(nèi)實施中斷是內(nèi)核實時性能最重要的特性之一。中斷延遲主要是指軟件中斷處理延遲,即從外部中斷到達(dá)處理器直到中斷處理開始之間的時間間隔。如果不發(fā)生分頁操作,WinCE中斷延遲時間將被限制在內(nèi)存中鎖定的線程,這樣就可以計算最惡劣情況下的延遲時間。?

??? 根據(jù)WinCE中斷處理機(jī)制,中斷延遲可分為ISR延遲和IST延遲[5]。?

??? ISR延遲時間是從IRQ在CPU中被設(shè)置時到ISR開始運行時的時間。以下三個與時間相關(guān)的變量會影響ISR的啟動:?

??? (1)中斷在內(nèi)核中關(guān)閉的最長時間。內(nèi)核很少關(guān)閉中斷,但如果將它們關(guān)閉,則關(guān)閉的時間長度會受到限制。?

??? (2)在內(nèi)核調(diào)度中斷和ISR被實際調(diào)用之間的時間。內(nèi)核使用該時間確定要運行什么ISR,并保存在繼續(xù)之前必須保存的任何寄存器。?

??? (3)在ISR返回到內(nèi)核和內(nèi)核實際停止處理中斷之間的時間。這是內(nèi)核通過還原在ISR被調(diào)用之前被保存的任何狀態(tài)(例如寄存器)來完成ISR操作的時間。?

??? 正在測量的ISR的啟動時間可以基于系統(tǒng)中其他中斷的當(dāng)前狀態(tài)進(jìn)行計算。如果中斷正在進(jìn)行,則計算要測量的新ISR的啟動時間必須考慮到兩個因素:所關(guān)注的中斷已經(jīng)發(fā)生之后將發(fā)生的較高優(yōu)先級中斷的數(shù)量及執(zhí)行ISR所占用的時間。下式說明了所得到的啟動時間:?

?????

其中,NISR是在所關(guān)注的中斷之后發(fā)生的較高優(yōu)先級中斷的數(shù)量;TISR(N)是執(zhí)行ISR所需要的時間。圖2示意了該公式。?

?

?

??? 如果沒有發(fā)生較高優(yōu)先級中斷(NISR=0),則式(1)將簡化為以下的代碼示例:?

??? Start of ISR=A+B?

??? Windows CE內(nèi)核和OEM(Original Equipment Manufacture)都會影響執(zhí)行ISR的時間。Windows CE控制變量A、B和C,它們都會受到限制。OEM控制NISR和TISR(N),它們都可以極大地影響ISR滯后時間。?

??? IST延遲時間是從ISR完成執(zhí)行(即通知線程)到IST開始執(zhí)行的時間。以下四個與時間相關(guān)的變量會影響 IST的啟動時間:?

??? B:內(nèi)核調(diào)度中斷和ISR被實際調(diào)用之間的時間。內(nèi)核使用該時間確定要運行什么ISR,并保存在繼續(xù)之前必須保存的任何寄存器。?

??? C:在ISR返回到內(nèi)核和內(nèi)核實際停止處理中斷之間的時間。這是內(nèi)核通過還原在ISR被調(diào)用之前保存的任何狀態(tài)(例如寄存器)來完成ISR操作的時間。?

??? L:KCALL中的最長時間。?

??? M:調(diào)度線程的時間:在ISR返回到內(nèi)核并且內(nèi)核執(zhí)行某些工作以開始執(zhí)行IST之后最高優(yōu)先級IST開始的啟動時間。在ISR返回并通知IST開始運行之后,IST啟動時間受所有ISR的總計時間的影響。?

??? 式(2)說明了所得到的啟動時間,圖3示意了該公式。?

?

?

?????

??? Windows CE內(nèi)核和OEM都會影響執(zhí)行IST所需的時間。Windows CE內(nèi)核控制變量B、C、L和M,它們都是受限制的。OEM控制NISR和TISR(N),它們可以極大地影響IST滯后時間。WindowsCE.net對IST添加了以下限制:鏈接ISR和IST的事件處理只能用在 WaitForSingleObject函數(shù)中,防止ISR-IST事件處理被用在WaitForMultipleObjects函數(shù)中,這意味著內(nèi)核可以擔(dān)保觸發(fā)事件的時間和釋放IST的時間有一個上限。?

??? ILTiming利用系統(tǒng)時鐘的溢出作為外部中斷。系統(tǒng)時鐘ISR程序由硬件抽象層(OAL)完成,ILTiming則作為IST運行,所以實現(xiàn)ILTiming測試只需要對OAL進(jìn)行特定的修改,而不需要修改內(nèi)核,OAL可以很容易改編,并可運行在任何OEM平臺上。?

??? 測試ISR延遲的原理如下:設(shè)系統(tǒng)時鐘初值為al,ISR在開始時刻讀取系統(tǒng)時鐘的值為a2,系統(tǒng)時鐘的計數(shù)頻率為f,ISR延遲時間為tisr,則:?

??? tisr=(a2-al)/f?

??? 測試IST延遲的原理如下:將系統(tǒng)時鐘默認(rèn)值的每隔n個滴答,通知SYSINTR_TIMING中斷標(biāo)識符事件。ILTiming應(yīng)用程序的主線程等待SYSINTR_TIMING中斷事件,因而變成IST。在ISR完成那一刻設(shè)定一個時間戳t1,在IST開始時刻設(shè)置第二個時間戳t2,IST延遲時間為tist,則:?

??? tist=(t2-t1)/f?

??? 針對PXA255處理器的處理器支持包(CSP),在WinCE4.2中按照上述方法,利用操作系統(tǒng)時鐘匹配寄存器0(OSMR0)產(chǎn)生系統(tǒng)時鐘滴答測試IST;在WinCE5.0中,利用OSMR2作為一個額外開啟的定時器2(定時時間長度為n個滴答的時間)測試IST。兩種方法雖然利用的OSMR不同,但測試IST的原理相同。?

3 實驗測試方法及測試結(jié)果分析?

??? 作為一款嵌入式實時操作系統(tǒng),其關(guān)鍵是WindowsCE能否達(dá)到硬實時操作系統(tǒng)的要求。為了觀察系統(tǒng)的整體性能,測試并計算了ISR和IST中斷延遲的平均值。另外,ISR和IST出現(xiàn)最大值是操作系統(tǒng)中斷延遲最惡劣的情況,需特別關(guān)注。?

??? 測試方案分成三種:?

??? (1)在沒有后臺任務(wù)運行的情況下測試中斷延遲,這里只保留系統(tǒng)正常運行時最基本的中斷,不對系統(tǒng)進(jìn)行額外操作,無持續(xù)運行的中斷源。持續(xù)運行的中斷源由LCD顯示屏顯示DMA中斷、橋接芯片IT8152固定中斷和時鐘中斷。這是測試環(huán)境最簡單的一種測試方式,也是具備基本工作能力下測得最小中斷延遲的方式,為今后的測試提供了一個比較基準(zhǔn)。?

??? (2)為了觀察系統(tǒng)運行有后臺任務(wù)時對中斷延遲的影響,可在系統(tǒng)存在額外負(fù)荷的情況下測試中斷延遲的變化情況。?

??? (3)為了觀察其他中斷源對測試中斷延遲的影響,可人為加入其他可控制頻度的中斷源。?

3.1 無后臺任務(wù)情況下中斷延遲測試?

??? 通過對PXA255設(shè)置cpuclock的方法得到100 MHz、200 MHz、300 MHz和400 MHz的不同主頻,分別測得ISR和IST延遲最大值和平均值,得到從100 MHz~400 MHz的ISR和IST延遲的最大值和平均值的變化趨勢(如圖4所示),ISR為延遲平均值,IST為延遲平均值。?

?

?

??? 測試結(jié)果分析:從整體上看,WinCE4.2和5.0的測試結(jié)果有相同的規(guī)律,隨著MPU主頻的增加,ISR和IST延遲都會減少,而且呈近似線性遞減的趨勢。但是ISR下降的速度要比IST緩慢,可見MPU主頻的變化對ISR的影響相對較小,ISR的延遲主要由內(nèi)核決定;而IST延遲的變化就比較明顯,可見MPU主頻對IST的延遲影響較大。造成IST延遲的三個因素中,如果忽略第一個因素(因為恢復(fù)寄存器的時間很短),則KCALL執(zhí)行最長時間和調(diào)度IST線程時間就由MPU主頻決定,即MPU主頻越高,執(zhí)行KCALL的速度就越快。由于在KCALL執(zhí)行過程中要禁止調(diào)度器,這樣調(diào)度器被禁止的時間就會縮短,因此IST延遲隨著MPU主頻的增加而減小。綜上所述,上文歸納的造成ISR和IST延遲的原因是正確的。?

??? 在文獻(xiàn)[6]中,當(dāng)MPU為AMD K6、主頻為500 MHz時,在無后臺任務(wù)運行的情況下的測試平均值是tisr=1.6 μs,tist=8.4 μs。由圖4可知,在400 MHz無后臺任務(wù)情況下平均值是:tisr=2.1 μs,tist=10.6 μs。原因是:(1)主頻變化的影響。通過分析發(fā)現(xiàn),主頻越高延遲越小。(2)微軟測試的只是最基本的WindowsCE內(nèi)核,無持續(xù)運行的中斷源(LCD顯示屏顯示DMA中斷、橋接芯片T8152固定中斷等),所以微軟的測試更接近于理論最理想情況。測試主要針對可正常工作的Compulab開發(fā)板,更接近面向具體的實際應(yīng)用。?

3.2 有后臺任務(wù)情況下中斷延遲測試?

??? ILtiming可以通過輸入?yún)?shù)運行后臺任務(wù),在此后臺任務(wù)下測量中斷延遲。ILtiming可增加的后臺任務(wù)所對應(yīng)的命令如下:?

??? i1:一個只是運行的線程,不做任何事情。?

??? i2:一個執(zhí)行SetThreadPriority(IDLE)的線程。?

??? i3:兩個交替執(zhí)行SetEvent和WaitForSingleObject函數(shù)的線程,超時時間為10 s。?

??? i4:兩個交替執(zhí)行SetEvent和WaitForSingleObject函數(shù)的線程,超時時間無限。?

??? i5:調(diào)用 VirtualAlloc和VirtualFree的線程,超時時間無限。?

??? 分別在100 MHz、200 MHz、300 MHz和400 MHz主頻下,運行5種后臺任務(wù)并測得5組數(shù)據(jù)。由于ISR可搶占運行,有無后臺任務(wù)對tisr的影響不大,所以這里只分析IST受后臺任務(wù)影響的情況。圖5示出了4個主頻下測得的IST延遲的平均值與無后臺任務(wù)時IST延遲的平均值相比較的情況。測試結(jié)果分析:無論MPU主頻如何變化,IST最大延遲總是發(fā)生在第5個后臺任務(wù),即處理虛擬內(nèi)存分配請求VirtualAlloc/VirtualFree。在處理虛擬內(nèi)存分配請求過程中,內(nèi)核將從其物理內(nèi)存池搜索物理內(nèi)存,搜索內(nèi)存的時間各不相同,這取決于正在使用的內(nèi)存量和內(nèi)存的碎片情況。此外,分配存儲空間屬于內(nèi)核功能調(diào)用(KCALLS),在KCALLS執(zhí)行過程中不允許被打斷,調(diào)度器被禁止,從而導(dǎo)致IST調(diào)度延遲增加。因此為了減小分配虛擬內(nèi)存對實時性的影響,進(jìn)程應(yīng)當(dāng)在繼續(xù)執(zhí)行正常處理之前分配以及提交所有虛擬內(nèi)存。?

?

?

3.3 外加其他中斷源情況下中斷延遲測試?

??? 在WinCE系統(tǒng)上運行串口接受顯示程序,外部和單片機(jī)MSP430串口相連,MSP430上運行串口連續(xù)發(fā)送數(shù)據(jù)程序,發(fā)送周期從1 ms~1 000 ms。用這種方法模擬產(chǎn)生不同頻度的中斷源測試中斷延遲。?

??? 測試結(jié)果分析:隨著串口中斷間隔時間變大,IST平均中斷延遲時間變小,且變化幅度明顯(如圖6所示);ISR平均中斷延遲時間也變小,但變化幅度沒有IST變化明顯(如圖7所示)。當(dāng)加入中斷源時,由于ISR會暫時關(guān)中斷,所以當(dāng)中斷頻度變大時,關(guān)中斷的時間變長,即ISR延遲時間隨中斷間隔時間變大而減小。但是微軟提倡I(xiàn)SR關(guān)中斷的時間要盡量短,大數(shù)據(jù)量的操作都移到IST中運行,ISR延遲時間不可能也不允許太長,所以ISR變化不明顯。而IST則受中斷源的干擾,首先,ISR延遲時間變大,定會導(dǎo)致IST延遲時間變大;其次,調(diào)度程序KCALLS被頻繁的外部中斷打斷,使IST調(diào)度延遲變大,故IST的變化相對較明顯。?

?

?

?

3.4 在惡劣情況下最大延遲時間?

??? 通過以上對WinCE系統(tǒng)的整體實時性能的測試分析發(fā)現(xiàn),在主頻高于300 MHz時,IST中斷延遲平均時間小于100 μs,可見WinCE操作系統(tǒng)達(dá)到了OMAC對實時系統(tǒng)的要求。但作為一款實時操作系統(tǒng),不僅要觀察其平均延遲時間,還要關(guān)注在最惡劣條件下的中斷延遲情況,即ISR和IST的最大延遲時間。?

??? 在以上實驗及系統(tǒng)中同時運行多個應(yīng)用程序的情況下,400 MHz主頻下的統(tǒng)計結(jié)果如表1所示。?

?

?

??? 表1中,WinCE中斷延遲最大值TISR+TIST<250 μs,遠(yuǎn)小于1 ms,可見WinCE操作系統(tǒng)滿足大多數(shù)(95%)系統(tǒng)對中斷延遲時間的要求,所以可以說WinCE是一款實時操作系統(tǒng)。?

??? 本文簡要闡述了WindowsCE的中斷處理機(jī)制,詳細(xì)分析了微軟提供的中斷測量工具ILTiming測試的原理和實現(xiàn)方法,并在Compulab PXA255開發(fā)板上運用ILTiming設(shè)計測量了WindowsCE4.2和5.0的中斷延遲時間。實驗測試結(jié)果表明:WindowsCE4.2和5.0具有相同的中斷延遲特性,即中斷延遲時間與MPU頻率成反比關(guān)系、與系統(tǒng)負(fù)荷成正比關(guān)系,且在惡劣情況下,均能滿足實時系統(tǒng)的要求。系統(tǒng)能否滿足實時系統(tǒng)的要求由許多因素決定,本文只對中斷延遲進(jìn)行了分析,希望對需要了解WindowsCE中斷實時性能的嵌入式開發(fā)人員有所幫助。?

參考文獻(xiàn)?

[1] 嵌入式研究網(wǎng),傅曦,陳黎,等.WindowsCE嵌入式開發(fā)入門——基于Xscale架構(gòu)[M].北京:人民郵電出版社,2006.?

[2] 黎偉,戴勝華.WindowsCE . NET實時性能測試與分析[J].北京交通大學(xué)學(xué)報,2005,29(5).?

[3] 羅蕾.嵌入式實時操作系統(tǒng)及應(yīng)用開發(fā)(第二版)[M].北京:北京航空航天大學(xué)出版社,2007.?

[4] 劉大鵬,馬孝江.基于WindowsCE嵌入式操作系統(tǒng)實時性分析[J].自動化技術(shù)與應(yīng)用,2002(1).?

[5] THOMSON M,BROWNE J.Designing and optimizing?microsoft windows CE.NET for real-time performance[EB/OL].www.msdn.microsoft.com,2002,7.?

[6] HALL M,MAILLET S.Testing real-time system in?microsoft windows CE.NET[EB/OL].www.msdn.microsoft.com.2002,7.?

[7] 張冬泉,譚南林.Windows CE實用開發(fā)技術(shù)[M].北京:電子工業(yè)出版社,2006.?

[8] 何宗鍵.Windows CE嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2006.?

[9] HALL M.Windows CE 5.0 for real-time systems[EB/OL].www.msdn.microsoft.com,2005.?

[10] 周疏林,寧楊.Windows CE.net內(nèi)核定制及應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2005.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。