本文就CPU中斷響應(yīng)過程的九個步驟進行簡單講述,希望大家都能通過本文大致了解中斷響應(yīng)過程。
CPU響應(yīng)中斷,就是CPU要去執(zhí)行相應(yīng)的中斷服務(wù)程序,其響應(yīng)過程是CPU將現(xiàn)在執(zhí)行程序的指令地址壓入堆棧,跳轉(zhuǎn)到中斷服務(wù)程序入口地址,中斷服務(wù)程序的入口地址就是中斷向量,這個中斷向量用2個16位寄存器存放。入口地址是22位的,地址的低16位保存在該向量的低16位,地址的高16位則保存在它的高6位,更高的10位保留。
步驟一:任何一個PIE中斷組的外設(shè)或外部中斷產(chǎn)生中斷。如果外設(shè)模塊內(nèi)的中斷被使能,中斷請求將被送到PIE模塊。
步驟二:PIE模塊將識別出別的PIE中斷組x內(nèi)的y中斷(INTx.y)申請,然后相應(yīng)的PIE中斷標(biāo)志位被鎖存:PIEIFRx.y=1。
步驟三:PIE的中斷如要送到CPU需滿足下面兩個條件:
1.相應(yīng)的使能位必須被設(shè)置(PIEIERx.y=1)。
2.相應(yīng)的PIEACKx位必須被清除。
步驟四:如果滿足步驟三中的兩個條件,中斷請求將被送到CPU并且相應(yīng)的響應(yīng)寄存器位被置1(PIEACKx=1)。PIEACKx位將保持不變,除非為了使本組中的其他中斷向CPU發(fā)出申請而清除該位。
步驟五:CPU中斷標(biāo)志位被置位(CPUIFRx=1),表明產(chǎn)生一個CPU級的掛起中斷。
步驟六:如果CPU中斷被使能(CPUIERx=1,或DBGIERx=1),并且全局中斷使能(INTM=0),CPU將處理中斷INTx。
步驟七:CPU識別到中斷并且自動保存相關(guān)的中斷信息,清除使能寄存器(IER)位,設(shè)置INTM,清除EALLOW。CPU完成這些任務(wù)準(zhǔn)備執(zhí)行中斷服務(wù)程序。
步驟八:CPU從PIE中獲取響應(yīng)的中斷向量。
步驟九:對于復(fù)用中斷,PIE模塊用PIEIERx和PIEIFRx寄存器中的值確定響應(yīng)中斷的向量地址。有以下兩種情況:
1.在步驟四中若有更高優(yōu)先級的中斷產(chǎn)生,并使能了PIEIERx寄存器,且PIEIFRx的相應(yīng)位處于掛起狀態(tài),則首先響應(yīng)優(yōu)先級更高的中斷。
2.如果在本組內(nèi)沒有掛起的中斷被使能,PIE將響應(yīng)組內(nèi)優(yōu)先級最高的中斷,調(diào)轉(zhuǎn)地址使用INTx.1。這種操作相當(dāng)于處理器的TRAP或INT指令。
CPU進入中斷服務(wù)程序后,將清除PIEIFRx.y位。需要說明的是,PIEIERx寄存器用來確定中斷向量,在清除PIEIERx寄存器時必須注意。
以上就是CPU中斷響應(yīng)過程,講解的每一個步驟都是干貨,大家都弄清楚了嗎?更多關(guān)于“物聯(lián)網(wǎng)培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。