版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、7.1 ARM異常中斷處理概述1、中斷:2、中斷源:3、中斷優(yōu)先級:異常和中斷的差別:7.2 ARM體系體系異常種類異常種類 ARM ARM體系結(jié)構(gòu)中,存在體系結(jié)構(gòu)中,存在7 7種異常處理。當(dāng)種異常處理。當(dāng)異常發(fā)生時,處理器會把異常發(fā)生時,處理器會把PCPC設(shè)置為一個特定的設(shè)置為一個特定的存儲器地址。這一地址放在被稱為存儲器地址。這一地址放在被稱為向量表向量表(vector tablevector table)的特定地址范圍內(nèi)。向量)的特定地址范圍內(nèi)。向量表的入口是一些跳轉(zhuǎn)指令,跳轉(zhuǎn)到專門處理某表的入口是一些跳轉(zhuǎn)指令,跳轉(zhuǎn)到專門處理某個異?;蛑袛嗟淖映绦?。個異?;蛑袛嗟淖映绦颉?異 常 類 型
2、處理器模式執(zhí)行低地址執(zhí)行高地址復(fù)位異常(Reset)特權(quán)模式0 x000000000 xFFFF0000未定義指令異常(Undefined interrupt)未定義指令中止模式0 x000000040 xFFFF0004軟中斷異常(Software Abort)特權(quán)模式0 x000000080 xFFFF0008預(yù)取異常(Prefetch Abort)數(shù)據(jù)訪問中止模式0 x0000000C0 xFFFF000C數(shù)據(jù)異常(Data Abort)數(shù)據(jù)訪問中止模式0 x000000100 xFFFF0010外部中斷請求(IRQ)外部中斷請求模式0 x000000180 xFFFF0018快速中斷請
3、求(FIQ)快速中斷請求模式0 x0000001C0 xFFFF001C 當(dāng)處理器的復(fù)位引腳有效時,系統(tǒng)產(chǎn)生復(fù)當(dāng)處理器的復(fù)位引腳有效時,系統(tǒng)產(chǎn)生復(fù)位異常中斷,程序跳轉(zhuǎn)到復(fù)位異常中斷處理程位異常中斷,程序跳轉(zhuǎn)到復(fù)位異常中斷處理程序處執(zhí)行。復(fù)位異常中斷通常用在下面兩種情序處執(zhí)行。復(fù)位異常中斷通常用在下面兩種情況下:況下: (1 1)系統(tǒng)上電;)系統(tǒng)上電; (2 2)系統(tǒng)復(fù)位。)系統(tǒng)復(fù)位。1 1復(fù)位異常復(fù)位異常u復(fù)位復(fù)位復(fù)位完成下列操作:復(fù)位完成下列操作:R14_svc = UNPREDICTABLE valueSPSR_svc = UNPREDICTABLE valueCPSR4:0 = 0b10
4、011/*進(jìn)入管理模式進(jìn)入管理模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/CPSR6 = 1 /*禁止快速中斷禁止快速中斷*/CPSR7 = 1 /*禁止正常中斷禁止正常中斷*/If high vectors configured thenPC=0 xFFFF0000elsePC=0 x00000000 復(fù)位不需要返回。復(fù)位不需要返回。 當(dāng)當(dāng)ARMARM處理器執(zhí)行協(xié)處理器指令時,它處理器執(zhí)行協(xié)處理器指令時,它必須等待一個外部協(xié)處理器應(yīng)答后,才能真正必須等待一個外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒有響應(yīng),則發(fā)生執(zhí)行這條指令。若協(xié)處理器沒有響應(yīng),則發(fā)生未定義指令異
5、常。未定義指令異常。2 2未定義指令異常未定義指令異常u未定義指令異常未定義指令異常未定義指令異常出現(xiàn)時,執(zhí)行下列操作:未定義指令異常出現(xiàn)時,執(zhí)行下列操作:R14_und = address of next instruction after the undefined instructionSPSR_und = CPSRCPSR4:0 = 0b11011/*進(jìn)入未定義模式進(jìn)入未定義模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/*CPSR6 不變不變*/CPSR7 = 1 /*禁止正常中斷禁止正常中斷*/If high vectors configured thenPC=0 xF
6、FFF0004elsePC=0 x00000004 返回:返回:MOVS PC,LR設(shè)置設(shè)置 “S” bit,PC做為目的寄存器,做為目的寄存器,在特權(quán)模式不僅僅更新在特權(quán)模式不僅僅更新PC,而且拷貝,而且拷貝SPSR 到到 CPSR。 軟中斷(軟中斷(SWISWI)異常發(fā)生時,處理器進(jìn)入)異常發(fā)生時,處理器進(jìn)入特權(quán)模式,執(zhí)行一些特權(quán)模式下的操作系統(tǒng)功特權(quán)模式,執(zhí)行一些特權(quán)模式下的操作系統(tǒng)功能。能。3 3軟中斷軟中斷u軟件中斷(軟件中斷(SWI)管理異常管理異常管理異常異常出現(xiàn)時,執(zhí)行下列操作:管理異常異常出現(xiàn)時,執(zhí)行下列操作:R14_svc = address of next instruc
7、tion after the SWI instructionSPSR_svc = CPSRCPSR4:0 = 0b10011/*進(jìn)入管理模式進(jìn)入管理模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/*CPSR6 不變不變*/CPSR7 = 1 /*禁止正常中斷禁止正常中斷*/If high vectors configured thenPC=0 xFFFF0008elsePC=0 x00000008 返回:返回:MOVS PC, LR 預(yù)取指令異常是由系統(tǒng)存儲器報告的。預(yù)取指令異常是由系統(tǒng)存儲器報告的。當(dāng)處理器試圖去取一條被標(biāo)記為預(yù)取無效的指當(dāng)處理器試圖去取一條被標(biāo)記為預(yù)取無效的指令
8、時,發(fā)生預(yù)取指令異常。令時,發(fā)生預(yù)取指令異常。 如果系統(tǒng)中不包含如果系統(tǒng)中不包含MMUMMU時,指令預(yù)取異時,指令預(yù)取異常中斷處理程序只是簡單地報告錯誤并退出。常中斷處理程序只是簡單地報告錯誤并退出。若包含若包含MMUMMU,引起異常的指令的物理地址被存,引起異常的指令的物理地址被存儲到內(nèi)存中。儲到內(nèi)存中。4 4預(yù)取指令異常預(yù)取指令異常u預(yù)取異常預(yù)取異常預(yù)取異常出現(xiàn)時,執(zhí)行下列操作:預(yù)取異常出現(xiàn)時,執(zhí)行下列操作:R14_svc = address of the aborted instruction + 4SPSR_und = CPSRCPSR4:0 = 0b10111/*進(jìn)入指令預(yù)取中止模式
9、進(jìn)入指令預(yù)取中止模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/*CPSR6 不變不變*/CPSR7 = 1 /*禁止正常中斷禁止正常中斷*/If high vectors configured thenPC=0 xFFFF000CelsePC=0 x0000000C 返回:返回:SUBS PC, LR,#4 數(shù)據(jù)訪問中止異常是由存儲器發(fā)出數(shù)據(jù)中數(shù)據(jù)訪問中止異常是由存儲器發(fā)出數(shù)據(jù)中止信號,它由存儲器訪問指令止信號,它由存儲器訪問指令Load/StoreLoad/Store產(chǎn)產(chǎn)生。當(dāng)數(shù)據(jù)訪問指令的目標(biāo)地址不存在或者該生。當(dāng)數(shù)據(jù)訪問指令的目標(biāo)地址不存在或者該地址不允許當(dāng)前指令訪問時,處
10、理器產(chǎn)生數(shù)據(jù)地址不允許當(dāng)前指令訪問時,處理器產(chǎn)生數(shù)據(jù)訪問中止異常。訪問中止異常。5 5數(shù)據(jù)訪問中止異常數(shù)據(jù)訪問中止異常u數(shù)據(jù)中止異常數(shù)據(jù)中止異常預(yù)取中止異常出現(xiàn)時,執(zhí)行下列操作:預(yù)取中止異常出現(xiàn)時,執(zhí)行下列操作:R14_abt = address of the aborted instruction + 8SPSR_abt = CPSRCPSR4:0 = 0b10111/*進(jìn)入中止模式進(jìn)入中止模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/*CPSR6 不變不變*/CPSR7 = 1 /*禁止正常中斷禁止正常中斷*/If high vectors configured thenPC
11、=0 xFFFF0010elsePC=0 x00000010 返回:返回:SUBS PC, LR,#8 當(dāng)處理器的外部中斷請求(當(dāng)處理器的外部中斷請求(IRQIRQ)引腳有)引腳有效,而且效,而且CPSRCPSR寄存器的寄存器的I I控制位被清除時,處控制位被清除時,處理器產(chǎn)生外部中斷理器產(chǎn)生外部中斷IRQIRQ異常。系統(tǒng)中各外部設(shè)異常。系統(tǒng)中各外部設(shè)備通常通過該異常中斷請求處理器服務(wù)。備通常通過該異常中斷請求處理器服務(wù)。6 6外部中斷請求外部中斷請求u中斷請求(中斷請求(IRQ)異常異常通過處理器上的通過處理器上的IRQ輸入引腳,由外部產(chǎn)生輸入引腳,由外部產(chǎn)生IRQ異常。異常。IRQ異常的優(yōu)
12、先級比異常的優(yōu)先級比FIQ異常低。當(dāng)進(jìn)異常低。當(dāng)進(jìn)入入FIQ處理時,會屏蔽掉處理時,會屏蔽掉IRQ異常。異常。若若CPSR的的I位為位為1,則禁止,則禁止IRQ異常。異常。若若I位為位為0,則,則ARM在指令執(zhí)行完之后檢查在指令執(zhí)行完之后檢查IRQ輸入。輸入。 IRQ異常出現(xiàn)時,執(zhí)行下列操作:異常出現(xiàn)時,執(zhí)行下列操作:R14_irq = address of next instruction to be executed + 4SPSR_irq = CPSRCPSR4:0 = 0b10010/*進(jìn)入進(jìn)入IRQ模式模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/*CPSR6 不變不變
13、*/CPSR7 = 1 /*禁止正常中斷禁止正常中斷*/If high vectors configured thenPC=0 xFFFF0018elsePC=0 x00000018 返回:返回:SUBS PC, LR,#4 當(dāng)處理器的快速中斷請求(當(dāng)處理器的快速中斷請求(FIQFIQ)引腳有)引腳有效且效且CPSRCPSR寄存器的寄存器的F F控制位被清除時,處理器控制位被清除時,處理器產(chǎn)生快速中斷請求產(chǎn)生快速中斷請求FIQFIQ異常。異常。7 7快速中斷請求快速中斷請求ARM微處理器的異常狀態(tài)(10)u快速中斷請求(快速中斷請求(FIQ)異常異常通過處理器上的通過處理器上的FIQ輸入引腳,
14、由外部產(chǎn)生輸入引腳,由外部產(chǎn)生FIQ異常。異常。 若若CPSR的的F位為位為1,則禁止,則禁止FIQ異常。異常。若若F位為位為0,則,則ARM在指令執(zhí)行完之后檢在指令執(zhí)行完之后檢查查FIQ輸入輸入。 FIQ異常出現(xiàn)時,執(zhí)行下列操作:異常出現(xiàn)時,執(zhí)行下列操作:R14_fiq = address of next instruction to be executed + 4SPSR_fiq = CPSRCPSR4:0 = 0b10001/*進(jìn)入進(jìn)入FIQ模式模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/CPSR6 = 1 /*禁止快速中斷禁止快速中斷*/CPSR7 = 1 /*禁止正常
15、中斷禁止正常中斷*/If high vectors configured thenPC=0 xFFFF001CelsePC=0 x0000001C 返回:返回:SUBS PC, LR,#47.3 異常的優(yōu)先級異常的優(yōu)先級優(yōu) 先 級異 常最高 1復(fù)位異常 2數(shù)據(jù)中止 3快速中斷請求 4外部中斷請求 5預(yù)取指令異常 6軟中斷最低 7未定義指令7.4 ARM處理器模式和異常表7-37.5 ARM異常響應(yīng)和處理程序返回中斷響應(yīng)的概念步驟:1、保護(hù)斷點2、尋找中斷入口3、執(zhí)行中斷處理程序4、中斷返回ARM異常響應(yīng)流程異常響應(yīng)流程 當(dāng)異常發(fā)生時,處理器自動切換到當(dāng)異常發(fā)生時,處理器自動切換到ARMARM狀
16、狀態(tài),所以在異常處理函數(shù)中要判斷在異常發(fā)生態(tài),所以在異常處理函數(shù)中要判斷在異常發(fā)生前處理器是前處理器是ARMARM狀態(tài)還是狀態(tài)還是ThumbThumb狀態(tài)。這可以狀態(tài)。這可以通過檢測通過檢測SPSRSPSR的的T T位來判斷。位來判斷。1 1判斷處理器狀態(tài)判斷處理器狀態(tài) 通常情況下,只有在通常情況下,只有在SWISWI處理函數(shù)中才需處理函數(shù)中才需要知道異常發(fā)生前處理器的狀態(tài)。所以在要知道異常發(fā)生前處理器的狀態(tài)。所以在ThumbThumb狀態(tài)下,調(diào)用狀態(tài)下,調(diào)用SWISWI軟中斷異常必須注意軟中斷異常必須注意以下兩點。以下兩點。 (1 1)發(fā)生異常的指令地址為)發(fā)生異常的指令地址為(lr(lr2
17、)2),而不是而不是(lr(lr4)4)。 (2 2)ThumbThumb狀態(tài)下的指令是狀態(tài)下的指令是1616位的,在位的,在判斷中斷向量信號時使用半字加載指令判斷中斷向量信號時使用半字加載指令LDRHLDRH。 前面介紹向量表時提到,每一個異常發(fā)生前面介紹向量表時提到,每一個異常發(fā)生時總是從異常向量表開始跳轉(zhuǎn)。最簡單的一種時總是從異常向量表開始跳轉(zhuǎn)。最簡單的一種情況是向量表里面的每一條指令直接跳向?qū)?yīng)情況是向量表里面的每一條指令直接跳向?qū)?yīng)的異常處理函數(shù)。其中快速中斷處理函數(shù)的異常處理函數(shù)。其中快速中斷處理函數(shù)FIQ_handler()FIQ_handler()可以直接從地址可以直接從地址0
18、 x1C0 x1C處開始,處開始,省下一條跳轉(zhuǎn)指令,如圖省下一條跳轉(zhuǎn)指令,如圖2-72-7所示。所示。 (1 1)MOV PCMOV PC,imme_valueimme_value (2 2)LDR PCLDR PC,PC+offsetPC+offset2 2向量表向量表 當(dāng)一個異常處理返回時,一共有當(dāng)一個異常處理返回時,一共有3 3件事情件事情需要處理:通用寄存器的恢復(fù)、狀態(tài)寄存器的需要處理:通用寄存器的恢復(fù)、狀態(tài)寄存器的恢復(fù)及恢復(fù)及PCPC指針的恢復(fù)。通用寄存器的恢復(fù)采用指針的恢復(fù)。通用寄存器的恢復(fù)采用一般的堆棧操作指令即可,下面重點介紹狀態(tài)一般的堆棧操作指令即可,下面重點介紹狀態(tài)寄存器的
19、恢復(fù)及寄存器的恢復(fù)及PCPC指針的恢復(fù)。指針的恢復(fù)。 PC PC和和CPSRCPSR的恢復(fù)可以通過一條指令來實的恢復(fù)可以通過一條指令來實現(xiàn),下面是現(xiàn),下面是3 3個例子。個例子。 (1 1)MOVS PCMOVS PC,LRLR (2 2)SUBS PCSUBS PC,LRLR,4 4 (3 3)LDMFD SP!LDMFD SP!,PCPC1 1恢復(fù)被中斷程序的處理器狀態(tài)恢復(fù)被中斷程序的處理器狀態(tài) 異常返回時,另一個非常重要的問題就是異常返回時,另一個非常重要的問題就是返回地址的確定。返回地址的確定。 2 2異常的返回地址異常的返回地址(1 1)軟中斷異常)軟中斷異常(2 2)IRQIRQ或
20、或FIQFIQ異常異常(3 3)Data AbortData Abort數(shù)據(jù)中止異常數(shù)據(jù)中止異常異 常地 址用 途復(fù)位復(fù)位沒有定義LR數(shù)據(jù)中止LR8指向?qū)е聰?shù)據(jù)中止異常的指令FIQLR4指向發(fā)生異常時正在執(zhí)行的指令I(lǐng)RQLR4指向發(fā)生異常時正在執(zhí)行的指令預(yù)取指令中止LR4指向?qū)е骂A(yù)取指令異常的那條指令SWILR執(zhí)行SWI指令的下一條指令未定義指令LR指向未定義指令的下一條指令7.6 ARM應(yīng)用系統(tǒng)中異常中斷處理程應(yīng)用系統(tǒng)中異常中斷處理程序的安裝序的安裝 使用匯編語言安裝異常處理程序使用匯編語言安裝異常處理程序使用C語言編寫安裝處理程序1、向量表中使用跳轉(zhuǎn)指令的情況步驟:2、在向量表中使用加載P
21、C指令步驟:7.7ARM的SWI異常中斷處理程序設(shè)計7.8 FIQ和IRQ異常中斷程序設(shè)計7.9 基于ARM9芯片S3C2410X異常中斷程序設(shè)計中斷機制分析1S3C2410X的中斷(1)程序狀態(tài)寄存器的F位和I位。(2)中斷模式(INTMOD)。(3)中斷掛起寄存器(INTPND)。(4)中斷屏蔽寄存器(INTMSK)。2S3C2410X的中斷控制3S3C2410X的中斷源中 斷 源描 述中斷仲裁組INT_ADCADC EOC and Touch interrupt (INT_ADC/INT_TC)ARB5INT_RTCRTC alarm interruptARB5INT_SPI1SPI1
22、interruptARB5INT_UART0UART0 Interrupt (ERR、RXD and TXD)ARB5INT_IICIIC interruptARB4INT_USBHUSB Host interruptARB4INT_USBDUSB Device interruptARB4ReservedReservedARB4INT_UART1UART1 Interrupt (ERR、RXD and TXD)ARB4INT_SPI0SPI0 interruptARB4INT_SDISDI interruptARB3INT_DMA3DMA channel 3 interruptARB3INT_
23、DMA2DMA channel 2 interruptARB3INT_DMA1DMA channel 1 interruptARB3INT_DMA0DMA channel 0 interruptARB3INT_LCDLCD interrupt (INT_FrSyn and INT_FiCnt)ARB3中 斷 源描 述中斷仲裁組INT_UART2UART2 Interrupt (ERR、RXD and TXD)ARB2INT_TIMER4Timer4 interruptARB2INT_TIMER3Timer3 interruptARB2INT_TIMER2Timer2 interruptARB2INT_TIMER1Timer1 interruptARB2INT_TIMER0Timer0 interruptARB2INT_WDTWatch-Dog timer interruptARB1INT_TICKRTC Time tick interruptARB1nBATT_FLTBattery Fault interruptARB1Res
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高校與企業(yè)合作辦學(xué)項目合同3篇
- 二零二五年度特種車輛安裝與安全培訓(xùn)合同3篇
- 西安醫(yī)學(xué)高等??茖W(xué)校《商業(yè)影片綜合案例制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版1209兩人合伙經(jīng)營寵物美容與寄養(yǎng)中心協(xié)議3篇
- 二零二五年度珠寶首飾交易居間代理協(xié)議3篇
- 新疆機電職業(yè)技術(shù)學(xué)院《影視劇美術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 個體經(jīng)銷商專屬銷售授權(quán)協(xié)議(2024年度)版B版
- 通化師范學(xué)院《二維動畫技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024離婚債務(wù)分割詳細(xì)合同書版B版
- 二零二五版廚具設(shè)備售后服務(wù)與技術(shù)培訓(xùn)合同3篇
- 銀行會計主管年度工作總結(jié)2024(30篇)
- 教師招聘(教育理論基礎(chǔ))考試題庫(含答案)
- 2024年秋季學(xué)期學(xué)校辦公室工作總結(jié)
- 上海市12校2025屆高三第一次模擬考試英語試卷含解析
- 三年級數(shù)學(xué)(上)計算題專項練習(xí)附答案集錦
- 長亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲系統(tǒng)解決方案
- 《銷售心理學(xué)培訓(xùn)》課件
- 2024年安徽省公務(wù)員錄用考試《行測》真題及解析
評論
0/150
提交評論