arm中斷分析

中斷向量表

在跑裸機程序時候在程序的開始位置放置就是中斷向量表

0x0   復位

0X4  Undef

0x8  SWI

.

.

.

0X18 外部中斷請求 IRQ

0x1c 快速中斷請求  FIQ

這些中斷的實現都是在UBOOT或者是bootloder的代碼裏面實現的

 

進入到內核操作系統之後 內核或從新再建立一箇中斷向量表,當然地址也可以自己配置可以是從0開始也可以不是

主要是在trap_init()函數裏面實現,他是把處理中斷的函數拷貝到對應位置,當中斷出現的時跳轉到對應位置去處理

當然中斷的處理大概有如下幾個步驟:

1 中斷髮生

2 cpu發生中斷跳到異常處理函數如後

3  保存被中斷的現場

     執行中斷處理函數

     恢復

大致就是這樣,本文重點是:中斷向量表是由bootloader 和kernel各自提供,以及放置的位置。當然對中斷分類有所瞭解,一般在寫程序用到的中斷是SWI或者是IQR,對應IRQ中斷如何添加IRQ中斷的處理函數也是常用到的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章