s5pv210 中斷系統相關介紹

2021-07-31 22:33:16 字數 3043 閱讀 3540

參考資料:

(1)異常向量表是cpu中某些特定位址的特定定義。當中斷發生的時候,中斷要想辦法通知cpu去處理中斷,怎麼做到?依靠異常向量表。

(2)在cpu設計時,事先定義了cpu中一些特定位址作為特定異常的入口位址

(3)以上講的是cpu硬體設計時對異常向量表的支援,下來就需要軟體支援了。

(1)對soc來說,發生復位、軟中斷、中斷、快速中斷、取指令異常、資料異常等,我們都統一叫異常。因此,中斷其實是異常的一種。

(2)異常的定義就是突發事件,打斷了cpu的正常常規業務,cpu不得不跳轉到異常向量表中去執行異常處理程式。

(1)編譯器把函式體對應的**段和這個函式的函式名(實質是符號)對應起來

(2)將異常處理程式的首位址和異常向量表繫結後,異常處理初步階段就完成了。

到目前可以保證相應異常發生後,硬體自動跳轉到對應異常向量表入口去執行時,可以執行到我們事先繫結的函式。

(1)中斷處理,需要保護現場和恢復現場

(2)儲存現場

(3)為什麼要儲存lr暫存器?

(4)恢復現場主要是恢復:r0-r12,pc,cpsr

(1)怎麼找到具體是哪個中斷?

(2)怎麼找到對應的isr?

評價:第乙個過程中使用子中斷搞成2級的很麻煩;第二個過程中計算中斷編號是個麻煩事,很耗費時間。而中斷處理的時間是很寶貴的(系統有乙個效能指標,叫實時性。實時性就是中斷發生到響應的時間,這個時間越短越好。)

(1)怎麼找到具體是哪個中斷?

(2)怎麼找到對應的isr?

(1)vicnintenable暫存器負責相應的中斷的使能,vicnintenclear暫存器負責相應的中斷的禁止。

(2)這裡的n=0,1,2,3共四個暫存器,每個暫存器都是32bit,每個bit對應乙個中斷源是否使能 。 

(3)例如下面的**

// 使能中斷

// 通過傳參的intnum來使能某個具體的中斷源,中斷號在int.h中定義,是物理中斷號

void intc_enable(unsigned long intnum)

// 初始化中斷控制器

(1)中斷狀態暫存器

(2)**示例

// 通過讀取vicnirqstatus暫存器,判斷其中哪個有一位為1,來得知哪個vic發生中斷了

unsigned long intc_getvicirqstatus(unsigned long ucontroller)

return 0;

}// 真正的中斷處理程式。意思就是說這裡只考慮中斷處理,不考慮保護/恢復現場

void irq_handler(void)

; int i=0;

void (*isr)(void) = null;

for(i=0; i<4; i++)

}(*isr)(); // 通過函式指標來呼叫函式

(1)這些暫存器和210中斷處理第二階段的第二階段有關。

(2)vicnvectaddr0~31這32個暫存器。

(3)**

// 繫結我們寫的isr到vicnvectaddr暫存器

// 繫結過之後我們就把isr位址交給硬體了,剩下的我們不用管了,硬體自己會處理

// 等發生相應中斷的時候,我們直接到相應的vicnaddr中去取isr位址即可。

// 引數:intnum是int.h定義的物理中斷號,handler是函式指標,就是我們寫的isr

// vic0vectaddr定義為vic0vectaddr0暫存器的位址,就相當於是vic0vectaddr0~31這個

// 陣列(這個陣列就是乙個函式指標陣列)的首位址,然後具體計算每乙個中斷的時候

// 只需要首位址+偏移量即可。

// 真正的中斷處理程式。意思就是說這裡只考慮中斷處理,不考慮保護/恢復現場

void irq_handler(void)

; int i=0;

void (*isr)(void) = null;

for(i=0; i<4; i++)

}(*isr)(); // 通過函式指標來呼叫函式

}

整個中斷過程可以分為兩部分

第一部分是我們為中斷響應而做的預備工作:

第二部分是當硬體產生中斷後如何自動執行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.設定 系統異常向量表 發生異常時,硬體自動跳轉到異常向量表,再由異常向量表中的函式位址跳轉到irq fiq handler 斷點保護 由svc irq fiq模式,設定中斷棧 斷點恢復,中斷返回 2 禁止所有中斷 以防開啟未定義的中斷,導致程式跑飛 3 reset中斷控制暫存器和中斷函式儲存暫存...