關於S5PV210中斷的問題

2021-08-08 15:26:05 字數 1793 閱讀 1864

1、異常向量表:

(1)所有的cpu都有異常向量表,是cpu設計是就設定好的,是硬體範疇。

(2)包括但不只是中斷。中斷只是其中的一種(isr和fiq)異常機制,還有其他的(資料異常、軟體中斷、未定義指令、重置)

(3)s5pv210 的異常向量表可以改變(在 cp15 協處理器中),以適應作業系統的需求。但是目前系

統剛啟動時,此時 dram 尚未初始化,程式都在 sram 中執行。 210 在 iram 中設定了異常向量

表,供暫時性使用。(不懂)

2、中斷

(1)關於中斷的執行過程:首先,由使用者產生乙個中斷;第一,異常向量表的跳轉;第二,進入異常處理部分

(2)異常向量表跳轉需要軟體執行三個步驟:儲存/恢復現場,跳轉真正的異常處理程式處。保護現場關鍵是儲存:中斷處理程式的返回位址, r0-r12(cpsr 是自動儲存的);恢復現場主要是恢復:r0-r12, pc, cpsr。

(3)異常處理分為兩步。第一,找到具體的中斷。在s5pv210中,一共有四個中斷暫存器,每個中斷都對應其中乙個暫存器中的乙個位;第二,找到這個中斷對應的中斷程式(isr_handler)。在s5pv210中,先由vicnvectaddr0—31這些暫存器把中斷程式的函式名(函式的首位址)儲存在相對應的暫存器當中,當發生中斷時,由硬體自動把vicnvectaddr0—31暫存器中發生中斷的那個暫存器裡面的值(函式首位址)放入到vicnaddr暫存器當中,軟體只需要讀vicnaddr暫存器中的位址,到相應位置執行程式即可。第一步和第二步是兩個暫存器,所以要分開來寫。

(4)關於異常處理部分,以我現在的理解,異常處理程式isr_handler是乙個大程式,大集合,所有的中斷程式都寫在這裡面,所以才會有第二過程一說,要不然,在第乙個過程中,在cpu發現中斷,到異常向量表跳轉,這時pc已經在isr暫存器中。補充:上面這麼理解是正確的,但是在實際操作中,可以使用一種方法(指標函式),在知道是哪個vicnaddress暫存器發生中斷後,使指標跳轉到需要相應的函式當中。

3、中斷各個暫存器的作用:

(1)vicnirqstatus和vic0fiqstatus:中斷狀態暫存器,唯讀,當發生中斷時,由硬體自動置1。

(2)vicnintselect:中斷選擇暫存器,0:irq interrupt;1:fiq interrupt。

(3)vicnintenable和vicnintenclear:中斷使能/失能暫存器。

(4)vicnvectaddr0~vicnvectaddr31:這些暫存器用來儲存每個中斷源中的函式名(第二階段的第二步)。

(5)vicnvecpriority0~vicnvecpriority31:中斷優先順序暫存器。

(6)vicnaddress:唯讀,當發生中斷時,硬體自動把中斷程式的首位址放在這裡。

4、整個中斷的流程分為兩部分:

(1)初始化部分:

a、繫結第一階段的異常向量表。

b、失能所有中斷,選擇中斷方式為isq,清空vicnaddress暫存器。

c、開啟需要使用的中斷,並將函式名繫結vicnvectaddrn暫存器。

(2)中斷處理部分:

a、經過異常向量錶跳轉入 irq/fiq 的入口。

b、做中斷現場保護(在 start.s 中),然後跳入 isr_handler。

c、在 isr_handler 中先去搞清楚是哪個 vic 中斷了,然後直接去這個 vic 的 addr暫存器中取 isr 來執行即可。

d、isr 執行完,中斷現場恢復,直接返回繼續做常規任務。

irq:中斷請求

isr:中斷處理程式

s5pv210 中斷實戰

以下內容源於部落格的學習,以及朱有鵬老師課程的學習,和網路資源的整理。1 建立異常向量表 2 中斷初始化 3 使能 如外部中斷,寫中斷處理函式 4 建立中斷號與中斷處理函式的聯絡,使能。當中斷發生時,中斷處理函式會自動處理中斷 流程如下圖 下面按上述步驟編寫 內容細節見部落格 s5pv210 裸機 ...

S5PV210中斷處理

start 1 設定棧空間 防止之前的uboot 被覆蓋,應為c中需要棧空間 mov r0,0x53 msr cpsr cxsf,r0 b main main函式 1 led燈引腳功能設定 gpj2con 0xf 0 gpj2con 1 0 2 中斷初始化 2 1 註冊中斷函式 功能函式 start...

s5pv210 中斷系統相關介紹

參考資料 1 異常向量表是cpu中某些特定位址的特定定義。當中斷發生的時候,中斷要想辦法通知cpu去處理中斷,怎麼做到?依靠異常向量表。2 在cpu設計時,事先定義了cpu中一些特定位址作為特定異常的入口位址。3 以上講的是cpu硬體設計時對異常向量表的支援,下來就需要軟體支援了。1 對soc來說,...