S3c44b0x中断控制器功能及应用.ppt
S3c44b0 x中断控制器功能及应用 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望提纲S3c44b0 x中断概述S3c44b0 x中断控制器的操作优先级判断特殊功能寄存器概述可接收30个中断源的中断请求中断源在30个中断源中,有26个是独立的,4个外部中断(EINT4/5/6/7)是逻辑”或”的关系,共用同一个中断源,另外两个UART(INT_UERR0/1)同样共用一个中断源中断控制器的操作中断模式 FIQ(快速中断请求)和IRQ(通用中断请求)程序状态寄存器(CPSR)的F位和I位0(接受)1(不接受)(响应中断)F,I清0;(低电平有效)优先级判断FIQ高于IRQ中断优先级产生模块矢量中断模式中断优先级产生模块中断优先级FIQIRQ若处于不同主群,主群的优先级高的则高若处于相同主群,优先级高的则高sGA,sGB,sGC,sGD的优先级高于mGKA,mGKBsGA,sGB,sGC,sGD的优先级是可编程的,mGKA,mGKB中mGKAmGKB1个主单元和四个从单元主优先级产生单元管理4个从单元和两个中断源每个从优先级产生单元管理6个中断源每个从单元都有4个可编程优先级中断源(SGn)和两个固定的的优先级中断源(sGKn),这两个在6个中断源中优先级最低主优先级单元决定了4个从优先级单元和2个中断源的优先级,2个中断源在26个中断中优先级最低矢量中断模式一般:通过读取优先级寄存器来确定哪个中断被优先执行(需要很长的中断反应时间)S3c44b0 x 中断控制器硬件优先级逻辑会判断哪个中断将被执行,同时硬件逻辑自动执行由0 x18(或0 x1c)地址的各个中断源的跳转指令,然后再由中断源向量进入相应的中断处理程序.可以缩短中断响应时间0 x18(通用中断请求)0 x1c(快速中断请求)based on priority by software if there are 10 interrupt requests at the same time,you can determine the intrruptservice priority by reading the interrupt pengding register,which indicates the type of interrupt request that will accur.vectored interrupthardware inside the s3c44b0 x controller provides the interrupt service directly when the multiple interrupt sources request interruptsthe hardware priority logic determines which interrupt should be serviced.At the same time,this hardware logic applies the jump instruction of the vector table to 0 x18(or ox1c),which performs the jump to the corresponding service routine.reduce the interrupt latency dramaticallydetailhttp:/ 中断模式寄存器中断屏蔽寄存器IRQ向量模式相关寄存器IRQ从群优先级寄存器IRQ主群优先级寄存器当前IRQ从群优先级寄存器当前IRQ主群优先级寄存器IRQ中断服务挂起寄存器IRQ/FIQ中断挂起清零寄存器中断控制寄存器INTCON寄存器位0为FIQ使能位,1为IRQ使能位2选择矢量中断模式还是普通模式中断挂起寄存器INTPND共26位,每一位对应一个中断源,当中断请求产生时,相应的位就设置为1如果几个中断源同时发出中断请求,不管有没有被屏蔽,相应的挂起位置1,优先级寄存器根据优先级来响应优先级最高的中断服务程序中必须对中断挂起清零寄存器I_ISPC,F_ISPC写1来清除挂起是只读寄存器中断挂起寄存器INTPEN中断模式寄存器INTMOD共26位每一位对应一个中断源当模式位设置为1时,对应的中断以FIQ模式来处理当模式位设置为0时,对应的中断以RIQ模式来处理 中断屏蔽寄存器INTMSK每一位都对应一个中断源(除了全局和保留位)屏蔽位为1时,对应的中断被屏蔽屏蔽位为0时,对应的中断正常执行如果全局屏蔽位设置为1,所有的中断都不执行注意如果使用了矢量中断模式,在中断服务程序中改变了中断屏蔽寄存器的值,这时并不能屏蔽相应的中断原因:中断在中断屏蔽寄存器之前已经被中断挂起挂起寄存器锁定.解决方法:在改变中断屏蔽寄存器后,再清除相应的挂起位IRQ向量模式相关寄存器从单元中的4个可编程的中断源(sGn)的优先级由I_PSLV决定主单元通过I_PMST来决定4个从单元和2个中断源的优先级I_ISPR显示当前优先级最高的中断源I_CSLV I_CMST (当前优先级寄存器)I_IPSC F_IPSC (清除寄存器)IRQ向量相关寄存器从群优先级寄存器I_PSLV决定每个从群中4个中断源的优先级即使相应的中断源没有用到,也须配置不同的优先级位位名称描述初始值31:24PSLAVEmGA 确定mGA中sGA、B、C、D的优先级 0 x1B23:16PSLAVEmGB 确定mGB中sGA、B、C、D的优先级 0 x1B15:8PSLAVEmGC 确定mGC中sGA、B、C、D的优先级 0 x1B7:0PSLAVEmGD 确定mGD中sGA、B、C、D的优先级 0 x1B幻灯片 71主群优先级寄存器I_PMST决定4个从群的优先级位位名称描述初始值15:13Reserved保留00012M操作模式0=Round Robin1=Fix Mode111:8FxSLVA:D从操作模式0=Round Robin1=Fix Mode1117:0PMASTER确定4个主单元的优先级0 x1B当前IRQ主群优先级寄存器I_CMST表示从群中各中断源当前的优先级位位名称描述初始值15:14 Reserved保留013:8VECTOR对应分支机器代码的低6位不确定7:0CMSATER Master的当前优先级00011011 当前IRQ从群优先级寄存器I_CSLV位位名称描述初始值31:24PSLAVEmGA 确定mGA中sGA、B、C、D的优先级 0 x1B23:16PSLAVEmGB 确定mGB中sGA、B、C、D的优先级 0 x1B15:8PSLAVEmGC 确定mGC中sGA、B、C、D的优先级 0 x1B7:0PSLAVEmGD 确定mGD中sGA、B、C、D的优先级 0 x1B表示从群中各中断源当前的优先级IRQ中断服务挂起寄存器I_ISPR0=不响应1=现在响应虽然有多个中断挂起位被打开,但只有1位发生作用IRQ/FIQ中断挂起清零寄存器I_ISPC/F_ISPC清除中断挂起位INTPND1清除未响应的中断请求0 不变在中断服务程序末尾,相应的挂起位必须被清零 Thanks