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