ARM arm異常中斷處理知識點

2022-05-06 18:06:07 字數 2385 閱讀 7306

arm處理器7種型別異常

按優先順序從高到低的排列如下:

復位異常(reset)

資料異常(date abort)

快速中斷異常(fiq)

外部中斷異常(irq)

預取異常(prefetch abort)

軟體中斷異常(swi)

未定義指令異常(underfined instruction)

當異常發生時

處理器會把pc設定為乙個特定的儲存器位址。

這一位址放在被稱為向量表(vector table)的特定位址範圍內。

向量表的入口是一些跳轉指令,跳轉到專門處理某個異常或中斷的子程式。

當異常發生時,分組暫存器r14和spsr用於儲存處理器狀態。

arm異常處理器模式

每一種異常都會導致核心進入一種特定的模式。

使用者和系統模式是僅有的不可通過異常進入的兩種模式,也就是說,要進入這兩種模式,必須通過程式設計改變cpsr。

fiq和irq異常中斷

arm核心只有兩個外部中斷輸入訊號nfiq和nirq。但對於乙個系統來說,中斷源可有多達幾十個。

為此,在系統整合的時候,一般都會有乙個異常控制器來處理異常訊號。

這時候使用者程式可能存在多個irq/fiq的中斷處理函式。為了使從向量表開始的跳轉始終能夠找到正確的處理函式入口,需要設定一套處理機制和方法。

多數情況下是由軟體來處理異常分支的,因為軟體可以通過讀取中斷控制器來獲得中斷源的資訊。

s3c2410x中斷控制

1)程式狀態暫存器的f位和i位。如果cpsr程式狀態暫存器的f位被設定為1,那麼cpu將不接受來自中斷控制器的fiq;如果cpsr程式狀態暫存器的i位被設定為1,那麼cpu將不接受來自中斷控制器的irq。因此,為了使能fiq和irq,必須先將cpsr程式狀態暫存器的f位和i位清零,並且中斷遮蔽暫存器intmsk中相應的位也要清零。

2)中斷模式(intmod)

arm920t提供了兩種中斷模式,即fiq模式和irq模式。

所有的中斷源在中斷請求時都要確定使用了哪一種中斷模式

3)中斷掛起暫存器(intpnd)

s3c2410x有兩個中斷掛起暫存器:源中斷掛起暫存器(srcpnd)中斷掛起暫存器(intpnd),用於指示對應的中斷是否被啟用。

當中斷源請求中斷的時候,srcpnd暫存器的相應位被置為1,同時intpnd暫存器中也有唯一的一位在仲裁程式後被自動置1。

如果遮蔽位被設定為1,相應的srcpnd位會被置為1,但是intpnd暫存器不會有變化;

如果intpnd被置位,只要標誌i或標誌f一旦被清零,就會招待相應的中斷服務程式。

在中斷服務子程式中要先向srcpnd中的相應位寫1來清除掛起狀態,再用同樣的方法來清除intpnd的相應位的掛起狀態

4)中斷遮蔽暫存器(intmsk)

當intmsk暫存器的遮蔽位為1時,對應的中斷被禁止;當intmsk暫存器的遮蔽位為0時,則對應的中斷正常執行。

如果乙個中斷的遮蔽位為1,在該中斷發出請求時掛起位還是會被設定為1,但中斷請求都不被受理

s3c2410中斷控制暫存器

s3c2410x的中斷控制器有5個控制暫存器:

源掛起暫存器(srcpnd)、中斷模式暫存器(intmod)、中斷遮蔽暫存器(intmsk)、中斷優先權暫存器(priority)、中斷掛起暫存器(intpnd)。

中斷源發出的中斷請求首先被暫存器在中斷源掛起暫存器(srcpnd)中,intmod把中斷請求分為兩組:快速中斷請求(fiq)和中斷請求(irq),priority處理中斷的優先順序。

1)中斷模式控制器(intmod)

<注意>中斷控制暫存器中只有乙個中斷源可以被設定為fiq模式,因此只能在緊急情況下使用fiq。

2)中斷掛起暫存器(intpnd)

當中斷請求被響應的時候,相應的位會被設定為1。

在某一時刻只有乙個位能為1,因此在中斷服務子程式中可以通過判斷intpnd來判斷哪個中斷正在被響應。

在中斷服務子程式中必須在清零srcpnd中相應位後清零相應的中斷掛起位,清零方法和srcpnd相同

<注意>向inipnd等於「1」的位寫入「0」時,intpnd暫存器和intoffset暫存器會有無法預知的結果,因此,千萬不要向intpnd的「1」位寫入「0」。推薦方法是把intpnd的值重新寫入intpnd。

ARM arm異常中斷處理知識點

arm處理器7種型別異常 按優先順序從高到低的排列如下 復位異常 reset 資料異常 date abort 快速中斷異常 fiq 外部中斷異常 irq 預取異常 prefetch abort 軟體中斷異常 swi 未定義指令異常 underfined instruction 當異常發生時 處理器會...

ARM 異常中斷處理

在arm體系中,程式執行的流程有三種 要了解arm處理異常中斷的流程原理,就要先熟悉一下arm的工作模式與暫存器。如圖,arm有七種工作模式,大多數程式是工作在使用者模式usr下的,其他六種工作模式屬於特權模式,特權模式的存在是為了處理中斷 異常,或者訪問被保護的系統資源。不同模式之間的轉換可以通過...

中斷相關知識點

第乙個概念是把同步和非同步中斷分別稱為異常 exception 和中斷 interrupt 第二個概念是進一步的,對於中斷和異常,intel又再細分了很多類,將中斷分為可遮蔽中斷和不可遮蔽中斷 將異常分為故障 陷阱 異常中止和程式設計異常。中斷 又稱為非同步中斷,是其他硬體依照cpu時鐘訊號隨機產生...