cortexa8中斷機制課件_第1頁
cortexa8中斷機制課件_第2頁
cortexa8中斷機制課件_第3頁
cortexa8中斷機制課件_第4頁
cortexa8中斷機制課件_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

向量中斷控制器概述A8內(nèi)核具有兩個中斷輸入,分別為IRQ中斷和FIQ中斷。4個向量中斷控制器(VIC)負(fù)責(zé)管理芯片的中斷源,最多可以管理93個中斷輸入請求。CPU內(nèi)核向量中斷控制器程序狀態(tài)寄存器CPSR與VIC的關(guān)系A(chǔ)RM內(nèi)核通過CPSR來監(jiān)視和控制內(nèi)部的操作,CPSR中的“I”位和“F”位分別用來控制IRQ模式和FIQ模式的使能。CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)向量中斷控制器程序狀態(tài)寄存器CPSR與VIC的關(guān)系當(dāng)I=1時,禁止IRQ中斷CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)當(dāng)I=0時,使能IRQ中斷CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)向量中斷控制器中斷分類中斷輸入請求可以在VIC中被設(shè)置為以下二類:

FIQ中斷:具有最高優(yōu)先級;

向量IRQ中斷:具有一般優(yōu)先級;4.9向量中斷控制器IRQ中斷相應(yīng)流程將當(dāng)前的程序狀態(tài)寄存器的內(nèi)容備份即,SPSR_irq=CPSR處理器切換到IRQ模式禁止IRQ中斷,即,I=1保存返回地址LR_irq=PC設(shè)置IRQ異常入口地址PC=0x18發(fā)生IRQ異常事件寄存器描述-參數(shù)設(shè)置寄存器名稱描述復(fù)位置地址VICVectAddr0~VICVectAddr32向量地址0寄存器~向量地址32寄存器00xF200_0100~0xF200_017CVIC0Addr中斷地址寄存器00xF200_0F00向量地址0寄存器VICVectAddr0向量地址寄存器VICVectAddr向量地址31寄存器VICVectAddr31控制寄存器功能描述4.9向量中斷控制器控制寄存器功能描述VICIntEnable使能(禁止)中斷源產(chǎn)生中斷VICIntEnClrVICIntSelect中斷類型選擇:FIQ&IRQVIC0VectADDR中斷地址設(shè)置FIQ中斷向量IRQ中斷中斷源0中斷源1……中斷源31VIC0將32個中斷輸入進行分配IRQ中斷狀態(tài)寄存器VICIRQStatus中斷選擇寄存器VICIntSelect中斷使能寄存器VICIntEnable中斷使能清零寄存器VICIntEnClr中斷源[31:0]軟件中斷使能寄存器VICSoftInt軟件中斷清零寄存器VICSoftIntClearFIQ中斷狀態(tài)寄存器VICFIQStatus中斷狀態(tài)寄存器VICRawIntrIRQFIQ寄存器描述-狀態(tài)寄存器名稱描述訪問復(fù)位值地址VICIRQStatusIRQ狀態(tài)寄存器該寄存器讀出定義為IRQ并使能的中斷的狀態(tài)RO00xFFFFF000VICFIQStatusFIQ狀態(tài)請求該寄存器讀出定義為FIQ并使能的中斷的狀態(tài)RO00xFFFFF004VICRawIntr所有中斷的狀態(tài)寄存器該寄存器讀出32個中斷請求/軟件中斷的狀態(tài),不管中斷是否使能或分類RO00xFFFFF008注意:讀取VICRawIntr寄存器將得到所有32個中斷請求和軟件中斷的狀態(tài),它不管中斷是否使能或分類。保護使能寄存器4.9向量中斷控制器保護使能寄存器(VICProtection):位[31:1]0功能—當(dāng)該位為1時,只能在特權(quán)模式下訪問VIC寄存器。

在某些場合可能需要禁止在用戶模式下訪問VIC寄存器,以提高軟件的安全等級。IRQ中斷處理4.9向量中斷控制器SPSR_irq=CPSR12CPSR=nzcvqIft_irq3VICVectAddr=VICVectAddrn4LR_irq=PC硬件處理5PC=0x18軟件處理執(zhí)行中斷服務(wù)程序2設(shè)置返回地址3恢復(fù)程序狀態(tài)寄存器CPSR4PC[VICVectAddr]1IRQ中斷處理4.9向量中斷控制器SUBSPC,LR,#4SPSR_irq=CPSR12CPSR=nzcvqIft_irq3VICVectAddr=VICVectAddrn4LR_irq=PC硬件處理5PC=0x18軟件處理執(zhí)行中斷服務(wù)程序2設(shè)置返回地址3恢復(fù)程序狀態(tài)寄存器CPSR4LDRPC,[PC,#-0xff0]1IRQ中斷的設(shè)計實例將EINT0中斷分配為IRQ,中斷服務(wù)程序地址設(shè)置為EINT0_ISR。C代碼:步驟:IRQ通道0向量地址寄存器VICVectAddr0中斷源0中斷服務(wù)程序地址EINT0_ISR中斷使能寄存器VIC0IntEnable中斷通道#4對應(yīng)位,置“1”中斷選擇寄存器VIC0IntSelect中斷源0分配為IRQ中斷(EINT0為中斷源0)VIC0INTSELECT

