- 相關推薦
嵌入式實時系統中斷管理技術研究
摘要:嵌入式實時系統中斷管理技術直接影響到系統的實時響應性能。本文通過對嵌入式內核中斷管理技術的研究,歸結出“中斷前-后段處理”模型;同時,針對一些處理器中多個外部中斷共用一個向量的問題,提出一種單向量多中斷處理映射技術,并在PowerPC MPC860處理器上實現Delta OS內核時,驗證此技術的有效性。引 言
??嵌入式實時系統(Real-Time System)是一個能夠在指定或者確定的時間內對外部事件作出響應的系統,其重要的特性是實時響應性。
嵌入式實時系統對外部事件的響應一般都是通過中斷來處理的,其對中斷的處理方式,直接影響到系統的實時性能。
1 嵌入式內核的中斷管理模式
1.1 簡 介
實時多任務操作系統是嵌入式應用開發的基礎平臺。早期的嵌入式實時應用軟件直接在處理器上運行,沒有RTOS支持,現在的大多嵌入式應用開發都需要嵌入式操作系統的支持。實際上,此時的嵌入式操作系統相當于一個通用而復雜的主控程序,為嵌入式應用軟件提供更強大的開發平臺和運行環境。因為嵌入式系統已經將處理器、中斷、定時器、I/O等資源包裝起來,用一系列的API提供給用戶,應用程序可以不關注底層硬件,直接借用操作系統提供的功能進行開發,此時的嵌入式操作系統可以視為一個虛擬機。
隨著嵌入式實時系統的發展,為了方便對中斷的處理,系統內核常接管中斷的處理,比如提供一些系統調用接口來安裝用戶的中斷,提供統一的中斷處理接口等。根據系統內核的可搶占或者非搶占性,系統內核接管中斷又有兩種不同處理模式,如圖1。
圖1
在非搶占式內核的中斷處理模式中,當在中斷處理過程中有高優先級任務就緒時,不會立即切換到高優先級的任務,必須等待中斷處理完后返回到被中斷的任務中,等待被中斷的任務執行完后,再切換到高優先級任務。在搶占式內核的中斷處理模式中,如果有高優先級任務就緒時,則立刻切換到高優先級的任務。搶占式內核中斷處理模式下的時序如圖2。
在時序圖中,符號A表示有高優先級任務N就緒。這種處理模式有利于高優先級任務的處理,但相應地延長了被中斷的低優先級任務的執行時間。
1.2 嵌入式內核接管中斷的處理機制
嵌入式內核接管中斷的處理機制主要包括兩個部分:面向應用的編程接口部分和面向底層的處理部分。面向用戶應用的編程接口的任務之一是供支持用戶安裝中斷處理例程。面向底層處理部分可以分為兩個部分:中斷向量表部分和中斷處理部分。中斷向量表部分主要指中斷向量表的定位和向量表中表項內容的形式,一般在嵌入式內核中都提供一個中斷向量表, 其表項的向量號應與處理器中所描述的向量對應;向量表表項的內容形式一般有兩種形式。最常見的形式就是在具體的向量位置存儲的是一些轉移程序,轉到具體的中斷處理部分;另一種形式也就是中斷向量位置存放具體的中斷處理程序,此僅針對向量號之間彼此有一定的距離,此距離足以存放中斷處理程序。面向底層部分的中斷處理部分,是整個嵌入式內核中斷管理的核心,在后面有詳細的分析。
對于嵌入式內核中斷管理模式圖中的中斷處理部分,以Delta OS內核為例,詳細說明其中斷處理部分。Delta OS內核中斷處理部分采用了“統一接管”的思想,即Delta OS 為所有的外部中斷都提供一個統一的入口_ISR_Handler。此入口的主要功能是保護中斷現場,執行用戶的中斷服務程序,判斷是否允許可搶占調度,中斷現場的恢復等。Delta OS內核中斷處理的流程如圖3。
從Delta OS內核中斷處理流程圖中,可看出嵌入式內核中一些專用的處理方式。
、 在嵌入式內核中一般有兩個堆棧:系統棧和任務棧。系統棧是系統為中斷上下文處理而預留的堆棧;任務棧屬于任務本身的私有堆棧,用來存儲任務執行過程中一些臨時變量等信息。因為中斷上下文不隸屬于任何任務的上下文中,所以嵌入式內核一般都有一個系統棧專門處理中斷上下文的。當產生中斷且非中斷嵌套時,堆棧由被中斷任務中的任務棧切換到系統棧;當在中斷處理中又發生中斷時,堆棧不再切換,仍用系統棧;當退出最外層中斷時,堆棧又由系統棧切換到被中斷的任務中的任務棧。
② 一般嵌入式內核有兩種形式:搶占式和非搶占式。為了更好地支持系統的實時性,很多嵌入式實時內核都是搶占式內核,如Vxworks、pSOS 等。從上面Delta OS 內核中斷處理流程可知Delta OS是搶占式內核。因為在中斷處理中,當檢測到有高優先級任務就緒時,就會切換到高優先級任務里,而不是等到退出中斷后,再進行任務調度。
、 在嵌入式內核中,中斷時機和調度時機直接影響到系統的實時性。關中斷的時機一般在執行核心操作之前。核心操作包括對鏈表的操作,對核心數據項(如指示同步,反應重要信息狀態)的修改等場合都須關中斷。執行完相應的核心操作后,就可以開中斷。開調度時機主要提供重新調度的機會,一般在執行操作系統核心調用前關調度,執行完后開調度。系統中開關中斷與開關調度的關系大致如下:
開關中斷的粒度比開關調度要深,要細。開關中斷主要是為實時性提供各種可能的中斷時機,允許響應外部中斷。中斷里也可以執行調度和系統調用,但中斷的上下文與任務的上下文是不一樣的,因此在中斷里只能執行一些特定的系統調用。這些特定系統調用是不會引起調用阻塞的,不要試圖在中斷里執行獲取信號量,執行I/O操作等這些很容易引起調用阻塞的系統調用。
2 中斷管理模型
2.1 中斷前-后段處理模型
在前面嵌入式內核中斷管理模式分析中,嵌入式內核一般采用中斷統一接管思想,在中斷統一接管中調用用戶的中斷服務程序
【嵌入式實時系統中斷管理技術研究】相關文章:
嵌入式系統的實時數據接口擴展03-20
通過任務分割提高嵌入式系統的實時性03-18
嵌入式實時操作系統研究與分析03-12
嵌入式實時系統中的優先級反轉問題03-18
嵌入式系統中的Flash存儲管理03-18
實時嵌入式操作系統μC/OS-II在MPC555上的移植03-19
基于RTLinux的實時控制系統03-20
電力驅動系統逆變器實時仿真03-18
車載實時定位系統的研究與設計03-07