第6章 arm異常中斷處理及程序設(shè)計

第6章 arm異常中斷處理及程序設(shè)計

ID:5908624

大小:160.00 KB

頁數(shù):27頁

時間:2017-11-13

第6章 arm異常中斷處理及程序設(shè)計_第1頁
第6章 arm異常中斷處理及程序設(shè)計_第2頁
第6章 arm異常中斷處理及程序設(shè)計_第3頁
第6章 arm異常中斷處理及程序設(shè)計_第4頁
第6章 arm異常中斷處理及程序設(shè)計_第5頁
資源描述:

《第6章 arm異常中斷處理及程序設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第6章ARM異常處理及程序設(shè)計異常(exception)由內(nèi)部或外部源產(chǎn)生以引起處理器處理一個事件。例如,外部中斷或試圖執(zhí)行未定義指令都會引起異常。在處理異常之前,處理器狀態(tài)必須保留(當前程序的狀態(tài)、位置、臨時數(shù)據(jù)),以便在異常處理程序完成后,原來的程序能夠重新執(zhí)行。同一時刻可能出現(xiàn)多個異常。ARM支持7種類型的異常。表6-1列出了異常的類型以及處理這些異常的處理器模式。異常出現(xiàn)后,強制從異常類型對應(yīng)的固定存儲器地址開始執(zhí)行程序。這些固定的地址稱為異常向量(ExceptionVectors)。6.1ARM異常類型及處理方式當異常出現(xiàn)

2、時,異常模式分組的R14和SPSR用于保存當前程序的位置和狀態(tài),即R14_=returnlinkSPSR_=CPSRCPSR[4:0]=exceptionmodenumberCPSR[5]=0/*在ARM狀態(tài)執(zhí)行*/if==ResetorFIQthenCPSR[6]=1/*禁止快速中斷*//*否則CPSR[6]不變*/CPSR[7]=1/*禁止正常中斷*/PC=exceptionvectoraddress當處理異常返回時,將SPSR傳送到CP

3、SR,R14傳送到PC。這可用兩種方法完成,即使用帶S位的數(shù)據(jù)處理指令,將PC作為目的寄存器;使用帶恢復(fù)CPSR的多加載指令。1.復(fù)位處理器上一旦有復(fù)位輸入,ARM處理器立刻停止執(zhí)行當前指令。復(fù)位完成下列操作R14_svc=UNPREDICTABLEvalueSPSR_svc=UNPREDICTABLEvalueCPSR[4:0]=0b10011/*進入管理模式*/CPSR[5]=0/*在ARM狀態(tài)下執(zhí)行*/CPSR[6]=1/*禁止快速中斷*/CPSR[7]=1/*禁止正常中斷*/Ifhighvectorsconfiguredth

4、enPC=0xFFFF0000ElsePC=0x00000000復(fù)位后,ARM處理器在禁止中斷的管理模式下,從地址0x00000000或0xFFFF0000開始執(zhí)行指令。2.未定義指令異常當ARM處理器執(zhí)行協(xié)處理器指令時,它必須等待任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒有響應(yīng),就會出現(xiàn)未定義指令異常。若試圖執(zhí)行未定義的指令,也會出現(xiàn)未定義指令異常。未定義指令異常可用于沒有物理協(xié)處理器(硬件)的系統(tǒng)上,對協(xié)處理器進行軟件仿真,或在軟件仿真時進行指令集擴展。當未定義指令異常出現(xiàn)時,執(zhí)行下列操作:R14_und=add

5、ressofnextinstructionaftertheundefinedinstructionSPSR_und=CPSRCPSR[4:0]=0b11011/*進入未定義模式*/CPSR[5]=0/*在ARM狀態(tài)執(zhí)行*//*CPSR[6]不變*/CPSR[7]=1/*禁止正常中斷*/IfhighvectorsconfiguredthenPC=0xFFFF0004ElsePC=0x00000004在仿真未定義指令后,使用下列指令返回,即MOVSPC,R14上面的指令恢復(fù)PC(從R14_und)和CPSR(從SPSR_und),并返回

6、到未定義指令后的下一條指令。3.軟件中斷異常軟件中斷指令SWI(SoftWareInterruptlnstruction)進入管理模式,以請求特定的管理(操作系統(tǒng))函數(shù)。當執(zhí)行SWI時,完成下列操作:R14_svc=addressofnextinstructionaftertheSWIinstructionSPSR_svc=CPSRCPSR[4:0]=0b10011/*進入管理模式*/CPSR[5]=0/*在ARM狀態(tài)執(zhí)行*//*CPSR[6]不變*/CPSR[7]=1/*禁止正常中斷*/Ifhighvectorsconfigure

7、dthenPC=0xFFFF0008ElesPC=0x00000008完成SWI操作后,使用下列指令恢復(fù)PC(從R14_svc)和CPSR(從SPSR_svc),并返回到SWI指令后的下一條指令,即MOVSPC,R144.預(yù)取指中止(取指令存儲器中止)存儲器系統(tǒng)發(fā)出存儲器中止(abort)信號。響應(yīng)取指激活的中止標記所取的指令無效。若處理器試圖執(zhí)行無效指令,則產(chǎn)生預(yù)取中止異常。若指令未執(zhí)行(例如,指令在流水線中發(fā)生了轉(zhuǎn)移),則不發(fā)生預(yù)取中止。在ARMv5及以上版本中,執(zhí)行BKPT指令也會產(chǎn)生預(yù)取中止異常。當試圖執(zhí)行一條中止的指令時,

8、將執(zhí)行下列操作:R14_abt=addressoftheabortedinstruction+4SPSR_abt=CPSRCPSR[4:0]=0b10111/*進入中止模式*/CPSR[5]=0/*在ARM狀態(tài)執(zhí)行*//*CPSR[6

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

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

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