ARM中斷處理及狀態機巢狀實現

2021-04-01 22:39:11 字數 2342 閱讀 9909

1.arm7提供兩種級別的中斷, fiq(fast interrupt request快中斷) 一般中斷低速反應中斷irq。

所有的中斷請求一旦產生則中斷反應會經過三個步驟

a.輸入階段這個邏輯可以根據中斷源被實現,需要0-2個時鐘週期

b.eic自身處理 2個時鐘週期

c.arm7的邏輯處理

2.eic enhanced interrupt controller增強型中斷控制器

eic硬體處理多路中斷,中斷優先運算和矢能。

a.32路可遮蔽的中斷,對映到arm 的cpu中斷請求匯流排

b.每路16級可程式設計優先順序對映irq

c.硬體支援最大16個中斷巢狀

d.2路可遮蔽的中斷通過fiq中斷請求匯流排

e.在0x18處的暫存器裝載的是最高優先及中斷使用者自定義的中斷處理位址

f.16個xti塊外部中斷

3.中斷處理過程

1.檢查相關中斷的請求遮蔽位

2.比較所有中斷請求的優先順序,irq當前中斷是否優先順序高於當前儲存的中斷。

3.自動裝載eic_sirn[31:16]位使用者自定義位址進入eic_ivr[15:0]中

4.手動裝載使用者中斷處理高16位位址進入eic_ivr[31:16]

5.當新產生乙個中斷則儲存先前的中斷優先順序進入優先棧中。

6.當新的中斷被接受則用新的優先順序更新當前中斷優先順序暫存器

eic_icr 中斷控制暫存器

31-2保留

1. fiq_en:rw是fiq允許的標誌位置1開啟置0關閉

0.irq_en:rw是irq允許的標誌位置1開啟置0關閉

eic_cicr 中斷頻道控制暫存器

31-5保留

4-0.cic[4:0]:r是當前中斷的序號,是第幾號中斷由中斷請求發生時硬體寫入

eic_cipr當前中斷優先順序暫存器

31-4保留

3-0 cip[3:0]:rw是當前中斷的優先順序,在irq匯流排上會自動探測進入的中斷請求優先順序

和當前的優先順序的高低。

eic_ivr 中斷向量暫存器

ivr[31-16]:irq使用者寫入的在程式初始化時,是中斷服務的高16位位址

ivr[15-0]:i在中斷請求接受後,從eic_sirn[31-16]的自定義服務程式位址拷貝過來

eic_fir

3-2fip[3:2] 是fiq的中斷頻道

1-0fie[1:0] 是fiq的中斷允許標誌位

eic_ier0中斷啟動暫存器

32為對應配置32路中斷的執行位

eic_iep0中斷啟動暫存器

32對應配置32路中斷的中斷掛靠位根據ier0中設定同步。

note:唯讀/寫零的暫存器,在退出中斷服務後isr,軟體要清除相應的掛靠位,

才能保證下次不繼續進入這個中斷,這個清除操作帶來乙個中斷結束中斷

並且保證有已經巢狀的中斷正常彈出,順利執行新的中斷。

這個中斷位要注意不能隨便清除如果清除了不是期望的中斷位的話,導致

巢狀堆疊永不恢復。

eic_sirn源中斷暫存器

siv[31-16]是自定義服務位址偏移

15-4保留

3-0優先順序 

f**: 有限狀態機制

f**分為兩種狀態ready和wait,這兩種狀態根據arm7tdmi的nirq匯流排探測出來

如果全域性中斷允許位irq_en標誌被清除,nirq無條件的的檢測為高.在reset的

時候f**=ready也就是nirq=high,當優先解碼確定了乙個新的中斷,f**=wait

並且nirq=low。如果要轉到就緒狀態必須強制讀eic_ivr暫存器內容即處理中

斷服務或者rest eic單元。讀eic_ivr暫存器改變狀態機狀態同時釋放eic的

nirq匯流排。

stack:堆疊

arm支援15個事件巢狀,巢狀的事件資訊均在需要的時候被壓入彈出堆疊。

事件的資訊包括 中斷頻道eic_cicr interrupt channel,中斷優先順序eic_cipr

interrupt priority.

當f**=wait即狀態機在等待狀態也就是解碼出乙個最高優先中斷源時,直接來讀取

eic_ivr暫存器會產生內部標誌,需要把eic_cicr eic_cipr入棧,當做完入棧工作

後才在第二時鐘週期讀取eic_ivr進行中斷服務,讀完後內部標誌清除即需要把當前

的eic_cicr eic_cipr給出棧。 然後更新當前中斷源和當前中斷優先暫存器。

當f**=ready的時候eic_ivr的訪問時候是不產生內部標誌來進行巢狀的。

在巢狀時當前中斷服務完成後必須清除相應標誌位(具體看eic_iep0介紹)

然後處理上乙個被壓棧的中斷。

python 狀態機教程 文字處理狀態機

狀態機是關於設計程式來控制應用程式中的流程。它是乙個有向圖,由一組節點和一組過渡函式組成。處理文字檔案通常包括順序讀取文字檔案的每個塊並執行某些操作以響應每個塊讀取。塊的含義取決於它之前存在的塊的型別以及它之後的塊。該機器是關於設計程式來控制應用程式中的流程。它是乙個有向圖,由一組節點和一組過渡函式...

OSPF的演算法及狀態機

open shortest path first spf演算法 圍繞該演算法計算路由資訊的協議open 指ietf發明的一種針對ip的路由協議 ospf的工作過程 建鄰居 傳資料 做計算 router id唯一標識乙個路由器,產生 ospf的建立鄰居方式 hello報文的作用 鏈路狀態資訊 不是資料...

BGP有限狀態機狀態及報文

bgp有限狀態機共有六種狀態,分別是idle connect active opensent openconfirm和established。在connect狀態下,bgp啟動連線重傳定時器 connect retry,預設為32秒 等待tcp完成連線。在active狀態下,bgp總是在試圖建立tc...