版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、EINT外部中斷1、 ARM異常中斷IRQ(一般中斷)和FIQ(快速中斷)不是具體的中斷源,而是中斷的類型。我們是可以將一個中斷源的類型設(shè)置成FIQ也可以設(shè)置成IRQ。在使用FIQ響應(yīng)的時間比IRQ要短,其他方面沒有什么區(qū)別。但是一般情況下,在一個平臺內(nèi),我們只能將一個中斷源設(shè)置成FIQ。2、 S5PV210的中斷源1、 總共有93個,其中外部中斷有32個。2、 93個中斷源分成了4個中斷控制器(VIC)3、 具體中斷源(210手冊p1-5)注意:所有的中斷源產(chǎn)生的中斷最終都有VIC0中斷控制器提交給S5PV210內(nèi)核,所以,在中斷服務(wù)函數(shù)中做清除中斷處理時,要將4個的VICADDRESS寄存
2、器都要做寫操作。3、 外部中斷設(shè)計流程中斷控制: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是一個二級中斷,對應(yīng)的一級入口是EINT16_31。6、 中斷的初始化(設(shè)置SFR)1、 將GPH2_0設(shè)置成EINT162、 設(shè)置EINT16的觸發(fā)方式3、 設(shè)置外部中斷的濾波器4、外部中斷pending(判斷/清除寄存器)5、 外部中斷的開關(guān)(屏蔽)寄存器6、 設(shè)置
4、中斷類型EINT16->VIC0INTSELECT7、中斷向量地址寄存器1) VIC0ADDRESS讀:該寄存器放置的是正在響應(yīng)的入口中斷處理程序的入口地址。該入口地址是在對應(yīng)中斷源向量地址寄存器(VIC0VECTADDRn)中初始化的。寫:向該寄存器寫0,用來清除中斷。2) VIC0VECTADDRn在中斷初始化的時候,將中斷處理程序的入口地址保存到該寄存器。8、 中斷的開關(guān)寄存器7、 程序的設(shè)計1、 程序入口(start.S).global _start.global IRQ_handle_start:ldrsp, =0x40000000初始化棧,stack放在DDR2mov r0,
5、 #0x53msr CPSR_cxsf, r0 ARM進(jìn)入管理模式,并關(guān)閉FIQ、打開IRQbl clock_init初始化210的系統(tǒng)時鐘b main調(diào)用了main,進(jìn)入中斷初始化IRQ_handle: IRQ中斷的處理程序,在ARM響應(yīng)IRQ中斷時,會進(jìn)入該程序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、 中斷響應(yīng)過程1) 異常中斷的向量地址當(dāng)ARM接收到IRQ中斷后,PC就會指向0x0000_0018。一般在0x0000_0018上放一個跳轉(zhuǎn)到IRQ中斷處理的函數(shù)位置。2) S5PV210的BL0BL0是一個啟動加載程序,存放在210的IROM,用戶是不能改寫的。BL0的作用:3) 中斷的響應(yīng)過程(EINT16)1、 當(dāng)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)場恢復(fù),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當(dāng)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)容里面會有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 緊固件 彈簧墊圈 輕型 編制說明
- 蓮池小學(xué)實習(xí)點總結(jié)
- 語文慈溪第三試驗小學(xué)
- 打井施工組織設(shè)計
- 江蘇省淮安市洪澤區(qū)四校2023-2024學(xué)年五年級上學(xué)期月考數(shù)學(xué)試卷(12月份)
- 黃山市屯溪區(qū)2025屆數(shù)學(xué)六年級第一學(xué)期期末考試試題含解析
- 廣東省惠州市惠城區(qū)新城學(xué)校2023-2024學(xué)年九年級上學(xué)期期中考試英語試卷
- 山西省卓越聯(lián)盟考試2024-2025學(xué)年高二上學(xué)期10月月考英語試題(無答案)
- DB34-T 4846-2024 農(nóng)村水系管理維護(hù)指南
- 5.3《怎樣搭得高》(教案)2023-2024學(xué)年一年級上冊數(shù)學(xué)北師大版
- 2024年鉆機(jī)打孔工程承包協(xié)議書范本
- GB/T 23024-2024制造業(yè)數(shù)字化仿真分類
- 城市旅游宣傳片制作投標(biāo)方案(技術(shù)方案)
- 醫(yī)院整體搬遷服務(wù) 投標(biāo)方案(技術(shù)方案)
- 人教版(新)三年級數(shù)學(xué)上冊 第八單元 1.分?jǐn)?shù)的初步認(rèn)識-幾分之一【課件】
- 結(jié)構(gòu)力學(xué)基礎(chǔ)概念:結(jié)構(gòu)的模態(tài)分析:結(jié)構(gòu)模態(tài)分析的實驗方法
- 2024年大學(xué)生民族團(tuán)結(jié)知識競賽試題及答案
- 小學(xué)五年級英語選擇題200道附答案(完整版)
- 2024年全國執(zhí)業(yè)醫(yī)師資格證之臨床助理醫(yī)師考試重點試題(附答案)
- 2024屆湖南省機(jī)場管理集團(tuán)校園招聘(高頻重點提升專題訓(xùn)練)共500題附帶答案詳解
- 2024年全國各地中考語文真題分類匯編【第二輯】專題07 文言文對比閱讀(含答案)
評論
0/150
提交評論