




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)教案,武漢創(chuàng)維特信息技術(shù)有限公司,2020/8/28,2,提綱,1,3,2,ARM 異常中斷處理概述,中斷處理程序的安裝,第六章 異常中斷處理,異常的響應(yīng)和退出,各種異常中斷的處理,4,3,ARM異常中斷處理概述,當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí),稱之為異常,例如處理一個(gè)外部的中斷請(qǐng)求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個(gè)異常同時(shí)發(fā)生,它們將會(huì)按固定的優(yōu)先級(jí)進(jìn)行處理。 ARM體系結(jié)構(gòu)中的異常,與8位/16位體系結(jié)構(gòu)的中斷有很大的相似之處,但異常與中斷的概念并不完全等同。,ARM異常中斷處理概述,4,ARM體系結(jié)構(gòu)所
2、支持的異常類型,ARM異常中斷處理概述,5,異常向量表(Exception Vectors),ARM異常中斷處理概述,6,異常優(yōu)先級(jí)(Exception Priorities),ARM異常中斷處理概述,7,對(duì)異常的響應(yīng),當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作 將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時(shí)能從正確的位置重新開(kāi)始執(zhí)行。 將CPSR復(fù)制到相應(yīng)的SPSR中。 根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。 強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。,對(duì)異常的響應(yīng),8,異常響應(yīng)偽代碼,處理器處于Thumb狀態(tài),則當(dāng)異常
3、向量地址加載入PC時(shí),處理器自動(dòng)切換到ARM狀態(tài)。ARM微處理器對(duì)異常的響應(yīng)過(guò)程用偽碼可以描述為: R14_ = Return Link SPSR_ = CPSR CPSR4:0 = Exception Mode Number CPSR5 = 0 If = Reset or FIQ then CPSR6 = 1 CPSR7 = 1 PC = Exception Vector Address,對(duì)異常的響應(yīng),9,從異常返回,異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回: 將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。 將SPSR復(fù)制回CPSR中。 若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁
4、止位,要在此清除。 可以認(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開(kāi)始執(zhí)行的,因此復(fù)位異常處理程序不需要返回。,對(duì)異常的響應(yīng),10,中斷處理程序的安裝,一般在系統(tǒng)的啟動(dòng)代碼中安裝異常處理程序。大致可以分為兩種情況: 0地址處存儲(chǔ)器為ROM/FLASH 0地址處存儲(chǔ)器為RAM,中斷處理程序的安裝,11,在ROM/FLASH中安裝中斷處理程序,在ROM/FLASH的異常中斷向量表中,可以使用LDR指令直接向程序計(jì)數(shù)器PC中賦值,也可以直接使用跳轉(zhuǎn)指令轉(zhuǎn)到異常中斷處理程序。 使用LDR指令: Vector_entry: LDRPC, Reset_Handle LDRPC, Undef_Handle LDRP
5、C, SWI_Handle,中斷處理程序的安裝,12,在ROM/FLASH中安裝中斷處理程序,LDRPC, Prefetch_Handle LDRPC, Abort_Handle NOP LDRPC, IRQ_Handle LDRPC, FIQ_Handle Vector_table: Reset_Handle: .LONGStart_Boot Undef_Handle: .LONGUndef_Isr ,中斷處理程序的安裝,13,在ROM/FLASH中安裝中斷處理程序,使用跳轉(zhuǎn)指令: Vector_entry: BReset_Handle BUndef_Handle BSWI_Handle B
6、Prefetch_Handle BAbort_Handle NOP BIRQ_Handle BFIQ_Handle,中斷處理程序的安裝,14,RAM中安裝中斷處理程序,當(dāng)0地址處為RAM時(shí),中斷向量表必須使用數(shù)據(jù)讀取指令直接指向PC中賦值的形式。而且必須把中斷向量從ROM中復(fù)制到RAM地址的0地址處。 MOVr8, #0 ADRr9, Vector_Init_Block LDMIAr9!, r0-r7 STMIAr8!, r0-r7,中斷處理程序的安裝,15,在C程序中安裝異常中斷處理程序,中斷向量表使用數(shù)據(jù)處理指令的情況 在中斷向量vector處安裝location處指向的處理程序 unsi
7、gned ist_handler( unsigned location, unsigned *vector) unsigned vec, oldvec; vec = (location (unsigned)vector 0 x08) | 0 xe59ff000; oldvec = *vector; *vector = vec; return oldvec; ,中斷處理程序的安裝,16,在C程序中安裝異常中斷處理程序,中斷向量表使用跳轉(zhuǎn)指令的情況 在中斷向量vector處安裝routine處理程序 unsigned ist_handler( unsigned routine, unsigned
8、*vector) unsigned vec, oldvec; vec = (routine (vector 0 x08)2); vec = 0 xea000000 | vec; oldvec = *vector; *vector = vec; return oldvec; ,中斷處理程序的安裝,17,ABORT(中止),產(chǎn)生中止異常意味著對(duì)存儲(chǔ)器的訪問(wèn)失敗。ARM微處理器在存儲(chǔ)器訪問(wèn)周期內(nèi)檢查是否發(fā)生中止異常。 中止異常包括兩種類型: 指令預(yù)取中止:發(fā)生在指令預(yù)取時(shí)。 數(shù)據(jù)中止:發(fā)生在數(shù)據(jù)訪問(wèn)時(shí)。,各種異常中斷的處理,18,指令預(yù)取異常中斷的處理,系統(tǒng)中不包含MMU時(shí),指令預(yù)取中止異常處理程序
9、只是簡(jiǎn)單的報(bào)告錯(cuò)誤,然后退出; 在使用MMU的系統(tǒng)中,則發(fā)生錯(cuò)誤的指令觸發(fā)虛擬地址失效,在該失效處理程序中重新讀取該指令。指令預(yù)取異常是在有錯(cuò)誤的指令被執(zhí)行時(shí)才觸發(fā)的。當(dāng)異常發(fā)生時(shí),Lr_abt寄存器沒(méi)有被更新,它指向引起該指令的后面1條指令。 異常的返回地址應(yīng)該是該有問(wèn)題的指令,即Lr_abt4處。,各種異常中斷的處理,19,數(shù)據(jù)訪問(wèn)異常中斷的處理,系統(tǒng)中不包含MMU時(shí),數(shù)據(jù)訪問(wèn)中止異常處理程序只是簡(jiǎn)單的報(bào)告錯(cuò)誤,然后退出; 在使用MMU的系統(tǒng)中,數(shù)據(jù)訪問(wèn)中止異常處理程序要處理該數(shù)據(jù)訪問(wèn)異常。當(dāng)異常發(fā)生時(shí),Lr_abt寄存器已經(jīng)被更新,它指向引起該異常的指令的后面2條指令。 異常的返回地址是
10、引起數(shù)據(jù)訪問(wèn)中止異常中斷的指令,即Lr_abt8處。,各種異常中斷的處理,20,ABORT(中止)處理函數(shù)的退出,當(dāng)確定了中止的原因后,Abort處理程序均可以執(zhí)行以下指令從中止模式返回,無(wú)論是在ARM狀態(tài)還是Thumb狀態(tài): SUBS PC, R14_abt, #4;指令預(yù)取中止 SUBS PC, R14_abt, #8;數(shù)據(jù)中止,各種異常中斷的處理,21,FIQ(Fast Interrupt Request),FIQ異常是為了支持?jǐn)?shù)據(jù)傳輸或者通道處理而設(shè)計(jì)的。 若將CPSR的F位置為1,則會(huì)禁止FIQ中斷,若將CPSR的F位清零,處理器會(huì)在指令執(zhí)行時(shí)檢查FIQ的輸入。注意只有在特權(quán)模式下才
11、能改變F位的狀態(tài)。 可由外部通過(guò)對(duì)處理器上的nFIQ引腳輸入低電平產(chǎn)生FIQ。不管是在ARM狀態(tài)還是在Thumb狀態(tài)下進(jìn)入FIQ模式,F(xiàn)IQ處理程序均可以執(zhí)行以下指令從FIQ模式返回: SUBS PC,R14_fiq ,#4,各種異常中斷的處理,22,IRQ(Interrupt Request),IRQ異常屬于正常的中斷請(qǐng)求,可通過(guò)對(duì)處理器的nIRQ引腳輸入低電平產(chǎn)生,IRQ的優(yōu)先級(jí)低于FIQ,當(dāng)程序執(zhí)行進(jìn)入FIQ異常時(shí),IRQ可能被屏蔽。 若將CPSR的I位置為1,則會(huì)禁止IRQ中斷,若將CPSR的I位清零,處理器會(huì)在指令執(zhí)行完之前檢查IRQ的輸入。注意只有在特權(quán)模式下才能改變I位的狀態(tài)。
12、不管是在ARM狀態(tài)還是在Thumb狀態(tài)下進(jìn)入IRQ模式,IRQ處理程序均可以執(zhí)行以下指令從IRQ模式返回: SUBS PC , R14_irq , #4,各種異常中斷的處理,23,IRQ/FIQ處理程序示例,STMFDsp!, r0-r12, lr 調(diào)用IRQ/FIQ處理程序 LDMFDsp!, r0-r12, lr SUBSpc, lr, #4,各種異常中斷的處理,24,Undefined Instruction(未定義指令),當(dāng)ARM處理器遇到不能處理的指令時(shí),會(huì)產(chǎn)生未定義指令異常。采用這種機(jī)制,可以通過(guò)軟件仿真擴(kuò)展ARM或Thumb指令集。 處理器執(zhí)行以下程序返回,無(wú)論是在ARM狀態(tài)還是
13、Thumb狀態(tài): MOVS PC, R14_und 以上指令恢復(fù)PC(從R14_und)和CPSR(從SPSR_und)的值,并返回到未定義指令后的下一條指令。,各種異常中斷的處理,25,SWI(軟件中斷),軟件中斷指令(SWI)用于進(jìn)入管理模式,常用于請(qǐng)求執(zhí)行特定的管理功能。軟件中斷處理程序執(zhí)行以下指令可以從SWI模式返回,無(wú)論是在ARM狀態(tài)還是Thumb狀態(tài): MOVS PC , R14_svc 以上指令恢復(fù)PC(從R14_svc)和CPSR(從SPSR_svc)的值,并返回到SWI的下一條指令。,各種異常中斷的處理,26,SWI一級(jí)處理程序,STMFDsp!, r0-r12, lr LDR r0, lr, #-4 BICr0, r0, #0 xFF000000 在此調(diào)用二級(jí)處理程序 LDMFDsp!, r0-r12, lr,各種異常中斷的處理,27,SWI二級(jí)處理程序,CMPr0, #maxSWI LDRLSpc, pc, r0, LSL #2 B SWIOutofRange S
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北孝感美珈職業(yè)學(xué)院《組織行為學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 昆明藝術(shù)職業(yè)學(xué)院《中外美術(shù)史》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川文化藝術(shù)學(xué)院《軌道交通自動(dòng)化專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆湖南省高考?xì)v史仿真模擬試卷02
- 2025年上海市安全員《C證》考試題庫(kù)
- 晉中學(xué)院《特種鑄造》2023-2024學(xué)年第二學(xué)期期末試卷
- 林州建筑職業(yè)技術(shù)學(xué)院《商業(yè)插圖》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江中醫(yī)藥大學(xué)《商務(wù)溝通與談判》2023-2024學(xué)年第二學(xué)期期末試卷
- 拉薩師范高等??茖W(xué)?!洞髷?shù)據(jù)安全技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 長(zhǎng)沙學(xué)院《生物藥物檢測(cè)技術(shù)與設(shè)備》2023-2024學(xué)年第二學(xué)期期末試卷
- 地理-浙江省強(qiáng)基聯(lián)盟2025年2月高三年級(jí)聯(lián)考試題和答案
- 濟(jì)南2024年山東濟(jì)南廣播電視臺(tái)招聘14人筆試歷年參考題庫(kù)附帶答案詳解
- 海洋氣候預(yù)測(cè)模型創(chuàng)新研究-深度研究
- 《客戶服務(wù)基礎(chǔ)》教案及課件項(xiàng)
- 2025《醫(yī)藥企業(yè)防范商業(yè)賄賂風(fēng)險(xiǎn)合規(guī)指引》解讀課件
- 2025年湖南工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年丹參原藥材項(xiàng)目可行性研究報(bào)告
- 物理(A版)-安徽省合肥一中(省十聯(lián)考)2024-2025學(xué)年度高二年級(jí)上學(xué)期期末測(cè)試試題和答案
- 人教版初中歷史與社會(huì)七年級(jí)下冊(cè) 6.3.3向西開(kāi)放的重要門戶-烏魯木齊 說(shuō)課稿
- 綜合材料繪畫課程設(shè)計(jì)
- 數(shù)學(xué)史簡(jiǎn)介課件
評(píng)論
0/150
提交評(píng)論