新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > μC/OSII下的ARM7中斷過(guò)程分析及優(yōu)化方法

μC/OSII下的ARM7中斷過(guò)程分析及優(yōu)化方法

作者: 時(shí)間:2012-04-25 來(lái)源:網(wǎng)絡(luò) 收藏

LDR R2, =OsEnterSum

;服務(wù)程序要退出,所以O(shè)sEnterSum=0

MOV R1, #0

STR R1, [R2]

MSR CPSR_c, #(NoInt | IRQ32Mode) ;切換回模式

LDMFD SP, {R3, SP, LR}^ ;恢復(fù)用戶狀態(tài)的R3、SP、LR

LDR R0, =OSTCBHighRdy

LDR R0, [R0]

LDR R1, =OSTCBCur

LDR R1, [R1]

CMP R0, R1

ADD SP, SP, #4*3

MSR SPSR_cxsf, R3

LDMEQFD SP!, {R0R3, R12, PC}^ ;不進(jìn)行任務(wù)切換

LDR PC, =OSIntCtxSw;進(jìn)行任務(wù)切換

MEND

END

通過(guò)對(duì)Handler宏的可知,用戶的C語(yǔ)言處理程序是在特權(quán)模式--系統(tǒng)模式下運(yùn)行的,并且CPU在執(zhí)行中斷服務(wù)程序時(shí)中斷都是關(guān)閉的,所以本系統(tǒng)采用的是最為簡(jiǎn)單的非嵌套中斷方式。這種方式的優(yōu)點(diǎn)是,上下文數(shù)據(jù)不會(huì)被任何順序的中斷所破壞;缺點(diǎn)是,在中斷服務(wù)程序執(zhí)行時(shí)不能根據(jù)中斷優(yōu)先級(jí)進(jìn)行中斷嵌套,延時(shí)時(shí)間長(zhǎng),只有當(dāng)一個(gè)ISR完全結(jié)束并退出中斷后才重新接受中斷,降低了系統(tǒng)的實(shí)時(shí)特性。為提高系統(tǒng)的實(shí)時(shí)性,需要對(duì)其中斷進(jìn)行。

3 中斷的

改寫(xiě)μ 內(nèi)核中 HANDLER 宏可以實(shí)現(xiàn)ARM的中斷嵌套,這樣做雖然提高了系統(tǒng)的實(shí)時(shí)性,但損害了系統(tǒng)運(yùn)行的穩(wěn)定性和可移植性。通過(guò)對(duì)中斷,下面給出一種編寫(xiě)中斷服務(wù)程序的模板,充分利用ISR執(zhí)行在特權(quán)模式--系統(tǒng)模式這一特點(diǎn)來(lái)實(shí)現(xiàn)中斷嵌套的條件。中斷服務(wù)程序模板如下:

void ISR(void){

OS_ENTER_CRITICAL();//在中斷服務(wù)程序中關(guān)中斷清中斷標(biāo)志;//防止沒(méi)有清中斷標(biāo)志使得中斷多次進(jìn)入關(guān)閉低優(yōu)先級(jí);//禁止低優(yōu)先級(jí)中斷

S_EXIT_CRITICAL();//在中斷服務(wù)程序中開(kāi)中斷用戶的C語(yǔ)言代碼;//進(jìn)行用戶在中斷中要做的工作

VICVectAddr=0;//將中斷服務(wù)程序的入口地址置0

}

由于Handler宏中已將LR、SPSR、返回地址和發(fā)生中斷前的堆棧指針等寄存器入棧保存,所以接下來(lái)要做的就只剩下開(kāi)關(guān)中斷的工作。由于在進(jìn)入C中斷處理程序之前進(jìn)入的是關(guān)中斷系統(tǒng)模式,所以必須在C語(yǔ)言中重新打開(kāi)中斷,而C語(yǔ)言是不能進(jìn)行寄存器操作的,因此必須調(diào)用軟中斷OS_EXIT_CRITICAL()重新打開(kāi)中斷。在開(kāi)中斷之前,要判斷將全局變量OsEnterSum減1后是否為0,所以必須在調(diào)用開(kāi)中斷之前調(diào)用軟中斷OS_ENTER_CRITICAL()將OsEnterSum變成1。在臨界區(qū)中可以進(jìn)行一些處理,如清中斷標(biāo)志、關(guān)低優(yōu)先級(jí)中斷等。進(jìn)行C語(yǔ)言中斷服務(wù)程序之后要將VICVectAddr置位為0,這是處理器核的要求必須進(jìn)行這樣的編寫(xiě),否則會(huì)導(dǎo)致一些錯(cuò)誤(如不能第2次進(jìn)入中斷等)。

結(jié)語(yǔ)

“μ+ ”是當(dāng)前嵌入式系統(tǒng)中廣泛應(yīng)用的一款平臺(tái),適合于復(fù)雜度不是很高的中小型嵌入式系統(tǒng)。本文在深入”μ+ ”中斷機(jī)制的基礎(chǔ)上,對(duì)IRQ中斷響應(yīng)機(jī)制進(jìn)行了改進(jìn),提出了方案。實(shí)驗(yàn)證明,此可以實(shí)現(xiàn)中斷的嵌套并且提高系統(tǒng)實(shí)時(shí)性,具有一定的應(yīng)用價(jià)值。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