當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]嵌入式實(shí)時(shí)系統(tǒng)中斷管理技術(shù)研究

 摘要:嵌入式實(shí)時(shí)系統(tǒng)中斷管理技術(shù)直接影響到系統(tǒng)的實(shí)時(shí)響應(yīng)性能。本文通過(guò)對(duì)嵌入式內(nèi)核中斷管理技術(shù)的研究,歸結(jié)出“中斷前-后段處理”模型;同時(shí),針對(duì)一些處理器中多個(gè)外部中斷共用一個(gè)向量的問(wèn)題,提出一種單向量多中斷處理映射技術(shù),并在PowerPC MPC860處理器上實(shí)現(xiàn)Delta OS內(nèi)核時(shí),驗(yàn)證此技術(shù)的有效性。

    關(guān)鍵詞:實(shí)時(shí)性 中斷 中斷管理模式 嵌入式實(shí)時(shí)系統(tǒng)

引 言

??嵌入式實(shí)時(shí)系統(tǒng)(Real-Time System)是一個(gè)能夠在指定或者確定的時(shí)間內(nèi)對(duì)外部事件作出響應(yīng)的系統(tǒng),其重要的特性是實(shí)時(shí)響應(yīng)性。

  嵌入式實(shí)時(shí)系統(tǒng)對(duì)外部事件的響應(yīng)一般都是通過(guò)中斷來(lái)處理的,其對(duì)中斷的處理方式,直接影響到系統(tǒng)的實(shí)時(shí)性能。

1 嵌入式內(nèi)核的中斷管理模式

    1.1 簡(jiǎn) 介

  實(shí)時(shí)多任務(wù)操作系統(tǒng)是嵌入式應(yīng)用開(kāi)發(fā)的基礎(chǔ)平臺(tái)。早期的嵌入式實(shí)時(shí)應(yīng)用軟件直接在處理器上運(yùn)行,沒(méi)有RTOS支持,現(xiàn)在的大多嵌入式應(yīng)用開(kāi)發(fā)都需要嵌入式操作系統(tǒng)的支持。實(shí)際上,此時(shí)的嵌入式操作系統(tǒng)相當(dāng)于一個(gè)通用而復(fù)雜的主控程序,為嵌入式應(yīng)用軟件提供更強(qiáng)大的開(kāi)發(fā)平臺(tái)和運(yùn)行環(huán)境。因?yàn)榍度胧较到y(tǒng)已經(jīng)將處理器、中斷、定時(shí)器、I/O等資源包裝起來(lái),用一系列的API提供給用戶,應(yīng)用程序可以不關(guān)注底層硬件,直接借用操作系統(tǒng)提供的功能進(jìn)行開(kāi)發(fā),此時(shí)的嵌入式操作系統(tǒng)可以視為一個(gè)虛擬機(jī)。

  隨著嵌入式實(shí)時(shí)系統(tǒng)的發(fā)展,為了方便對(duì)中斷的處理,系統(tǒng)內(nèi)核常接管中斷的處理,比如提供一些系統(tǒng)調(diào)用接口來(lái)安裝用戶的中斷,提供統(tǒng)一的中斷處理接口等。根據(jù)系統(tǒng)內(nèi)核的可搶占或者非搶占性,系統(tǒng)內(nèi)核接管中斷又有兩種不同處理模式,如圖1。

