基於S5PV210的中斷和外部按鍵中斷

2021-08-13 23:11:14 字數 1574 閱讀 3948

基於s5pv210的中斷和外部按鍵中斷

--參考朱有鵬arm裸機課堂

1、什麼是中斷?

中斷的目的就是為了處理更加重要的事情和任務。

並行的處理事情,單核的cpu在微觀上是無法實現並行的,只能實現巨集觀的並行。

2、soc對中斷的實現機制:異常向量表;

為什麼cpu可以實現中斷?因為我們機器的執行都是按照位址的順序執行下去。

但是為什麼cpu可以實現中斷?主要是因為cpu可以執行間接定址的功能,

也就是可以通過指標的方式跳轉到別的地方繼續執行。

異常向量表是cpu中某些特定位址的特定定義,當中斷發生的時候,中斷想辦法

通知cpu去處理中斷,怎麼做到的,就是要靠異常向量表。

3、異常和中斷的區別和聯絡

(1)對於soc來說,發生復位、軟中斷、中斷、快速中斷、取指令異常、資料異常都是屬於異常

(2)異常的定義就是突發事件,打算了cpu的正常的工作,cpu就需要通過異常向量表中去執行程式。

(3)中斷是異常的一種,異常包含於中斷

4、異常向量表的程式設計處理

(1)s5pv210的異常向量表可以改變,以適應於作業系統的需求,

但是系統在剛剛啟動的時候,此時dram尚未初始化,程式都是在sram中執行。

210在iram中設定了異常向量表,供暫時使用。

iram中的異常向量表其實位址是0xd0037400 知道異常向量表的起始位址後,

各個異常對應的入口位址就知道了,因為他們的位址是靠在一起的。

5、函式名的實質是函式的首位址

(1)函式名在c語言中的理解方式和變數名其實沒有區別。

編譯器就把這個函式的函式體對應的**段和這個函式的函式名對應起來,

當我們使用這個函式名的時候,實際上就是可以呼叫這個函式體。

為什麼不直接把函式體繫結在需要的異常入口位址處?

因為異常的入口的地方不好規定一塊固定大小的值,只能提供乙個4位元組的

位置放置位址比較合適。

(2)函式名就是這個函式的函式指標。

(3)當我們將異常處理程式的首位址和異常向量表繫結好了之後,

異常的處理的初步階段就完成了。

6、為什麼中斷處理要在彙編中進行

(1)中斷處理要注意保護現場(中斷一般是從svc模式來的,則儲存svc模式下的必要暫存器的值)

和恢復現場(中斷處理完成後,準備返回svc模式前要將儲存在svc模式下的必要暫存器的值

恢復回去,不然到了svc模式後暫存器的值就亂了,svc模式下面原來進行的常規任務也會別你搞壞了)

(2)儲存現場包括:第一:在進入中斷時,設定irq棧,第二,儲存lr,儲存r0-r12

(3)為什麼要儲存lr暫存器?要考慮中斷返回的問題。

中斷返回時候最關鍵的兩個暫存器pc和cpsr。

和cpsr儲存起來,將來恢復的時候才可以將中斷返回位址給pc,將儲存的spsr返回去cpsr。

(4)中斷返回的位址就是儲存在lr暫存器中的,而cpsr(在發生中斷的時候)會自動的儲存在irq模式下面的spsr

S5PV210 裸機中斷

這裡我以外部中斷為例畫出了中斷響應的過程。當外部中斷得到響應,會由硬體自動轉到異常向量表,執行對應的異常處理程式。在這裡指的就是irq的處理程式。在異常處理程式irq handle中將會執行現場的保護與恢復,以及最重要的中斷處理函式 注意,這裡就來到了中斷處理部分,而不是異常處理了,相當於是乙個兩級...

S5PV210的中斷模式

異常向量表 1 異常向量表中各個向量的相對位置固定的,但是他們的起始位址時不固定的,各種soc可以不一樣,而且複雜arm中還可以讓使用者通過軟體來設定這個異常向量表的基位址。2 異常和中斷的區別和聯絡 針對soc來說,傳送復位,軟中斷,中斷,快速中斷,取指令異常,資料異常,我們統一叫異常,所以說 中...

s5pv210 中斷實戰

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