DSP之中斷總結篇

2021-06-17 23:33:20 字數 2559 閱讀 2977

1 中斷概述

中斷定義:由硬體或軟體驅動的訊號,使dsp將當前的程式掛起,執行另乙個稱為中斷服務子程式(isr)的任務。

c55x支援32個isr。有些isr可以由軟體或硬體觸發,有些只能由軟體觸發。

當cpu同時收到多個硬體中斷請求時,cpu會按照預先定義的優先順序對它們做出響應和處理。

所有的軟體中斷都是不可遮蔽中斷

dsp處理中斷的步驟:

(1)接收中斷請求。軟體和硬體都要求dsp將當前程式掛起。

(2)響應中斷請求。cpu必須響應中斷。如果是可遮蔽中斷,響應必須滿足某些條件。如果是不可遮蔽中斷,則cpu立即響應。

(3)準備進入中斷服務子程式。

cpu要執行的主要任務有:

完成當前指令的執行,並沖掉流水線上還未解碼的指令

自動將某些必要的暫存器的值儲存到資料堆疊和系統堆疊

從使用者實現設定好的向量位址獲取中斷向量,該中斷向量指向中斷服務子程式

(4)執行中斷服務子程式。

cpu執行使用者編寫的isr。isr以一條中斷返回指令結束,自動恢復步驟(3)中自動儲存的暫存器值。

☼  注意:

外部中斷只能發生在cpu退出復位後的至少3個週期後,否則無效;

在硬體復位後,不論intm位的設定和暫存器ier0、ier1的值如何,所有的中斷都被禁止,直到通過軟體初始化堆疊後才開放中斷。

2  可遮蔽中斷

所有的可遮蔽中斷都是硬體中斷。

無論硬體何時請求乙個可遮蔽中斷,在乙個中斷標誌暫存器裡就有相應的中斷標誌置位。該標誌一旦置位,相應的中斷還必須使能,否則不會得到處理。

當cpu在實時硬體**模式下暫停時,只能處理時間臨界中斷。

可遮蔽中斷標準處理流程:

1. 向cpu傳送中斷請求。

2. 設定響應的ifr標誌。cpu檢測到乙個有效的可遮蔽中斷請求時,它設定並鎖上某個中斷標誌暫存器的響應標誌位,這個位保持鎖定,直到該中斷得到響應或者復位,才清楚

3. ier中斷使能?根據中斷使能暫存器是否使能,響應中斷。

4. intm = 0?全域性開放中斷,才響應

5. 跳轉到isr服務程式,

6. 執行isr服務程式

7, 返回。

3 不可遮蔽中斷

當cpu接收到乙個不可遮蔽中斷請求時,立即無條件響應,並很快跳轉到相應的中斷服務子程式(isr)

c55x的不可遮蔽中斷有:

硬體中斷/reset。如果引腳/reset為低電平,則觸發了乙個dsp硬體復位和乙個中斷(迫使執行復位isr)。

硬體中斷/nmi。如果引腳/nmi為低電平,則cpu必須執行相應的isr。 /nmi提供了一種通用的無條件中斷dsp的硬體方法。

軟體中斷。

4 按鍵中斷

按鍵中斷,屬於可遮蔽中斷,使用者自定義硬體中斷,當cpu響應按鍵後,檢查相關引腳中斷標記暫存器,若標誌位為1,則響應該中斷。同時,清除中斷標誌暫存器位.

5 c_int00

當c環境被初始化時,啟動程式禁止中斷。   如果系統使用中斷,必須處理有關的中斷使能或遮蔽。

中斷程式會執行任何其它函式執行的工作,包括訪問全域性變數、為區域性變數分配位址、呼叫其它函式。

需要處理任何特殊中斷遮蔽(通過ier0暫存器)。通過嵌入組合語言語句可以使能或禁止中斷,也可以修改ier0暫存器而不會破壞c環境或c指標。

中斷處理程式不能有引數,即使宣告了引數也會被忽略

中斷處理程式不能被普通c**呼叫。

為了將中斷程式和中斷聯絡起來,需要將分支程式放在合適的中斷向量中,通過.sect指令建立乙個簡單的分支指令表就可以實現此操作。

在組合語言中,需要在中斷程式名前加下劃線,如_c_int00。

分配堆疊到偶位址。

c_int00是系統復位中斷。當進入c_int00中斷時,執行時間堆疊並沒有被建立起來,因此不能為區域性變數分配位址,也不能在執行時間堆疊中儲存任何資訊。

通過interrupt關鍵字可以用c函式直接處理中斷。

interrupt關鍵字可以和定義為返回void並不含引數的函式一起使用。中斷函式體可以有區域性變數,可以自由使用堆疊。

c_int00是c程式入口。這個名字被儲存為系統重啟中斷。這個特殊的中斷程式初始化系統並呼叫了主函式。因為沒有呼叫者,所以c_int00不儲存任何暫存器。     例,

interrupt void isr()

中斷管理

基於dsp/bios管理中的硬體中斷,dsp/bios為中斷提供了乙個hwi排程程式,為isr完成必要的開頭和結尾部分。如果不使用,則在呼叫任何dsp/bios物件的api之前,必須呼叫hwi_enter和hwi_exit彙編巨集來完成isr的開頭和結束。實際上,dsp/bios提供的排程程式,就包括這兩個巨集。

為了正確響應硬體中斷,同時,也為了dsp/bios核心的穩定性,必須注意:

1 在乙個硬體中斷isr中,不要呼叫swi_disable和swi_enable。

2 在nmi(不可遮蔽)中斷中,不要呼叫硬體中斷使能/禁止函式。

3 當使用dsp/bios排程程式時,不要使用hwi_exit和hwi_enter彙編巨集

4 中斷中,可以開啟新中斷。

我們可以在中斷配置選項卡中,設定interrupt mask 來實現在dsp/bios排程程式執行前禁止某些中斷。

DSP中斷總結

c55x支援32個isr。有些isr可以由軟體或硬體觸發,有些只能由軟體觸發。當cpu同時收到多個硬體中斷請求時,cpu會按照預先定義的優先順序對它們做出響應和處理。2 響應中斷請求。cpu必須響應中斷。如果是可遮蔽中斷,響應必須滿足某些條件。如果是不可遮蔽中斷,則cpu立即響應。3 準備進入中斷服...

2440之中斷管理

中斷處理 中斷是嵌入式裡最重要的乙個概念。一般乙個系統對於乙個裝置要麼採用中斷方式,要麼採用輪詢方式 中斷方式可以有效地減少處理器負荷 但是如果大量採用中斷則有可能降低處理速度 因為中斷處理破壞了處理器的流水機制。複習下微機原理中中斷處理過程和中斷機制。2440中支援fiq 快速中斷 和irq 普通...

6410之中斷處理

中斷 在6410 arm體系中,有很多模組可以產生中斷,比如gpio,uart,ts等都可以產生。在這些模組和cpu之間還有乙個中斷控制器。這個中斷控制器就是用於協調這些模組和cpu之間的互動的。比如 gpio和uart同時發出中斷請求,那麼cpu來處理那個中斷呢?這就需要用到中斷控制器了。如下圖所...