国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 3956|回復: 2
打印 上一主題 下一主題

ARM異常處理小結

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2014-3-13 14:46:38 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵詞: 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
中斷處理
當外部中斷IRQFIQ(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
看上個代碼片段,比如在執行地址為0x104MOV指令時,突然來了一個IRQ中斷,這個中斷打斷了MOV指令的執行,這個時候就要去跳轉到異常處理函數,之后還要返回0x104地址重新執行MOV指令。當中斷發生時,LR里面保存了用戶模式下PC的值,那么當執行地址為0x104MOV指令時,PC的值應該是0x10C,前面介紹過,當發生跳轉時,處理器會對LR進行一個自動的更新動作:LR=LR-0x4,這樣LR里面的地址是0x10C-0x04=0x108。但是0x108并不是我們要的地址,因為中斷發生在地址為0x104MOV指令執行的時候,所以中斷處理完后應該返回這個地址。這就是在計算返回地址的時候LR減去4的原因。對于FIQ中斷和預取指中止異常,計算返回地址方法和IRQ相同。
沙發
發表于 2014-3-14 02:52:37 | 只看該作者
總結得不錯,贊!
板凳
發表于 2014-3-16 08:57:07 | 只看該作者
復制下來!!!!!!!我自己好好學習!!!!!!!!!!!!

謝謝.jpg (8.65 KB)

謝謝.jpg
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲spank男男实践网站 | 国产精品高清视亚洲精品 | 精品无人区乱码在线观看 | 国产激情视频在线观看 | 在线性视频 | 色www永久免费网站国产 | 性生交大片免费一级 | 国内精品久久久久久99蜜桃 | 精品欧美一区二区三区在线观看 | 亚洲网站视频在线观看 | 亚洲第一免费网站 | 天天综合色天天综合 | 天堂bt在线 | 日本久久久久久中文字幕 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 韩国一级片在线播放 | 2021国内精品久久久久久影院 | 国产精品国产香蕉在线观看网 | 99日韩 | 国产一级特黄aa大片爽爽 | 丁香花五月婷婷 | 欧美伊人久久综合网 | xf在线a精品一区二区视频网站 | 99视频精品全部免费观看 | 自拍偷拍亚洲 | 久久精品欧美一区二区 | 欧美日韩不卡视频一区二区三区 | 国产三级在线观看视频 | 在线观看黄免费 | 国产精品视频网站 | 成人精品免费网站 | 性感美女被爆操 | 成人在线观看免费视频 | 国产成人啪一区二区 | 欧美福利大片 | 2021国产精品视频一区 | 特级一级毛片免费完整版视频 | 成人免费一级毛片在线播放视频 | 亚洲成人18 | 亚洲国内精品久久 | 亚洲一区不卡 |