圖1

  在非搶占式內(nèi)核的中斷處理模式中,當(dāng)在中斷處理過(guò)程中有高優(yōu)先級(jí)任務(wù)就緒時(shí),不會(huì)立即切換到高優(yōu)先級(jí)的任務(wù),必須等待中斷處理完后返回到被中斷的任務(wù)中,等待被中斷的任務(wù)執(zhí)行完后,再切換到高優(yōu)先級(jí)任務(wù)。在搶占式內(nèi)核的中斷處理模式中,如果有高優(yōu)先級(jí)任務(wù)就緒時(shí),則立刻切換到高優(yōu)先級(jí)的任務(wù)。搶占式內(nèi)核中斷處理模式下的時(shí)序如圖2。

  在時(shí)序圖中,符號(hào)A表示有高優(yōu)先級(jí)任務(wù)N就緒。這種處理模式有利于高優(yōu)先級(jí)任務(wù)的處理,但相應(yīng)地延長(zhǎng)了被中斷的低優(yōu)先級(jí)任務(wù)的執(zhí)行時(shí)間。

    1.2 嵌入式內(nèi)核接管中斷的處理機(jī)制

  嵌入式內(nèi)核接管中斷的處理機(jī)制主要包括兩個(gè)部分:面向應(yīng)用的編程接口部分和面向底層的處理部分。面向用戶應(yīng)用的編程接口的任務(wù)之一是供支持用戶安裝中斷處理例程。面向底層處理部分可以分為兩個(gè)部分:中斷向量表部分和中斷處理部分。中斷向量表部分主要指中斷向量表的定位和向量表中表項(xiàng)內(nèi)容的形式,一般在嵌入式內(nèi)核中都提供一個(gè)中斷向量表, 其表項(xiàng)的向量號(hào)應(yīng)與處理器中所描述的向量對(duì)應(yīng);向量表表項(xiàng)的內(nèi)容形式一般有兩種形式。最常見(jiàn)的形式就是在具體的向量位置存儲(chǔ)的是一些轉(zhuǎn)移程序,轉(zhuǎn)到具體的中斷處理部分;另一種形式也就是中斷向量位置存放具體的中斷處理程序,此僅針對(duì)向量號(hào)之間彼此有一定的距離,此距離足以存放中斷處理程序。面向底層部分的中斷處理部分,是整個(gè)嵌入式內(nèi)核中斷管理的核心,在后面有詳細(xì)的分析。

  對(duì)于嵌入式內(nèi)核中斷管理模式圖中的中斷處理部分,以Delta OS內(nèi)核為例,詳細(xì)說(shuō)明其中斷處理部分。Delta OS內(nèi)核中斷處理部分采用了“統(tǒng)一接管”的思想,即Delta OS 為所有的外部中斷都提供一個(gè)統(tǒng)一的入口_ISR_Handler。此入口的主要功能是保護(hù)中斷現(xiàn)場(chǎng),執(zhí)行用戶的中斷服務(wù)程序,判斷是否允許可搶占調(diào)度,中斷現(xiàn)場(chǎng)的恢復(fù)等。Delta OS內(nèi)核中斷處理的流程如圖3。

  從Delta OS內(nèi)核中斷處理流程圖中,可看出嵌入式內(nèi)核中一些專用的處理方式。

 ?、?在嵌入式內(nèi)核中一般有兩個(gè)堆棧:系統(tǒng)棧和任務(wù)棧。系統(tǒng)棧是系統(tǒng)為中斷上下文處理而預(yù)留的堆棧;任務(wù)棧屬于任務(wù)本身的私有堆棧,用來(lái)存儲(chǔ)任務(wù)執(zhí)行過(guò)程中一些臨時(shí)變量等信息。因?yàn)橹袛嗌舷挛牟浑`屬于任何任務(wù)的上下文中,所以嵌入式內(nèi)核一般都有一個(gè)系統(tǒng)棧專門(mén)處理中斷上下文的。當(dāng)產(chǎn)生中斷且非中斷嵌套時(shí),堆棧由被中斷任務(wù)中的任務(wù)棧切換到系統(tǒng)棧;當(dāng)在中斷處理中又發(fā)生中斷時(shí),堆棧不再切換,仍用系統(tǒng)棧;當(dāng)退出最外層中斷時(shí),堆棧又由系統(tǒng)棧切換到被中斷的任務(wù)中的任務(wù)棧。

 ?、?一般嵌入式內(nèi)核有兩種形式:搶占式和非搶占式。為了更好地支持系統(tǒng)的實(shí)時(shí)性,很多嵌入式實(shí)時(shí)內(nèi)核都是搶占式內(nèi)核,如Vxworks、pSOS 等。從上面Delta OS 內(nèi)核中斷處理流程可知Delta OS是搶占式內(nèi)核。因?yàn)樵谥袛嗵幚碇?,?dāng)檢測(cè)到有高優(yōu)先級(jí)任務(wù)就緒時(shí),就會(huì)切換到高優(yōu)先級(jí)任務(wù)里,而不是等到退出中斷后,再進(jìn)行任務(wù)調(diào)度。

  ③ 在嵌入式內(nèi)核中,中斷時(shí)機(jī)和調(diào)度時(shí)機(jī)直接影響到系統(tǒng)的實(shí)時(shí)性。關(guān)中斷的時(shí)機(jī)一般在執(zhí)行核心操作之前。核心操作包括對(duì)鏈表的操作,對(duì)核心數(shù)據(jù)項(xiàng)(如指示同步,反應(yīng)重要信息狀態(tài))的修改等場(chǎng)合都須關(guān)中斷。執(zhí)行完相應(yīng)的核心操作后,就可以開(kāi)中斷。開(kāi)調(diào)度時(shí)機(jī)主要提供重新調(diào)度的機(jī)會(huì),一般在執(zhí)行操作系統(tǒng)核心調(diào)用前關(guān)調(diào)度,執(zhí)行完后開(kāi)調(diào)度。系統(tǒng)中開(kāi)關(guān)中斷與開(kāi)關(guān)調(diào)度的關(guān)系大致如下:

  開(kāi)關(guān)中斷的粒度比開(kāi)關(guān)調(diào)度要深,要細(xì)。開(kāi)關(guān)中斷主要是為實(shí)時(shí)性提供各種可能的中斷時(shí)機(jī),允許響應(yīng)外部中斷。中斷里也可以執(zhí)行調(diào)度和系統(tǒng)調(diào)用,但中斷的上下文與任務(wù)的上下文是不一樣的,因此在中斷里只能執(zhí)行一些特定的系統(tǒng)調(diào)用。這些特定系統(tǒng)調(diào)用是不會(huì)引起調(diào)用阻塞的,不要試圖在中斷里執(zhí)行獲取信號(hào)量,執(zhí)行I/O操作等這些很容易引起調(diào)用阻塞的系統(tǒng)調(diào)用。

2 中斷管理模型

    2.1 中斷前-后段處理模型

  在前面嵌入式內(nèi)核中斷管理模式分析中,嵌入式內(nèi)核一般采用中斷統(tǒng)一接管思想,在中斷統(tǒng)一接管中調(diào)用用戶的中斷服務(wù)程序。中斷管理模式中的中斷處理部分又可以細(xì)化,如嵌入式Linux系統(tǒng)中關(guān)于中斷管理機(jī)制中提出了“前半部”和“后半部”的處理思想。其實(shí)這種中斷管理的思想把中斷處理部分按照重要性分兩部分,將必須要做的中斷處理部分歸為“前半部”,即這部分在中斷處理部分實(shí)施;而將中斷處理中可以延遲操作且影響不大的部分歸為“后半部”,這部分在退出中斷服務(wù)程序后實(shí)施。通過(guò)這樣的中斷管理思想減少的中斷服務(wù)時(shí)間,為其它外部事件的中斷響應(yīng)提供了更多的時(shí)機(jī)。在實(shí)時(shí)內(nèi)核中還有其它的中斷處理機(jī)制,它們的思想都是盡量減少中斷處理的時(shí)間。如在一些I/O處理部分,I/O操作所引起的中斷處理部分只做標(biāo)記功能,即只設(shè)一個(gè)標(biāo)志或者發(fā)一個(gè)消息說(shuō)明外部中斷來(lái)了,而具體的I/O傳輸操作放在中斷外部實(shí)施。根據(jù)上面的分析,將前面的中斷處理思想歸結(jié)為:中斷“前-后”段處理模型,其模型如圖4。

  在圖4中,“中斷前部”主要完成外部事件發(fā)生中斷請(qǐng)求時(shí),系統(tǒng)對(duì)其響應(yīng)所完成的必要功能,如中斷現(xiàn)場(chǎng)保護(hù)、數(shù)據(jù)預(yù)取和預(yù)放等;“置標(biāo)”部分主要通知某個(gè)任務(wù)或者線程已有一個(gè)中斷發(fā)生,且中斷的前部已完成;“中斷后部”并不是在中斷服務(wù)程序里執(zhí)行,而是由接收到標(biāo)記或者通知的任務(wù)或者線程來(lái)完成的,主要是完成本應(yīng)在中斷服務(wù)里完成的后繼工作。舉個(gè)例子,當(dāng)網(wǎng)絡(luò)接口卡報(bào)告新的數(shù)據(jù)包到達(dá)時(shí),“中斷前部”主要將數(shù)據(jù)包送到協(xié)議層;“中斷后部”完成對(duì)數(shù)據(jù)包的具體處理。

  在此“中斷前-后段處理模型”中,應(yīng)該注意兩個(gè)方面:

 ?、?如何劃分“中斷前部”和“中斷后部”。基本的劃分標(biāo)準(zhǔn)是,應(yīng)該立即處理的和必要的功能部分放在“中斷前部”完成,可以推遲處理或者可以在中斷外處理的功能部分放在“中斷后部”完成。

 ?、凇爸袛嗪蟛俊焙螘r(shí)執(zhí)行,取決于用于完成“中斷后部”功能的任務(wù)或者線程的優(yōu)先級(jí)。如果要讓中斷的后繼部分較快地執(zhí)行,則可以通過(guò)提高獲得標(biāo)記的任務(wù)或者線程的優(yōu)先級(jí)。從極限角度思維,當(dāng)獲得標(biāo)記的任務(wù)或者優(yōu)先級(jí)很高時(shí),在“中斷前部”完成退出中斷后,立即就執(zhí)行獲得標(biāo)記的任務(wù)或者線程,這相當(dāng)于獲得標(biāo)記的任務(wù)或者線程執(zhí)行部分就在中斷里執(zhí)行。如果中斷的后繼部分并不要求較快的執(zhí)行,則可以賦給獲得標(biāo)記的任務(wù)或者線程為普通的優(yōu)先級(jí)。

2.2 單向量多中斷處理映射技術(shù)

(1)問(wèn)題的提出

  在前面的嵌入式內(nèi)核中斷管理模式圖中,中斷向量表部分也屬于模式圖的一部分,不同嵌入式處理器體系中斷向量的支持也不同。在PowerPC 8xx 系列的處理器中,所有外部中斷對(duì)應(yīng)的向量都是0x500。為了處理這種多個(gè)外部中斷共用一個(gè)向量的情況,本節(jié)提出了單向量多中斷處理技術(shù)。此技術(shù)的思想如下:

  當(dāng)外設(shè)中斷觸發(fā)時(shí),首先定位到實(shí)向量位置,調(diào)用中斷統(tǒng)一接口函數(shù),中斷統(tǒng)一接口函數(shù)對(duì)外設(shè)中斷觸發(fā)的參數(shù)進(jìn)行測(cè)試,尋找到其對(duì)應(yīng)的虛向量,從而觸發(fā)虛向量處的回調(diào)函數(shù),從而實(shí)現(xiàn)多個(gè)外部中斷通過(guò)同一的實(shí)向量到多個(gè)虛向量的映射,解決了單向量多中斷處理的問(wèn)題。

  單向量多中斷處理映射技術(shù)的示意圖如圖5。

  在上面的單向量多中斷處理映射圖中,V表示多個(gè)外設(shè)共享的中斷請(qǐng)求向量號(hào),V1,V2,…,Vn-1,Vn表示不同外設(shè)對(duì)應(yīng)的虛向量號(hào);Fi表示與Vi對(duì)應(yīng)的回調(diào)函數(shù)(i=1…n)。

    (2)實(shí)現(xiàn)方法

  基于前面的分析,將單向量多中斷處理映射技術(shù)運(yùn)用于Delta OS 移植到PowerPC MPC860平臺(tái)上。PowerPC MPC860處理器的外部中斷向量號(hào)為0x500。在單向量多中斷處理模型圖中,V=0x500。設(shè)有n個(gè)外部設(shè)備分別為D1,D2,D3,…,Dn,這些外部設(shè)備中斷觸發(fā)時(shí)的中斷標(biāo)志分別為 PPC_D1,PPC_D2,PPC_D3,…,PPC_Dn;Delta OS 內(nèi)核為這些外部設(shè)備分配的虛向量號(hào)分別為V_D1,V_D2,V_D3,…,V_Dn,在實(shí)現(xiàn)中分別取值:0x2000、0x2100、0x2200等,即每個(gè)虛向量號(hào)間距256個(gè)字節(jié)。在Delta OS內(nèi)核中聲明了一個(gè)全局虛向量表_ISR_VECTOR_TABLE,通過(guò)系統(tǒng)調(diào)用delta_interrupt_catch,將用戶的中斷服務(wù)程序安裝到指定的虛向量號(hào)處。Delta OS 用統(tǒng)一的中斷接口函數(shù)_ISR_Handler 來(lái)處理外部中斷。在模型實(shí)現(xiàn)中有兩個(gè)重要的功能模塊:用戶中斷安裝模塊和中斷處理模塊。下面分別用偽代碼描述這兩個(gè)模塊的功能。

  用戶中斷安裝模塊delta_interrupt_catch 的偽代碼實(shí)現(xiàn)如下:

delta_interrupt_catch(vector, new_isr_handler,old_isr_handler){

① 檢查向量號(hào)的有效性

② 檢查新中斷服務(wù)程序的有效性

③ 保存舊的中斷服務(wù)程序指針

④ 安裝用戶指定的新中斷服務(wù)程序

_ISR_VECTOR_TALBE[vector]=new_isr_handler

}

外設(shè)中斷觸發(fā)時(shí),中斷處理模塊_ISR_Handler的偽代碼實(shí)現(xiàn)如下:

_ISR_Handler(void){

① 中斷現(xiàn)場(chǎng)的保護(hù)

② 中斷屏蔽位的設(shè)置

③ 外設(shè)中斷標(biāo)志的檢測(cè)

switch ( 標(biāo)志) {

case PPC_D1:

F1=_ISR_VECTOR_TABLE[V_D1]且執(zhí)行F1的功能

case PPC_D2:

F2=_ISR_VECTOR_TABLE[V_D2]且執(zhí)行F2的功能

case PPC_D3:

F3=_ISR_VECTOR_TABLE[V_D3]且執(zhí)行F3的功能

.

.

.

case PPC_Dn:

Fn=_ISR_VECTOR_TABLE[V_Dn]且執(zhí)行Fn的功能

default:

執(zhí)行系統(tǒng)默認(rèn)的中斷處理程序

}

④ 中斷屏蔽位的恢復(fù)

⑤ 根據(jù)調(diào)度標(biāo)志進(jìn)行調(diào)度

⑥ 中斷現(xiàn)場(chǎng)的恢復(fù)

}

圖5

  此技術(shù)已成功解決了PowerPC MPC860中單向量多中斷處理的問(wèn)題,而且其實(shí)現(xiàn)并不影響嵌入式內(nèi)核的體系,具有較好的移植性。

3 小 結(jié)

  本文主要研究了嵌入式實(shí)時(shí)系統(tǒng)中斷管理技術(shù),從硬件體系和系統(tǒng)管理兩方面闡述了影響中斷性能的因素,著重分析了嵌入式內(nèi)核中斷管理模式。在嵌入式內(nèi)核中斷管理中,歸結(jié)出“中斷前-后段處理”模型,并針對(duì)一些處理器的多中斷共用一個(gè)向量的問(wèn)題,引入了單向量多中斷處理的映射技術(shù),并給以實(shí)現(xiàn),對(duì)提高嵌入式實(shí)時(shí)系統(tǒng)的實(shí)時(shí)性提供了一定的參考價(jià)值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