
熟悉ARM學習的朋友一定知道,ARM運行時有著非常多的模式,中斷模式(IRQ)和快速中斷模式(FIQ)就是其中兩種。之所以特別提及到這兩種模式,是因為在入門階段,很多人對這兩種模式的區別并不了解。所以經常會造成兩種模式混淆的情況,本文將為大家介紹這兩種模式的區別,并簡單的進行比較。
在進行比較之前,首先對這兩種模式的概念進行介紹。IRQ(Interrupt Request)指中斷模式。FIQ(Fast Interrupt Request)指快速中斷模式。IRQ與FIQ是ARM處理器的兩種不同編程模式(ARM有7種處理模式)。
兩者的不同
1、在FIQ中,開發者必須進快處理中斷請求,并離開這個模式。
2、IRQ可以被FIQ所中斷,但FIQ不能被IRQ所中斷,在處理FIQ時必須要關閉中斷。
3、FIQ的優先級比IRQ高。
4、FIQ模式下,比IRQ模式多了幾個獨立的寄存器。不要小看這幾個寄存器,ARM在編譯的時候,如果FIQ中斷處理程序足夠用這幾個獨立的寄存器來運作,它就不會進行通用寄存器的壓棧,這樣也省了一些時間。
5、FIQ的中斷向量地址在0x0000001C,而IRQ的在0x00000018。(也有的在FFFF001C以及FFFF0018)寫過完整匯編系統的都比較明白這點的差別,18只能放一條指令,為了不與1C處的FIQ沖突,這個地方只能跳轉,而FIQ不一樣,1C以后沒有任何中斷向量表了,這樣可以直接在1C處放FIQ的中斷處理程序,由于跳轉的范圍限制,至少減少一條跳轉指令。
6、IRQ和FIQ的響應延遲有區別。IRQ的響應并不及時,從Verilog仿真來看,IRQ會延遲幾個指令周期才跳轉到中斷向量處,看起來像是在等預取的指令執行完。FIQ的響應不清楚,也許比IRQ快。
通過以上的介紹可以看到,ARM中斷模式與快速中斷模式有著本質上的不同。兩者在響應延遲上有所區別,并且快速中斷模式擁有比中斷模式更高的優先級,并且快速中斷模式能夠對中斷模式進行打斷,兩者的不同之處還有很多,希望大家在在閱讀過本文之后能夠有所收獲。
聲明:本內容為作者獨立觀點,不代表電源網。本網站原創內容,如需轉載,請注明出處;本網站轉載的內容(文章、圖片、視頻)等資料版權歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經濟損失,請電郵聯系我們,以便迅速采取適當處理措施;歡迎投稿,郵箱∶editor@netbroad.com。
微信關注 | ||
![]() |
技術專題 | 更多>> | |
![]() |
技術專題之EMC |
![]() |
技術專題之PCB |