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

查看: 3952|回復(fù): 2
打印 上一主題 下一主題

ARM異常處理小結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2014-3-13 14:46:38 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: ARM異常
異常就是正在執(zhí)行的指令,由于各種軟件或硬件故障被打斷,比如,在讀數(shù)據(jù)或指令時(shí),訪問(wèn)存儲(chǔ)器失敗、產(chǎn)生了一個(gè)外部硬件中斷等。當(dāng)這些情況發(fā)生時(shí),在ARM系統(tǒng)里,由異常和中斷處理程序做出相應(yīng)的處理,當(dāng)處理完成后,要返回到被中止的指令,使被中止的指令能夠繼續(xù)正常執(zhí)行下去。因此,確定異常和中斷處理程序的返回地址是一個(gè)非常重要的問(wèn)題。
下面是中斷異常入口、返回指令、返回地址的一個(gè)表,ARM R14_x 是發(fā)生中斷時(shí)保存到R14的返回地址,pc指的是發(fā)生了中斷的那條指令的地址。

異常或入口
返回指令
ARM R14_x
BL
MOV    PC,R14
PC+4
SWI
MOVS PC,R14_svc
PC+4
未定義的指令
MOVS PC,R14_und
PC+4
預(yù)取指中止
SUBS   PC,R14_abt,#4
PC+4
快中斷
SUBS   PC,R14_fiq,#4
PC+4
中斷
SUBS   PC,R14_irq,#4
PC+4
數(shù)據(jù)中止
SUBS   PC,R14_abt,#8
PC+8
中斷處理
當(dāng)外部中斷IRQFIQ(Fast Interrpt Request,快速中斷請(qǐng)求)發(fā)生時(shí),ARM核完成一部分工作。當(dāng)然,這些工作是任何異常發(fā)生時(shí)都必須要做的,所以ARM處理器就會(huì)自動(dòng)帶我們完成。其它重要的工作,必須由程序員來(lái)完成。ARM處理器處理的事包括從用戶模式切換到IRQ模式、狀態(tài)寄存器值的變化及跳轉(zhuǎn)。比如說(shuō),處理器自動(dòng)跳轉(zhuǎn)到從0x0地址開(kāi)始的異常中斷向量表的0x18處,在向量表的0x18處,最簡(jiǎn)單的指令為”B HandlerIRQ”
那程序員所要關(guān)心的就是實(shí)現(xiàn)具體的異常處理程序(HandlerIRQ)。當(dāng)用ARM匯編語(yǔ)言實(shí)現(xiàn)HandlerIRQ函數(shù)的時(shí)候,如何確定HandlerIRQ函數(shù)正確地返回地址,使被中止的指令能夠繼續(xù)正常執(zhí)行下去。
比較常用的中斷處理程序結(jié)構(gòu)如下:
HandlerIRQ ;中斷響應(yīng),從向量表直接跳來(lái)
SUB R14,R14,#4 ;計(jì)算返回地址
STMFD R13,{R0-R3,R14} ;保護(hù)現(xiàn)場(chǎng),一般只需要保護(hù){R0-R3,LR}
BL irqHandler ;跳到具體的異常處理函數(shù)
LDMFD R13,{R0-R3,PC}^ ;恢復(fù)現(xiàn)場(chǎng)
有程序可以看出,通過(guò)”SUB R14,R14,#4”計(jì)算中斷函數(shù)的返回地址。那有人一定會(huì)問(wèn),為什么計(jì)算返回地址的時(shí)候要減去4呢?
地址          指令
0x100      MOV R0,#0x00
0x104     MOV R0,#0x00
0x108     MOV R1,#0x01
0x10C     MOV R2,#0x02
看上個(gè)代碼片段,比如在執(zhí)行地址為0x104MOV指令時(shí),突然來(lái)了一個(gè)IRQ中斷,這個(gè)中斷打斷了MOV指令的執(zhí)行,這個(gè)時(shí)候就要去跳轉(zhuǎn)到異常處理函數(shù),之后還要返回0x104地址重新執(zhí)行MOV指令。當(dāng)中斷發(fā)生時(shí),LR里面保存了用戶模式下PC的值,那么當(dāng)執(zhí)行地址為0x104MOV指令時(shí),PC的值應(yīng)該是0x10C,前面介紹過(guò),當(dāng)發(fā)生跳轉(zhuǎn)時(shí),處理器會(huì)對(duì)LR進(jìn)行一個(gè)自動(dòng)的更新動(dòng)作:LR=LR-0x4,這樣LR里面的地址是0x10C-0x04=0x108。但是0x108并不是我們要的地址,因?yàn)橹袛喟l(fā)生在地址為0x104MOV指令執(zhí)行的時(shí)候,所以中斷處理完后應(yīng)該返回這個(gè)地址。這就是在計(jì)算返回地址的時(shí)候LR減去4的原因。對(duì)于FIQ中斷和預(yù)取指中止異常,計(jì)算返回地址方法和IRQ相同。
沙發(fā)
發(fā)表于 2014-3-14 02:52:37 | 只看該作者
總結(jié)得不錯(cuò),贊!
板凳
發(fā)表于 2014-3-16 08:57:07 | 只看該作者
復(fù)制下來(lái)!!!!!!!我自己好好學(xué)習(xí)!!!!!!!!!!!!

謝謝.jpg (8.65 KB)

謝謝.jpg

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一级特黄高清完整大片 | 欧美一区在线观看视频 | 国产三片高清在线观看 | 亚洲 欧美 中文 日韩欧美 | 亚洲欧美在线免费观看 | 中文字幕国产一区 | 欧美成人看片一区二区三区 | 99在线精品日韩一区免费国产 | 伊人久久综合热青草 | 天堂在线视频观看 | 国产精品一区二区三区久久 | 国产人成精品 | 美女隐私下部无遮挡免费视频 | 性夜影院午夜看片 | 久热精品视频在线播放 | 99热88| 日韩免费毛片视频 | 污视频18高清在线观看 | 4hu永久影院在线四虎 | 亚洲欧美在线不卡 | 天堂网在线www资源在线 | 精品入口麻豆 | 久久99视频精品 | 黄色成人一级片 | 亚洲青草视频 | 久久国内精品视频 | 亚洲韩国欧美一区二区三区 | 日本欧美一区二区三区高清 | 亚洲三级自拍 | 91综合在线视频 | 三级国产精品一区二区 | 妹子干综合网 | www.成年人| 日韩一级伦理片 | 日本h肉动漫在线观看免费 日本a中文字幕 | 91精品国产吴梦梦在线观看永久 | 色九九亚洲偷偷动态图 | 亚洲欧美在线视频观看 | 久热福利视频 | 精品国产福利一区二区在线 | 色www免费视频 |