资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,S3c44b0 x中断控制器功能及应用,第17小组:,SC06011051 田昆阳,SA06157052 成二康,SC06011050 张仁志,提纲,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,mGKB,sGA,sGB,sGC,sGD的优先级是可编程的,mGKA,mGKB中mGKAmGKB,1个主单元和四个从单元,主优先级产生单元管理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 intrrupt,service priority by reading the interrupt,pengding register,which indicates the type of,interrupt request that will accur.,vectored interrupt,hardware inside the s3c44b0 x controller,provides the interrupt service directly when the multiple interrupt sources request interrupts,the 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 dramatically,detail,特殊功能寄存器,中断控制寄存器,中断挂起寄存器,中断模式寄存器,中断屏蔽寄存器,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:24,PSLAVEmGA,确定mGA中sGA、B、C、D的优先级,0 x1B,23:16,PSLAVEmGB,确定mGB中sGA、B、C、D的优先级,0 x1B,15:8,PSLAVEmGC,确定mGC中sGA、B、C、D的优先级,0 x1B,7:0,PSLAVEmGD,确定mGD中sGA、B、C、D的优先级,0 x1B,幻灯片 7,1,主群优先级寄存器I_PMST,决定4个从群的优先级,位,位名称,描述,初始值,15:13,Reserved,保留,000,12,M,操作模式,0=Round Robin,1=Fix Mode,1,11:8,FxSLVA:D,从操作模式,0=Round Robin,1=Fix Mode,111,7:0,PMASTER,确定4个主单元的优先级,0 x1B,当前IRQ主群优先级寄存器I_CMST,表示从群中各中断源当前的优先级,位,位名称,描述,初始值,15:14,Reserved,保留,0,13:8,VECTOR,对应分支机器代码的低6位,不确定,7:0,CMSATER,Master的当前优先级,00011011,当前IRQ从群优先级寄存器I_CSLV,位,位名称,描述,初始值,31:24,PSLAVEmGA,确定mGA中sGA、B、C、D的优先级,0 x1B,23:16,PSLAVEmGB,确定mGB中sGA、B、C、D的优先级,0 x1B,15:8,PSLAVEmGC,确定mGC中sGA、B、C、D的优先级,0 x1B,7:0,PSLAVEmGD,确定mGD中sGA、B、C、D的优先级,0 x1B,表示从群中各,中断,源当前的优先级,IRQ中断服务挂起寄存器I_ISPR,0=不响应,1=现在响应,虽然有多个中断挂起位被打开,但只有1位发生作用,IRQ/FIQ中断挂起清零寄存器I_ISPC/F_ISPC,清除中断挂起位INTPND,1清除未响应的中断请求,0 不变,在中断服务程序末尾,相应的挂起位必须被清零,Thanks,
展开阅读全文