《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > WindowsCE.NET中斷延遲測試與分析

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

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

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

????關鍵詞: Xscale PXA255;WindowsCE;實時性;中斷;ILTiming

?

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

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

1 硬件平臺設計?

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

?

?

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

2 WindowsCE中斷機制及中斷延遲測試原理?

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

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

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

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

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

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

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

??? 正在測量的ISR的啟動時間可以基于系統中其他中斷的當前狀態進行計算。如果中斷正在進行,則計算要測量的新ISR的啟動時間必須考慮到兩個因素:所關注的中斷已經發生之后將發生的較高優先級中斷的數量及執行ISR所占用的時間。下式說明了所得到的啟動時間:?

?????

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

?

?

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

??? Start of ISR=A+B?

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

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

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

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

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

??? M:調度線程的時間:在ISR返回到內核并且內核執行某些工作以開始執行IST之后最高優先級IST開始的啟動時間。在ISR返回并通知IST開始運行之后,IST啟動時間受所有ISR的總計時間的影響。?

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

?

?

?????

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

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

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

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

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

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

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

3 實驗測試方法及測試結果分析?

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

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

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

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

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

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

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

?

?

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

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

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

??? ILtiming可以通過輸入參數運行后臺任務,在此后臺任務下測量中斷延遲。ILtiming可增加的后臺任務所對應的命令如下:?

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

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

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

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

??? i5:調用 VirtualAlloc和VirtualFree的線程,超時時間無限。?

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

?

?

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

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

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

?

?

?

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

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

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

?

?

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

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

參考文獻?

[1] 嵌入式研究網,傅曦,陳黎,等.WindowsCE嵌入式開發入門——基于Xscale架構[M].北京:人民郵電出版社,2006.?

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

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

[4] 劉大鵬,馬孝江.基于WindowsCE嵌入式操作系統實時性分析[J].自動化技術與應用,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實用開發技術[M].北京:電子工業出版社,2006.?

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

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

[10] 周疏林,寧楊.Windows CE.net內核定制及應用開發[M].北京:電子工業出版社,2005.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 免费看特黄特黄欧美大片 | 清清草视频 | 亚洲成a人片在线v观看 | 男女一进一出无遮挡黄 | 日韩免费毛片 | 午夜影视在线视频观看免费 | 国产亚洲综合一区 柠檬导航 | 黄网免费看 | 波多野结衣亚洲一区二区三区 | 国产精品免费小视频 | 日日夜夜操天天干 | 成 人 黄 色 视频免费播放 | 五月婷婷在线观看 | 日韩毛片免费在线观看 | 狠狠色噜噜狠狠狠狠2018 | 中文字幕亚洲一区二区va在线 | 中文亚洲动漫精品 | 国产成人精品日本亚洲网站 | 国产成人精品福利网站在线 | 午夜手机视频 | 天天射天天操天天色 | 亚洲第一色网站 | 中文字幕日韩专区 | 皇色在线| 亚洲一区日韩 | 国产成人宗合 | 亚洲自拍图片区 | 一级福利视频 | a毛片免费全部在线播放毛 a毛片免费全部播放毛 | 久久国产精品亚洲va麻豆 | 国产成人精品久久亚洲高清不卡 | 国内精品福利在线视频 | 久久久一本 | 三级三级三级a级全黄公司的 | 亚洲国产精品久久网午夜 | 中文毛片无遮挡高清免费 | 亚洲欧洲网站 | 欧美成人激情 | 免费在线看黄色 | 免费国产成人高清在线观看不卡 | 轻轻啪qqp.cc |