&=

~3;VIC0VectAddr0=(int)EINT0_ISR;

VIC0INTENABLE

|=

0x1;圖示IRQ中斷的發(fā)生過程0x000000000xFFFFFFFF用戶程序中斷服務(wù)程序異常向量表①②④⑤⑥③IRQ_Eint0???VICVectAddr0VICVectAddrIRQ_Eint0⑤LDRPC,[PC,#-0xff0]注意:任何IRQ中斷產(chǎn)生之后,微控制器跳轉(zhuǎn)到地址0x18執(zhí)行代碼,該地址處的指令為:

LDRPC,[PC,#-0xff0]在執(zhí)行該指令時,PC指向當(dāng)前指令后的第2條指令,即地址0x20。該指令將內(nèi)存地址:

0x20-0xFF0=0xFFFFF030處的內(nèi)容存入PC,該地址正是VICVectAddr寄存器的地址。所以一條ARM指令即可實現(xiàn)程序向中斷服務(wù)程序的跳轉(zhuǎn)。外部中斷輸入概述LPC2000系列ARM具有32路外部中斷,可以設(shè)置為2種類型:邊沿觸發(fā):上升沿觸發(fā)下降沿觸發(fā)雙邊沿觸發(fā)電平觸發(fā):高電平觸發(fā)低電平觸發(fā)中斷信號下降沿觸發(fā)外部中斷輸入邊沿觸發(fā)中斷下降沿觸發(fā)類型中斷的請求和清除時序。T1T2T1時刻,中斷信號有下降沿產(chǎn)生,中斷控制器向CPU發(fā)出中斷請求。1T2時刻,CPU執(zhí)行完成中斷控制器的中斷服務(wù)程序,清除中斷,中斷信號回復(fù)到高電平。2中斷源0(EINT0)...中斷源14(EINT14)中斷源15(EINT15)中斷源16(EINT16~31)ARM處理器核VIC0IRQFIQ4.10外部中斷輸入外部中斷源所以的外部中斷源都由VIC0管理,其中外部中斷含有16個獨立的中斷號和一個共用的中斷號。外部中斷源寄存器組外部中斷源分組管理,分為4組:EXT_INT_0EXT_INT_1EXT_INT_2EXT_INT_3名稱描述訪問復(fù)位值*地址EXT_INT_0_CON設(shè)置中斷方式的寄存器R/W00xE020_0E00EXT_INT_0_FLTCON0EXT_INT_0_FLTCON1外部中斷源濾波器設(shè)置R/W0x808080800xE020_0E800xE020_0E84EXT_INT_0_MASK外部中斷掩碼設(shè)置寄存器R/W0xFF0xE020_0F00EXT_INT_0_PEND外部中斷掛起寄存器R/W00xE020_0F40寄存器匯總以EXT_INT_0組為例,下列為0號組所包含的寄存器外部中斷方式控制寄存器(EXT_INT_X_CON):該寄存器控制著外部中斷輸入信號的有效觸發(fā)方式,低四位分別對應(yīng)外部中斷3~0。對應(yīng)位為0時,電平觸發(fā)外部中斷;對應(yīng)位為1時,邊沿觸發(fā)外部中斷。

該寄存器每3位設(shè)置一個中斷源的觸發(fā)方式,即EXT_INT_X_CON的0~2位用于設(shè)置中斷源0;4~6位用于設(shè)置中斷源1;觸發(fā)方式的設(shè)置如圖掩碼設(shè)置中斷標(biāo)志管腳功能設(shè)置GPHXCONCPU其它部件寄存器匯總中斷相關(guān)寄存器EXT_INT_0_PENDEINT7EINT070EINT11EINT22….6~3

若引腳上出現(xiàn)了符合要求的信號,EXT_INT_X_PEND寄存器中對應(yīng)的中斷標(biāo)志將被置位。以0號組外部中斷組為例,向該寄存器的EINT0~EINT7位寫入1,可將其清零。外部中斷標(biāo)志寄存器(EXT_INT_X_PEND):通過對該寄存器的設(shè)置可以屏蔽對應(yīng)的中斷信號。外部中斷掩碼寄存器(EXT_INT_X_MASK):外部中斷觸發(fā)方式EXT_INT_X_CONEXT_INT_X_MASKEXT_INT_X_PEND中斷相關(guān)寄存器EXT_INT_0_MASKEINT_MASK7EINT_MASK070EINT_MASK11EINT_MASK22….6~3外部中斷與VIC的關(guān)系注意:這里僅以EINT0為例來進行講解,EINT1~EINT3與之類似,此處不再重復(fù)。外部中斷0位于VIC0的0號中斷源0,中斷使能寄存器VIC0IntEnable[0]=1用來控制通道0

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論