勵志

勵志人生知識庫

irq模式

IRQ模式ARM處理器的一種中斷處理模式。當一個低優先權(normal)中斷產生時,處理器會進入IRQ模式。在這種模式下,中斷處理程式通常只保存部分上下文,如R8到R12這幾個暫存器,然後退出中斷處理時程式要恢復這幾個暫存器。IRQ模式適用於常見的一般優先權中斷。

與IRQ模式對應的是FIQ模式,這是一種高優先權的中斷處理模式。FIQ模式提供了更多的banked暫存器,如R8到R14以及SPSR,使得在FIQ模式下,中斷處理程式在模式切換時不需要保存和恢復這些暫存器。這使得FIQ模式的中斷處理速度比IRQ模式快。

當一個高優先權(fast)中斷產生時,處理器會進入FIQ模式。在FIQ模式下,如果同時有FIQ和IRQ中斷產生,FIQ會先被處理。在Symbian系統中,當CPU處於FIQ模式處理FIQ中斷的過程中,預取指令異常、未定義指令異常、軟體中斷全被禁止,所有的中斷被禁止,因此FIQ會很快執行,不會被其他異常或者中斷打斷。

IRQ和FIQ的入口地址分別是0x18和0x1C,這主要是為了不與各自模式下的中斷處理程式衝突。在0x18處只能放一條指令,因此只能跳轉,而在0x1C處以後沒有任何中斷向量表了,這樣可以直接在0x1C處放FIQ的中斷處理程式,由於跳轉的範圍限制,至少少了一條跳轉指令。