ARM異常中斷處理及程序設(shè)計(jì)_第1頁(yè)
ARM異常中斷處理及程序設(shè)計(jì)_第2頁(yè)
ARM異常中斷處理及程序設(shè)計(jì)_第3頁(yè)
ARM異常中斷處理及程序設(shè)計(jì)_第4頁(yè)
ARM異常中斷處理及程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、5 29.20)3Neusott Institute of Information當(dāng)異常出現(xiàn)時(shí),異常模式分組的R14和SPSR用于保存當(dāng) 前程序的位置和狀態(tài),即R14_<exception mode> = return link SPSR_<exception_mode> = CPSRCPSR4:0 = exception mode numberCPSR 5= 0/* 在 ARM狀態(tài)執(zhí)行*/if <exception mode> = Reset or FIQ then CPSR 6 = 1/*禁止快速中斷*/* 否則 CPSR 6 不變*/CPSR 7 =

2、1/*禁止正常中斷*/PC = exception vector address當(dāng)處理異常返回時(shí),將SPSR傳送到CPSR, R14傳送到PC。 這可用兩種方法完成,即 使用帶S位的數(shù)據(jù)處理指令,將PC作為目的寄存器; 使用帶恢復(fù)CPSR的多加裁指令。R14. und=address of next instruction after the undefined instructionSPSR_und二CPSRCPSRT4:0=0bll011 /*進(jìn)入未定義模式*/ CPSR 5 =0 /*在ARM狀態(tài)執(zhí)行*/*CPSR6不變*/CPSR 7 =1 "禁止正常中斷檸 If high

3、vectors configured thenPC=0xFFFF0004ElsePC=0x00000004在仿真未定義指令后,使用下列指令返回,即 MOVS PC, R14上面的指令恢夏PC (從R14md)和CPSR (從SPSR.und),并返 回到未定義指令后鬲下一條指令。A(rt29.20!3Neusott Institute ol Information3.軟件中斷異常:中斷指令SWI (Software Interrupt Instruction) 嘉菇蟹待定的管理(操作系統(tǒng))函數(shù)。當(dāng)執(zhí)行R14_svc=address of next instruction after the S

4、WI instructionSPSR_svc=CPSRCPSRT4:0=0bl0011 /* 進(jìn)入管理模式*/ CPSR 5 =0 /*在ARM狀態(tài)執(zhí)行*/CPSR 6不變*/ CPSR7=1 /*禁止正常中斷*/ If high vectors configured then PC=0xFFFF0008ElesPC=0x00000008ApN29.20!3Neusoft Institute of Information完成SWI操作后,使用下列指令恢復(fù)PC (從R14_svc)和CPSR (從SPSR_svc),并返 回到SWI看令后的下一條指令,即MOVS PC, R14Neusoft I

5、nstitute of Information存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止(abort)信號(hào)。響 應(yīng)取指激活的中止標(biāo)記所取的指令無效。若處理器試圖執(zhí)行無效指令,則產(chǎn)生預(yù)取中止異常。若指令未執(zhí)行(例如,指令在流水線中發(fā)生了 轉(zhuǎn)移),則不發(fā)生預(yù)取中止。在ARMv5及以上版本 中,執(zhí)行BKPT指令也會(huì)產(chǎn)生預(yù)取中止異常。當(dāng)試圖執(zhí)行一條中止的指令時(shí),將執(zhí)行下列操 作:ApN29.2013Neusoft Institute of InformationApN29.2OI3Neusoft Institute of InformationR14_abt=address of the aborted instruc

6、tion + 4 SPSR_abt=CPSRCPSR4:0=0bl0111 /* 進(jìn)入中止模式*/CPSR5=0 /*在ARM狀態(tài)執(zhí)行*/* CPSR 6不變*/CPSR7=1 /*禁止正常中斷*/If high vectors configured thenPC=0xFFFF000CElsePC=OxOOOOOOOC確定中止原因后,使用下面指令從中止模式返回,即 SUBS PC, R14, #4上面的指令恢復(fù)氏(從RU.abt)和CPSR(從SPSR.abt),并返回 到中止的指令A(yù)pN 29.20)3Neusoft Institute of Information5數(shù)據(jù)中止(數(shù)據(jù)訪問存儲(chǔ)器

7、中止)存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止信號(hào)。響應(yīng)數(shù)據(jù)訪問 (加載或存儲(chǔ))激活的中止標(biāo)記數(shù)據(jù)為無效。在下面的任 何指令或異常改變cpu狀態(tài)之前,數(shù)據(jù)中止異常發(fā)生。執(zhí) 行下列操作:R14_abt=address of the aborted instruction + 8 SPSR_abt=CPSRCPSR4:0=0bl01U /*進(jìn)入中止模式*/CPSR 5 =0 /*在ARM狀態(tài)執(zhí)行*/* CPSR 6不變*/CPSR 7=1 /*禁止正常中斷*/6 中斷請(qǐng)求(IRQ)異常通過處理器上的IRQ輸入引腳,由外部產(chǎn)生 IRQ異常。IRQ異常的優(yōu)先級(jí)比FIQ異常的低。當(dāng)進(jìn)入 FIQ處理時(shí),會(huì)屏蔽掉IRQ異常

