電子工程網
標題: ARM異常處理小結 [打印本頁]
作者: crcrwxy 時間: 2014-3-13 14:46
標題: ARM異常處理小結
異常就是正在執行的指令,由于各種軟件或硬件故障被打斷,比如,在讀數據或指令時,訪問存儲器失敗、產生了一個外部硬件中斷等。當這些情況發生時,在ARM系統里,由異常和中斷處理程序做出相應的處理,當處理完成后,要返回到被中止的指令,使被中止的指令能夠繼續正常執行下去。因此,確定異常和中斷處理程序的返回地址是一個非常重要的問題。
下面是中斷異常入口、返回指令、返回地址的一個表,ARM R14_x 是發生中斷時保存到R14的返回地址,pc指的是發生了中斷的那條指令的地址。
異常或入口
| 返回指令
| ARM R14_x
|
BL
| MOV PC,R14
| PC+4
|
SWI
| MOVS PC,R14_svc
| PC+4
|
未定義的指令
| MOVS PC,R14_und
| PC+4
|
預取指中止
| SUBS PC,R14_abt,#4
| PC+4
|
快中斷
| SUBS PC,R14_fiq,#4
| PC+4
|
中斷
| SUBS PC,R14_irq,#4
| PC+4
|
數據中止
| SUBS PC,R14_abt,#8
| PC+8
|
中斷處理
當外部中斷IRQ和FIQ(Fast Interrpt Request,快速中斷請求)發生時,ARM核完成一部分工作。當然,這些工作是任何異常發生時都必須要做的,所以ARM處理器就會自動帶我們完成。其它重要的工作,必須由程序員來完成。ARM處理器處理的事包括從用戶模式切換到IRQ模式、狀態寄存器值的變化及跳轉。比如說,處理器自動跳轉到從0x0地址開始的異常中斷向量表的0x18處,在向量表的0x18處,最簡單的指令為”B HandlerIRQ”。
那程序員所要關心的就是實現具體的異常處理程序(HandlerIRQ)。當用ARM匯編語言實現HandlerIRQ函數的時候,如何確定HandlerIRQ函數正確地返回地址,使被中止的指令能夠繼續正常執行下去。
比較常用的中斷處理程序結構如下:
HandlerIRQ ;中斷響應,從向量表直接跳來
SUB R14,R14,#4 ;計算返回地址
STMFD R13,{R0-R3,R14} ;保護現場,一般只需要保護{R0-R3,LR}
BL irqHandler ;跳到具體的異常處理函數
LDMFD R13,{R0-R3,PC}^ ;恢復現場
有程序可以看出,通過”SUB R14,R14,#4”計算中斷函數的返回地址。那有人一定會問,為什么計算返回地址的時候要減去4呢?
地址 指令
0x100 MOV R0,#0x00
0x104 MOV R0,#0x00
0x108 MOV R1,#0x01
0x10C MOV R2,#0x02
看上個代碼片段,比如在執行地址為0x104的MOV指令時,突然來了一個IRQ中斷,這個中斷打斷了MOV指令的執行,這個時候就要去跳轉到異常處理函數,之后還要返回0x104地址重新執行MOV指令。當中斷發生時,LR里面保存了用戶模式下PC的值,那么當執行地址為0x104的MOV指令時,PC的值應該是0x10C,前面介紹過,當發生跳轉時,處理器會對LR進行一個自動的更新動作:LR=LR-0x4,這樣LR里面的地址是0x10C-0x04=0x108。但是0x108并不是我們要的地址,因為中斷發生在地址為0x104的MOV指令執行的時候,所以中斷處理完后應該返回這個地址。這就是在計算返回地址的時候LR減去4的原因。對于FIQ中斷和預取指中止異常,計算返回地址方法和IRQ相同。
作者: Hugo801122 時間: 2014-3-14 02:52
總結得不錯,贊!
作者: spy007868 時間: 2014-3-16 08:57
復制下來!!!!!!!我自己好好學習!!!!!!!!!!!!
-
謝謝.jpg
(8.65 KB)
下載附件
2014-3-16 08:56 上傳
歡迎光臨 電子工程網 (http://m.qingdxww.cn/) |
Powered by Discuz! X3.4 |
主站蜘蛛池模板:
欧美激情视频一区二区免费
|
蜜臀91|
国产yw855.c免费观看网站
|
国产在线视频自拍
|
日本黄色网站在线观看
|
久久久精品久久久久久
|
欧美日韩国产一区二区三区
|
成人午夜视频在线播放
|
欧美成在线播放
|
欧美区亚洲区
|
欧美视频免费
|
四虎黄色网址
|
久久久久国产成人精品亚洲午夜
|
毛片免费观看网站
|
一二三四在线视频社区8
|
国产午夜免费不卡精品理论片
|
91免费公开视频
|
亚洲一区高清
|
亚洲视频二|
青青操青青
|
久久久久久久久久免费视频
|
性福宝丝瓜视频下载
|
青青草国产精品视频
|
2021国产麻豆剧传媒剧情最新
|
免费韩国美女爽快一级毛片
|
91视频青青草
|
色综合久久88色综合天天
|
操久久|
幸福宝8008app隐藏入口
|
韩国一级性生活片
|
成人看片黄a在线看
|
精品91在线
|
亚洲一区在线免费
|
欧美黄色免费
|
日韩高清在线不卡
|
就操在线
|
成人窝窝午夜看片
|
日本在线一区
|
亚欧视频在线观看
|
日韩精品视频免费观看
|
夜夜艹天天干
|