1、什麼是中斷
(1)中斷的發明是用來解決巨集觀上的並行需要的。巨集觀就是從整體上來看,並行就是多件事情都完成了。
(2)微觀上的並行,就是指的真正的並行,就是精確到每一秒或每一刻,多個事情都是在同時進行的。巨集觀上面的並行不等於微觀上的並行,有時候巨集觀上是並行的,微觀上是序列的。
(3)例子中乙個人在看電影,快遞來了暫停電影跑去收快遞,收完快遞繼續回來看電影,這個例子就是巨集觀上的並行和微觀上的序列。例子中乙個人等同於soc中1個cpu(也就是單核cpu),這個cpu看電影就不能收快遞,收快遞就不能看電影(也就不能真正的並行去同時做兩件或多件事)。單核cpu在微觀角度是序列的,但是因為cpu速度很快,所以巨集觀上看來是並行的。
(4)上例中大部分時間在看電影,中間少量時間去收快遞,那麼模擬cpu來說,看電影就是cpu的常規任務,而收快遞則應該是中斷例程。也就是說cpu平時一直在執行看電影的任務,等快遞來了(中斷發生了)快遞員(類似於中斷源)會打**叫人去收快遞(中斷源會觸發中斷通知cpu去處理中斷),人收到**(cpu收到中斷訊號)會暫停電影(cpu儲存常規任務的現場)跑去收快遞(cpu去執行中斷處理程式isr處理中斷),收完快遞(執行完isr)回來繼續看電影(cpu恢復常規任務的現場,繼續執行常規任務)。
(5)為什麼需要中斷?因為單核cpu實際無法並行的,但是通過中斷機制,可以實現假並行(巨集觀上的並行,微觀上實際還是序列)
2、soc對中斷的實現機制:異常向量表
(1)異常向量表是cpu中某些特定位址的特定定義。當中斷發生的時候,中斷要想辦法通知cpu去處理中斷,怎麼做到?這就得靠異常向量表。
(2)在cpu設計時,就事先定義了cpu中一些特定位址作為特定異常的入口位址(譬如定義0x00000000位址為復位異常向量位址,則發生復位異常時cpu會自動跳轉到0x00000000位址去執行指令。又譬如外部中斷對應的異常向量位址為0x30000008,則發生外部中斷後,cpu會硬體自動跳轉到0x30000008位址去執行指令。)
(3)以上講的是cpu硬體設計時對異常向量表的支援, 下來需要軟體的支援了。硬體已經決定了發生什麼異常cpu自動跳轉pc到哪個位址去執行,軟體需要做的就是把處理這個異常的**的首位址填入這個異常向量位址。
3、s5pv210的異常向量表
(1)異常向量表中各個向量的相對位置是固定的,但是他們的起始位址是不固定的,各種soc可以不一樣,而且複雜arm中還可以讓使用者來軟體設定這個異常向量表的基位址。
(2)擴充套件到所有架構的cpu中:所有架構(譬如51微控制器,pic微控制器)的cpu實現中斷都是通過異常向量表實現的,這個機制是不變的;但是不同cpu異常向量表的構造和位置是不同的(就是向量的數量,位址是多少,在那裡放)。
4、異常和中斷的區別和聯絡
(1)針對soc來說,發生復位、軟中斷、中斷、快速中斷、取指令中斷、資料異常等。我們都統一叫異常。所以說:中斷其實是異常的一種。
(2)異常的定義就是突發事件,打斷了cpu的正常常規業務,cpu不得不跳轉到異常向量表中去執行異常處理程式;中斷是異常的一種,一般特指soc內的內部外設產生的打斷soc常規業務,或者外部中斷(soc的gpio引腳傳回來的中斷)。
arm具有7種異常,分別為:
1、復位
2、未定義指令
3、軟中斷
4、預取指令終止
5、資料終止
6、中斷請求(irq)
7、快速中斷請求(fiq)
S5PV210 裸機中斷
這裡我以外部中斷為例畫出了中斷響應的過程。當外部中斷得到響應,會由硬體自動轉到異常向量表,執行對應的異常處理程式。在這裡指的就是irq的處理程式。在異常處理程式irq handle中將會執行現場的保護與恢復,以及最重要的中斷處理函式 注意,這裡就來到了中斷處理部分,而不是異常處理了,相當於是乙個兩級...
S5PV210的中斷模式
異常向量表 1 異常向量表中各個向量的相對位置固定的,但是他們的起始位址時不固定的,各種soc可以不一樣,而且複雜arm中還可以讓使用者通過軟體來設定這個異常向量表的基位址。2 異常和中斷的區別和聯絡 針對soc來說,傳送復位,軟中斷,中斷,快速中斷,取指令異常,資料異常,我們統一叫異常,所以說 中...
s5pv210 中斷系統相關介紹
參考資料 1 異常向量表是cpu中某些特定位址的特定定義。當中斷發生的時候,中斷要想辦法通知cpu去處理中斷,怎麼做到?依靠異常向量表。2 在cpu設計時,事先定義了cpu中一些特定位址作為特定異常的入口位址。3 以上講的是cpu硬體設計時對異常向量表的支援,下來就需要軟體支援了。1 對soc來說,...