版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、EINT外部中斷1、 ARM異常中斷IRQ(一般中斷)和FIQ(快速中斷)不是具體的中斷源,而是中斷的類型。我們是可以將一個中斷源的類型設置成FIQ也可以設置成IRQ。在使用FIQ響應的時間比IRQ要短,其他方面沒有什么區(qū)別。但是一般情況下,在一個平臺內(nèi),我們只能將一個中斷源設置成FIQ。2、 S5PV210的中斷源1、 總共有93個,其中外部中斷有32個。2、 93個中斷源分成了4個中斷控制器(VIC)3、 具體中斷源(210手冊p1-5)注意:所有的中斷源產(chǎn)生的中斷最終都有VIC0中斷控制器提交給S5PV210內(nèi)核,所以,在中斷服務函數(shù)中做清除中斷處理時,要將4個的VICADDRESS寄存
2、器都要做寫操作。3、 外部中斷設計流程中斷控制:1)程序狀態(tài)寄存器CPSR的F位和I位 2)中斷模式4、 S5PV210中斷控制器的特點 Supports 93 vectored IRQ interrupts Fixed hardware interrupts priority levels Programmable interrupt priority levels Supports Hardware interrupt priority level masking Programmable interrupt priority level masking Generates IRQ and
3、 FIQ Generates Software interrupt Test registers Raw interrupt status Interrupt request status Supports Privileged mode for restricted access 5、 分析GEC210平臺的原理圖EINT16是一個二級中斷,對應的一級入口是EINT16_31。6、 中斷的初始化(設置SFR)1、 將GPH2_0設置成EINT162、 設置EINT16的觸發(fā)方式3、 設置外部中斷的濾波器4、外部中斷pending(判斷/清除寄存器)5、 外部中斷的開關(guān)(屏蔽)寄存器6、 設置
4、中斷類型EINT16->VIC0INTSELECT7、中斷向量地址寄存器1) VIC0ADDRESS讀:該寄存器放置的是正在響應的入口中斷處理程序的入口地址。該入口地址是在對應中斷源向量地址寄存器(VIC0VECTADDRn)中初始化的。寫:向該寄存器寫0,用來清除中斷。2) VIC0VECTADDRn在中斷初始化的時候,將中斷處理程序的入口地址保存到該寄存器。8、 中斷的開關(guān)寄存器7、 程序的設計1、 程序入口(start.S).global _start.global IRQ_handle_start:ldrsp, =0x40000000初始化棧,stack放在DDR2mov r0,
5、 #0x53msr CPSR_cxsf, r0 ARM進入管理模式,并關(guān)閉FIQ、打開IRQbl clock_init初始化210的系統(tǒng)時鐘b main調(diào)用了main,進入中斷初始化IRQ_handle: IRQ中斷的處理程序,在ARM響應IRQ中斷時,會進入該程序ldr sp, =0xD0037F80 初始化IRQ模式的stacksub lr, lr, #4修正返回地址stmfd sp!, r0-r12, lr 保存現(xiàn)場,入棧blIrq_Isr調(diào)用C環(huán)境的程序,去處理IRQ中斷,在Irq_Isr函數(shù)中,確定中斷源。ldmfd sp!, r0-r12, pc 退出現(xiàn)場,并實現(xiàn)中斷的返回2、ma
6、in函數(shù)void isr_key(void) /EINT16中斷處理程序GPJ2DAT = (1<<0);/toggle led intc_clearvectaddr(); / clear VIC0ADDRESS EXT_INT_2_PEND |= 1<<0; / clear pending bitint main(void)/GPJ2CON3:0 = 0001;GPJ2_0->outputGPJ2CON &= (0xf<<0);GPJ2CON |= (1<<0);/interrupt controller initint_init
7、(); GPH2CON |= 0xF;/ GPH2_0 -> EXT_INT16 /EXT_INT16: Falling edge triggeredEXT_INT_2_CON &= (7<0);EXT_INT_2_CON |= (2<<0);/initialize vector interrupt address with num of init and c_setvectaddr(NUM_EINT16_31, isr_key);/EINT16中斷處理程序的安裝 EXT_INT_2_MASK &= (1<<0); /unmas
8、ked EINT16intc_enable(NUM_EINT16_31); /enable EINT16_31while (1); /等待中斷3、 IRQ中斷初始化函數(shù)/exception and interrupt initializevoid int_init( void) /vector table of exception initialize pExceptionUNDEF =(unsigned long)exceptionundef;/undefine pExceptionSWI =(unsigned long)exceptionswi;/software interrupt pE
9、xceptionPABORT =(unsigned long)exceptionpabort;/pabort pExceptionDABORT =(unsigned long)exceptiondabort;/data abort pExceptionIRQ =(unsigned long)IRQ_handle;/IRQ中斷處理程序的安裝 pExceptionFIQ =(unsigned long)FIQ_handle;/FIQ /interrupt controller init /Disables Interrupt in VICxINTENABLE Register VIC0INTENC
10、LEAR = 0xffffffff; VIC1INTENCLEAR = 0xffffffff; VIC2INTENCLEAR = 0xffffffff; VIC3INTENCLEAR = 0xffffffff; /Selects interrupt type for interrupt request (IRQ) VIC0INTSELECT = 0x0; VIC1INTSELECT = 0x0; VIC2INTSELECT = 0x0; VIC3INTSELECT = 0x0; /*Contains the address of the currently active ISR, with r
11、eset value 0x00000000. A read of this register returns the address of the ISR and sets the current interrupt as being serviced. A read must be performed while there is an active interrupt. A write of any value to this register clears the current interrupt. A write must only be performed at the end o
12、f an interrupt service routine.*/ VIC0ADDRESS = 0; VIC1ADDRESS = 0; VIC2ADDRESS = 0; VIC3ADDRESS = 0;4、 具體中斷源的ISR安裝函數(shù)void intc_setvectaddr(unsigned long intnum, void (*handler)(void) /VIC0 if(intnum<32) *( (volatile unsigned long *)(VIC0VECTADDR + 4*intnum) ) = (unsigned)handler; /VIC1 else if(in
13、tnum<64) *( (volatile unsigned long *)(VIC1VECTADDR + 4*(intnum-32) ) = (unsigned)handler; /VIC2 else if(intnum<96) *( (volatile unsigned long *)(VIC2VECTADDR + 4*(intnum-64) ) = (unsigned)handler; /VIC3 else *( (volatile unsigned long *)(VIC3VECTADDR + 4*(intnum-96) ) = (unsigned)handler; ret
14、urn;8、 中斷響應過程1) 異常中斷的向量地址當ARM接收到IRQ中斷后,PC就會指向0x0000_0018。一般在0x0000_0018上放一個跳轉(zhuǎn)到IRQ中斷處理的函數(shù)位置。2) S5PV210的BL0BL0是一個啟動加載程序,存放在210的IROM,用戶是不能改寫的。BL0的作用:3) 中斷的響應過程(EINT16)1、 當ARM接收到EINT16(IRQ)時,PC=0x0000_0018,IROM中BL0會將PC由0x0000_0018跳到IRAM中0xD003_7418。我們在int.h文件中定義如下:#define pExceptionIRQ( *(volatile unsig
15、ned long *)(0xD0037400 + 0x18) 2、 PC=pExceptionIRQ我們在int.c文件的 void int_init( void)函數(shù)做了下面工作: pExceptionIRQ =(unsigned long)IRQ_handle;/IRQ3、 PC=IRQ_handle我們在start.s中,由如下代碼:IRQ_handle:ldr sp, =0xD0037F80sub lr, lr, #4stmfd sp!, r0-r12, lr/入棧,現(xiàn)場保存,和返回地址blIrq_Isrldmfd sp!, r0-r12, pc/出棧,現(xiàn)場恢復,PC=lr4、 PC=
16、Irq_Isr我們在int.c源文件中定義了函數(shù)Irq_Isr()void Irq_Isr(void)int i; unsigned long vicaddr4 = VIC0ADDRESS,VIC1ADDRESS,VIC2ADDRESS,VIC3ADDRESS; void (*isr)(void) = (void *)0; for(i=0; i<4; i+) if(intc_getvicirqstatus(i) != 0) isr = (void (*)(void) vicaddri; break; (*isr)();5、 PC->VIC0ADDRESS當EINT16有效的時候,VIC0ADDRESS=VIC0VECTADDR166、 PC->VIC0VECTADDR16我們在main.c里面調(diào)用函數(shù)intc_setvectaddr(NUM_EINT16_31, isr_key);,下一步分析ntc_setvectaddr(),該函數(shù)定義在int.c。7、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31∕T 668.17-2020 節(jié)能技術(shù)改造及合同能源管理項目節(jié)能量審核與計算方法 第17部分:異形柔性保溫
- 活動目標分析幼兒園
- 上海海關(guān)學院《中國近代史》2023-2024學年第一學期期末試卷
- 手術(shù)患者的心理問題及干預
- 1+x信號試題(含參考答案)
- 服務認知培訓
- 加強新時代中小學科學教育的戰(zhàn)略規(guī)劃
- 情感類繪本教學課程設計
- 有關(guān)語言管理課程設計
- 人教版語文七年級下冊第21課《偉大的悲劇》練習教學設計
- 大學體育與科學健身智慧樹知到期末考試答案章節(jié)答案2024年溫州醫(yī)科大學
- 24秋國家開放大學《計算機系統(tǒng)與維護》實驗1-13參考答案
- 邀請函模板完整
- 送你一個字評語2022
- 放射科優(yōu)質(zhì)護理服務PPT學習教案
- GB_T 22627-2022水處理劑 聚氯化鋁_(高清-最新版)
- 教學團隊建設總結(jié)報告
- 破產(chǎn)法PPT課件
- 看守所釋放證明書
- ZDY6000L鉆機使用說明書
- 魚骨圖-PPT模板
評論
0/150
提交評論