8、。若CPSR的I位置為1,則禁止IRQ中斷。若I位 清零,則ARM在指令執(zhí)行完之前檢查IRQ輸入。只能在特權(quán)模式下改變I位,當(dāng)檢測(cè)到IRQ時(shí), 執(zhí)行下列操作:ApN29.2013Neusoft Institute of Information7快速中斷請(qǐng)求(FIQ)異常通過處理器上的FIQ輸入引腳,由外部產(chǎn)生FIQ 異常。FIQ被設(shè)計(jì)成支持?jǐn)?shù)據(jù)傳送和通道處理,并有 足夠的私有(private)寄存器,從而在這樣的應(yīng)用中 可避免對(duì)寄存器保存的需求,減少了上下文切換的 總開銷。當(dāng)CPSR的F位置1時(shí),禁止快速中斷。若F位清 零,則ARM在執(zhí)行指令時(shí)檢查FIQ輸入。只能在特權(quán) 模式下改變F位,當(dāng)檢測(cè)

9、到FIQ時(shí),執(zhí)行下列操作,HApm 29.2013Neusoft Institute of Information異常優(yōu)先級(jí)優(yōu)先級(jí)異常1 (最高)復(fù)位2數(shù)據(jù)中止3FIQ4IRQ5預(yù)取中止6(最低)未定義指令、SWIApN29.20J3Neusoft Institute ol Information異常的返回如果在進(jìn)入終端時(shí)使用了??臻g來存儲(chǔ)普通寄 存器數(shù)據(jù),則返回時(shí)需要重新加載這些數(shù)據(jù)。如,進(jìn)入IRQ異常處理程序時(shí)保存返回地址及 寄存器R0R12:SUBR14,R14, #4STMFDSP!, R0-R12, R14則,返回時(shí)可使用指令:LDMFDSP!, R0-R12, PC以上指令從SP所

10、指堆??臻g中恢復(fù)R0R12寄存器數(shù)據(jù),并將返回地址(原R14數(shù)據(jù))賦予PC實(shí)現(xiàn) 返回,同時(shí)從SPSR.irq恢復(fù)狀態(tài)數(shù)據(jù)到CPSR寄存器。Apm 29.20)3Neusoft institute of Information6.2 ARM處理器異常向量表及加載程序設(shè)計(jì) 6.2.1異常向量表 1、分支指令構(gòu)成的異常向量表Bstart bootBundefined hand1erBSWI_handlerBprefetch handlerBabort handlerNOPBIRQ handlerBFIQ handler329.2093Neusoft Institute of Information

11、2、加載PC寄存器指令構(gòu)成的異常向量表(方式1)LDRPC, startbootLDRPC,LDRPC,LDRPC,undefined handlerSWI handlerprefetchabort handlerLDRLDRPC,二 IRQ handlerPC,= FIQ handlerLDRPC,=XOP329.2093Neusoft Institute of Information6.2.2在復(fù)位時(shí)使用匯編語言裝載向量表MOVADRLDMIA(8 words)STM IALDMIAaddressesSTMIAr& #0r9, Vector Init Blockr9!, r0-r7

12、 ;(opy the vectorsr8!, r0-r7r9!, r0-r7 ;Copy the 1)(1) edr8!, r0-r7Apm 29.20)3Neusoft Institute of Information方式1調(diào)用方法 void IRQhandler(void) IRQ異常處理程序void IRQInstall(void)unsigned *irqvec = (unsigned *)0x18;Install_Handler (unsigned) IRQ handler, irqvec); 一Apm 29.20)3Neusoft Institute of Information6.2.3使用C語言裝載向量表方式2unsigned InstallHandler (unsigned location, unsigned *vector) unsigned vec, oldvec;vec = (unsigned)location -(unsigned)vector - 0x8) | 0xe59ff00

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論