IRQ與FIQ的區別

一、對FIQ你必須進快處理中斷請求,並離開這個模式。編譯

 

二、IRQ能夠被FIQ所中斷,但FIQ不能被IRQ所中斷,在處理FIQ時必需要關閉中斷。請求

 

三、FIQ的優先級比IRQ高。程序

 

四、FIQ模式下,比IRQ模式多了幾個獨立的寄存器。時間

不要小看這幾個寄存器,ARM在編譯的時候,若是你FIQ中斷處理程序足夠用這幾個獨立的寄存器來運做,它就不會進行通用寄存器的壓棧,這樣也省了一些時間。系統

 

五、FIQ的中斷向量地址在0x0000001C,而IRQ的在0x00000018。(也有的在FFFF001C以及FFFF0018)

寫過完整彙編系統的都比較明白這點的差異,18只能放一條指令,爲了避免與1C處的FIQ衝突,這個地方只能跳轉,而FIQ不同,1C之後沒有任何中斷向量表了,這樣能夠直接在1C處放FIQ的中斷處理程序,因爲跳轉的範圍限制,至少少了一條跳轉指令。

 

六、IRQ和FIQ的響應延遲有區別

IRQ的響應並不及時,從Verilog仿真來看,IRQ會延遲幾個指令週期才跳轉到中斷向量處,看起來像是在等預取的指令執行完。FIQ的響應不清楚,也許比IRQ快。

相關文章
相關標籤/搜索