ARM的中斷處理過程

來源:互聯網
上載者:User

1.  
首先就是知道
ARM
狀態下的通用寄存器和程式計數器,綠顏色的就是相應模式下的私人寄存器。
就是說程式一般運行在系統和使用者模式下,使用的是系統和使用者模式下的通用寄存器,當有異常發生時,比如
FIQ
,那麼系統將切換到
FIQ
模式下,相應的就會採用
FIQ
模式下的寄存器,其中綠顏色的就是只在
FIQ
模式下才會用到的寄存器。

2.  
在模式切換的過程中,要保護系統和使用者模式下的通用寄存器狀態,以便在異常處理完成之後程式能正常返回。因為
FIQ
模式下
R8-R14
為其私人寄存器,所以切換的過程中,系統和使用者模式下的通用寄存器的
R8-R14
就不用保護了,所以減少了對寄存器存取的需要,從而可以快速的進行
FIQ
處理,故稱為
FIQ

 

 



3.
異常處理的動作
。當然這都是核心自己乾的。以
FIQ
為例。
當系統進入

FIQ
模式時

第一,將原來執行程式的下一條指令地址儲存到
LR
中,就是將
R14
儲存到
R14_fiq
裡面。


第二,拷貝
CPSR

SPSR_fiq

第三,改變
CPSR
模式位的值,改到
FIQ
模式。
第四,改變
PC
值,將其指向異常處理向量所指的下一條指令。
離開異常處理的時候

第一,將
LR

R14_fiq
)賦給
PC

第二,將
SPSR

SPSR_fiq
)拷貝到
CPSR

第三,清除中斷禁止標誌(如果開始時置位了)。

 

 

 

 

4
.異常中斷向量



異常中斷的向量地址

地址
            
 

    異常中斷類型
            

入口時處理器的操作模式

0x00000000       
複位              
超級使用者

0x00000004       
未定義指令        
未定義

0x00000008       
軟體中斷          
超級使用者

0x0000000c       
中止(預取指)    
中止

0x00000010       
中止(資料)      
中止

0x00000014       
保留
                             

保留

0x00000018        I


RQ                                IRQ
0x0000001c        FIQ                               
FIQ

異常中斷優先順序

中斷                  

優先順序
複位
                                    

最高
資料異常
   

FIQ
IRQ

預取指異常中斷
未定義指令和軟體中斷
       

最低

5
.當發生

IRQ
中斷時

第一
,模式進入到
IRQ
裡面。
第二

PC
跳到
0x00000018
處運行。因為這是
IRQ
的中斷入口。
第三

通過
0x00000018

LDR  
PC, IRQ_ADDR
。跳轉到相應的中斷服務程式。這個裡面就有個確定哪個中斷源的問題了。那就有優先順序的問題了。每個中斷源會有自己的中斷服務程式。
第四
,得到中斷源有硬體實現和軟體處理兩種方式。比如
LPC21XX
的就是利用硬體方式,為了利用向量中斷控制器的優點,
IRQ
中斷向量入口處代碼做了修改,變成

        0x00000018

LDR 
PC, [PC, #-0xff0]

    這條指令從記憶體映射地址
0xfffff030
處獲得資料裝載到
PC
,這樣就能夠直接從硬體中獲得中斷源。這樣就減少了中斷延遲
。記得,三星的
S3C44B0
好象採用的是用軟體確定中斷源,因此要建立中斷向量表。好久不用了,記不清了。
第五
,得到中斷源,就知道要跳到哪個中斷服務程式去了。
    一般都是這麼定義的。
Timer0_Handler 
HANDLER  
Timer0
。這種格式是調用一種宏定義,目的是保護現場,跳到中斷服務程式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.