




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、7.1 ARM異常中斷處理概述1、中斷:2、中斷源:3、中斷優(yōu)先級:異常和中斷的差別:7.2 ARM體系體系異常種類異常種類 ARM ARM體系結(jié)構中,存在體系結(jié)構中,存在7 7種異常處理。當種異常處理。當異常發(fā)生時,處理器會把異常發(fā)生時,處理器會把PCPC設置為一個特定的設置為一個特定的存儲器地址。這一地址放在被稱為存儲器地址。這一地址放在被稱為向量表向量表(vector tablevector table)的特定地址范圍內(nèi)。向量)的特定地址范圍內(nèi)。向量表的入口是一些跳轉(zhuǎn)指令,跳轉(zhuǎn)到專門處理某表的入口是一些跳轉(zhuǎn)指令,跳轉(zhuǎn)到專門處理某個異?;蛑袛嗟淖映绦颉€異?;蛑袛嗟淖映绦?。 異 常 類 型
2、處理器模式執(zhí)行低地址執(zhí)行高地址復位異常(Reset)特權模式0 x000000000 xFFFF0000未定義指令異常(Undefined interrupt)未定義指令中止模式0 x000000040 xFFFF0004軟中斷異常(Software Abort)特權模式0 x000000080 xFFFF0008預取異常(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 當處理器的復位引腳有效時,系統(tǒng)產(chǎn)生復當處理器的復位引腳有效時,系統(tǒng)產(chǎn)生復位異常中斷,程序跳轉(zhuǎn)到復位異常中斷處理程位異常中斷,程序跳轉(zhuǎn)到復位異常中斷處理程序處執(zhí)行。復位異常中斷通常用在下面兩種情序處執(zhí)行。復位異常中斷通常用在下面兩種情況下:況下: (1 1)系統(tǒng)上電;)系統(tǒng)上電; (2 2)系統(tǒng)復位。)系統(tǒng)復位。1 1復位異常復位異常u復位復位復位完成下列操作:復位完成下列操作:R14_svc = UNPREDICTABLE valueSPSR_svc = UNPREDICTABLE valueCPSR4:0 = 0b10
4、011/*進入管理模式進入管理模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/CPSR6 = 1 /*禁止快速中斷禁止快速中斷*/CPSR7 = 1 /*禁止正常中斷禁止正常中斷*/If high vectors configured thenPC=0 xFFFF0000elsePC=0 x00000000 復位不需要返回。復位不需要返回。 當當ARMARM處理器執(zhí)行協(xié)處理器指令時,它處理器執(zhí)行協(xié)處理器指令時,它必須等待一個外部協(xié)處理器應答后,才能真正必須等待一個外部協(xié)處理器應答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒有響應,則發(fā)生執(zhí)行這條指令。若協(xié)處理器沒有響應,則發(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/*進入未定義模式進入未定義模式*/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設置設置 “S” bit,PC做為目的寄存器,做為目的寄存器,在特權模式不僅僅更新在特權模式不僅僅更新PC,而且拷貝,而且拷貝SPSR 到到 CPSR。 軟中斷(軟中斷(SWISWI)異常發(fā)生時,處理器進入)異常發(fā)生時,處理器進入特權模式,執(zhí)行一些特權模式下的操作系統(tǒng)功特權模式,執(zhí)行一些特權模式下的操作系統(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/*進入管理模式進入管理模式*/CPSR5 = 0/*在在ARM狀態(tài)執(zhí)行狀態(tài)執(zhí)行*/*CPSR6 不變不變*/CPSR7 = 1 /*禁止正常中斷禁止正常中斷*/If high vectors configured thenPC=0 xFFFF0008elsePC=0 x00000008 返回:返回:MOVS PC, LR 預取指令異常是由系統(tǒng)存儲器報告的。預取指令異常是由系統(tǒng)存儲器報告的。當處理器試圖去取一條被標記為預取無效的指當處理器試圖去取一條被標記為預取無效的指令
8、時,發(fā)生預取指令異常。令時,發(fā)生預取指令異常。 如果系統(tǒng)中不包含如果系統(tǒng)中不包含MMUMMU時,指令預取異時,指令預取異常中斷處理程序只是簡單地報告錯誤并退出。常中斷處理程序只是簡單地報告錯誤并退出。若包含若包含MMUMMU,引起異常的指令的物理地址被存,引起異常的指令的物理地址被存儲到內(nèi)存中。儲到內(nèi)存中。4 4預取指令異常預取指令異常u預取異常預取異常預取異常出現(xiàn)時,執(zhí)行下列操作:預取異常出現(xiàn)時,執(zhí)行下列操作:R14_svc = address of the aborted instruction + 4SPSR_und = CPSRCPSR4:0 = 0b10111/*進入指令預取中止模式
9、進入指令預取中止模式*/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)生。當數(shù)據(jù)訪問指令的目標地址不存在或者該生。當數(shù)據(jù)訪問指令的目標地址不存在或者該地址不允許當前指令訪問時,處
10、理器產(chǎn)生數(shù)據(jù)地址不允許當前指令訪問時,處理器產(chǎn)生數(shù)據(jù)訪問中止異常。訪問中止異常。5 5數(shù)據(jù)訪問中止異常數(shù)據(jù)訪問中止異常u數(shù)據(jù)中止異常數(shù)據(jù)中止異常預取中止異常出現(xiàn)時,執(zhí)行下列操作:預取中止異常出現(xiàn)時,執(zhí)行下列操作:R14_abt = address of the aborted instruction + 8SPSR_abt = CPSRCPSR4:0 = 0b10111/*進入中止模式進入中止模式*/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 當處理器的外部中斷請求(當處理器的外部中斷請求(IRQIRQ)引腳有)引腳有效,而且效,而且CPSRCPSR寄存器的寄存器的I I控制位被清除時,處控制位被清除時,處理器產(chǎn)生外部中斷理器產(chǎn)生外部中斷IRQIRQ異常。系統(tǒng)中各外部設異常。系統(tǒng)中各外部設備通常通過該異常中斷請求處理器服務。備通常通過該異常中斷請求處理器服務。6 6外部中斷請求外部中斷請求u中斷請求(中斷請求(IRQ)異常異常通過處理器上的通過處理器上的IRQ輸入引腳,由外部產(chǎn)生輸入引腳,由外部產(chǎn)生IRQ異常。異常。IRQ異常的優(yōu)
12、先級比異常的優(yōu)先級比FIQ異常低。當進異常低。當進入入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/*進入進入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 當處理器的快速中斷請求(當處理器的快速中斷請求(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/*進入進入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復位異常 2數(shù)據(jù)中止 3快速中斷請求 4外部中斷請求 5預取指令異常 6軟中斷最低 7未定義指令7.4 ARM處理器模式和異常表7-37.5 ARM異常響應和處理程序返回中斷響應的概念步驟:1、保護斷點2、尋找中斷入口3、執(zhí)行中斷處理程序4、中斷返回ARM異常響應流程異常響應流程 當異常發(fā)生時,處理器自動切換到當異常發(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ū)闆r是向量表里面的每一條指令直接跳向?qū)漠惓L幚砗瘮?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向量表向量表 當一個異常處理返回時,一共有當一個異常處理返回時,一共有3 3件事情件事情需要處理:通用寄存器的恢復、狀態(tài)寄存器的需要處理:通用寄存器的恢復、狀態(tài)寄存器的恢復及恢復及PCPC指針的恢復。通用寄存器的恢復采用指針的恢復。通用寄存器的恢復采用一般的堆棧操作指令即可,下面重點介紹狀態(tài)一般的堆棧操作指令即可,下面重點介紹狀態(tài)寄存器的
19、恢復及寄存器的恢復及PCPC指針的恢復。指針的恢復。 PC PC和和CPSRCPSR的恢復可以通過一條指令來實的恢復可以通過一條指令來實現(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恢復被中斷程序的處理器狀態(tài)恢復被中斷程序的處理器狀態(tài) 異常返回時,另一個非常重要的問題就是異常返回時,另一個非常重要的問題就是返回地址的確定。返回地址的確定。 2 2異常的返回地址異常的返回地址(1 1)軟中斷異常)軟中斷異常(2 2)IRQIRQ或
20、或FIQFIQ異常異常(3 3)Data AbortData Abort數(shù)據(jù)中止異常數(shù)據(jù)中止異常異 常地 址用 途復位復位沒有定義LR數(shù)據(jù)中止LR8指向?qū)е聰?shù)據(jù)中止異常的指令FIQLR4指向發(fā)生異常時正在執(zhí)行的指令IRQLR4指向發(fā)生異常時正在執(zhí)行的指令預取指令中止LR4指向?qū)е骂A取指令異常的那條指令SWILR執(zhí)行SWI指令的下一條指令未定義指令LR指向未定義指令的下一條指令7.6 ARM應用系統(tǒng)中異常中斷處理程應用系統(tǒng)中異常中斷處理程序的安裝序的安裝 使用匯編語言安裝異常處理程序使用匯編語言安裝異常處理程序使用C語言編寫安裝處理程序1、向量表中使用跳轉(zhuǎn)指令的情況步驟:2、在向量表中使用加載P
21、C指令步驟:7.7ARM的SWI異常中斷處理程序設計7.8 FIQ和IRQ異常中斷程序設計7.9 基于ARM9芯片S3C2410X異常中斷程序設計中斷機制分析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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB42-T 2057-2023 低氟茶生產(chǎn)技術規(guī)程
- 機電設備維修技術 第3版 第一章 思考題與習題答案
- 2025年小學學校下學期德育工作總結(jié)模版
- 致新學期新生開學典禮教師發(fā)言稿模版
- 業(yè)務人員實習工作總結(jié)模版
- 四川省眉山市仁壽縣2024-2025學年高二下學期4月期中校際聯(lián)考政治試卷(含答案)
- 北京版英語三年級下冊《Lesson 7》下載
- 北京版英語二年級下冊《Lesson 23》教學課件
- 北京版英語2011課標版一年級起點《Lesson 15》新課標課件
- 山東省威海市乳山一中2025年高三5月沖刺歷史試題含解析
- 安全生產(chǎn)法律法規(guī)匯編(2025版)
- 質(zhì)量環(huán)境職業(yè)健康安全管理體系程序文件(終稿)
- 家政服務行業(yè)的數(shù)字化轉(zhuǎn)型及創(chuàng)新服務模式研究
- 鎮(zhèn)掃黑除惡培訓
- IDC基礎知識培訓課件
- 第三類醫(yī)療器械崗前培訓
- GB/T 23444-2024金屬及金屬復合材料吊頂板
- 2024用電信息采集系統(tǒng)技術規(guī)范第2部分:集中器和采集器
- 2023年非車險核??荚囌骖}模擬匯編(共396題)
- 人作與天開-中國古典園林藝術 課件-2024-2025學年高中美術人美版(2019)美術鑒賞
- 2024年重慶市中考化學試題(A卷)含答案
評論
0/150
提交評論