06 異常中斷處理

06 異常中斷處理

ID:36185129

大?。?56.50 KB

頁數(shù):30頁

時(shí)間:2019-05-06

06 異常中斷處理_第1頁
06 異常中斷處理_第2頁
06 異常中斷處理_第3頁
06 異常中斷處理_第4頁
06 異常中斷處理_第5頁
資源描述:

《06 異常中斷處理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、嵌入式ARM系統(tǒng)原理與實(shí)例開發(fā)北京大學(xué)出版社 出版楊宗德 編著2007年7月12ARM中斷類型及處理方式ARM處理器中斷處理程序設(shè)計(jì)第6章ARM異常中斷處理及程序設(shè)計(jì)3SWI中斷處理原理及應(yīng)用程序開發(fā)異常的概念異常將導(dǎo)致處理器停止當(dāng)前事務(wù)處理,轉(zhuǎn)而處理一個(gè)突發(fā)事件(這個(gè)突發(fā)事件包括外部或者內(nèi)部引起的)。例如一個(gè)外部中斷或者試圖執(zhí)行一個(gè)未定義的指令。在處理異常之前,為了在異常處理完成后能夠很好的返回到中斷處理之前的狀態(tài),在編寫程序的時(shí)候有必要將處理器當(dāng)前的狀態(tài)保護(hù)起來,另外,在同一時(shí)刻有可能出現(xiàn)多個(gè)異常中斷請

2、求。9/19/20213北京大學(xué)出版社出版 楊宗德編著ARM異常類型9/19/20214北京大學(xué)出版社出版 楊宗德編著異常處理當(dāng)一個(gè)異常發(fā)生后,該異常模式下的R14和SPSR使用以下順序來保存當(dāng)前CPU的狀態(tài):R14_=returnlink//返回地址保存在該模式下R14SPSR_=CPSR//CPSR保存在該模式下的SPSR中CPSR[4:0]=exceptionmodenumber//切換處理器模式CPSR[5]=0//CPU處于ARM狀態(tài)

3、if==ResetorFIQthen//如果是復(fù)位或者FIQCPSR[6]=1//禁止FIQ請求CPSR[7]=1//禁止IRQ請求PC=exceptionvectoraddress//指向中斷處理程序向量地址從異常處理程序中返回時(shí),需要將CPSR中的CPU狀態(tài)恢復(fù),同時(shí)將R14數(shù)據(jù)傳輸給PC,可以采用以下兩種方式自動(dòng)完成:在使用數(shù)據(jù)處理指令時(shí)帶上S位,且PC寄存器做為目標(biāo)寄存器。使用多寄存器加載指令加載CPSR,如LDM。9/19/20215北京大學(xué)出版社出版 楊宗德編著R

4、eset異常及處理當(dāng)系統(tǒng)復(fù)位信號產(chǎn)生后,ARM處理器當(dāng)立即中斷當(dāng)前正在執(zhí)行的指令。進(jìn)入復(fù)位處理時(shí),處理器將進(jìn)行以下操作:R14_svc=UNPREDICTABLEvalue//R14_svc不可知SPSR_svc=UNPREDICTABLEvalue//SPSR_svc不可知CPSR[4:0]=0b10011//處理器進(jìn)入svc模式CPSR[5]=0//執(zhí)行ARM狀態(tài)CPSR[6]=1//禁止FIQCPSR[7]=1//禁止IRQifhighvectorsconfiguredthen//指向復(fù)位向量地址PC

5、=0xFFFF0000elsePC=0x00000000當(dāng)復(fù)位后,ARM處理器PC指針將立刻指向0x00000000或0xFFFF0000地址,禁止所有外部中斷,運(yùn)行于SVC模式。9/19/20216北京大學(xué)出版社出版 楊宗德編著未定義指令異常及處理當(dāng)試圖執(zhí)行一個(gè)ARM處理器及其協(xié)處理器都無法識別的指令時(shí)將產(chǎn)生一個(gè)未定義指令異常。在沒有實(shí)際硬件支持時(shí),未定義指令異??梢员挥脕磉M(jìn)行一個(gè)協(xié)處理器的軟件仿真,或者其它軟件仿真功能。9/19/20217北京大學(xué)出版社出版 楊宗德編著未定義指令異常處理步驟R14_un

6、d=addressofnextinstructionaftertheundefinedinstruction//R14_und為下一指令地址SPSR_und=CPSR//存儲(chǔ)CPSR狀態(tài)CPSR[4:0]=0b11011//進(jìn)入未定義模式CPSR[5]=0//執(zhí)行ARM執(zhí)行//CPSR[6]isunchanged,允許FIQCPSR[7]=1//禁止IRQifhighvectorsconfiguredthen//指向未定義中斷向量PC=0xFFFF0004elsePC=0x000000049/19/2021

7、8北京大學(xué)出版社出版 楊宗德編著軟中斷異常及處理軟中斷異常是由SWI指令產(chǎn)生的,其將進(jìn)入使CPU進(jìn)入SVC模式,執(zhí)行以下操作:R14_svc=addressofnextinstructionaftertheSWIinstruction//R14_svc指向SWI下一條要執(zhí)行指令SPSR_svc=CPSR//備份CPSRCPSR[4:0]=0b10011//進(jìn)入SVC模式CPSR[5]=0//執(zhí)行ARM狀態(tài)指令/*CPSR[6]isunchanged*/CPSR[7]=1//禁止IRQifhighvector

8、sconfiguredthen//進(jìn)入異常處理PC=0xFFFF0008elsePC=0x000000089/19/20219北京大學(xué)出版社出版 楊宗德編著預(yù)取指異常及處理存儲(chǔ)異常是由存儲(chǔ)系統(tǒng)產(chǎn)生的,當(dāng)試圖讀取一個(gè)不可用指令時(shí),將產(chǎn)生一個(gè)存儲(chǔ)器異常信號來標(biāo)識所取指指令不可用。當(dāng)試圖執(zhí)行該指令時(shí)將產(chǎn)生一個(gè)預(yù)取異常,如果該指令并沒有被執(zhí)行(例如在管理操作時(shí)執(zhí)行分支指令)則不會(huì)產(chǎn)生一個(gè)預(yù)取異常。在ARMv5及以上版本,

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。