版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM中断控制专用寄存器及部分解答2007-12-19 22:05寄存器地址读/写描述复位值SRCPND源挂起寄存器4A000000R/W0=中断没有发出请求;1=中断源发出中断请求00000000INTMOD中断模式寄存器4A000004R/W0=IRQ模式1=FIQ模式00000000INTMSK中断屏蔽寄存器4A000008R/W0=允许响应中断;1=中断请求被屏蔽FFFFFFFFINTPND中断挂起寄存器4A000010R/W0=未发生中断请求1=中断源发出中断请求00000000PRIORITY中断优先权寄存器4A00000CR/WIRG优先级控制寄存器7F一、中断控制寄存器位SRC
2、PNDBit描述复位值INT_ADC31模数转换中断位0INT_RTC30实时时钟中断位0INT_SPI129SPI1中断位0INT_UART028串口0中断0INT_IIC27IIC0INT_USBH26USB主机0INT_USBD25USB设备0保留24保留0INT_UART123串口1中断0INT_SPI022SPI0中断INT_SDI21INT_DMA320INT_DMA219INT_DMA118INT_DMA017INT_LCD16INT_UART215INT_TIMER414INT_TIMER313INT_TIMER212INT_TIMER111INT_TIMER010INT_WD
3、T9INT_TICK8nBATT_FLT7保留6EINT8_235EINT4_74EINT33EINT22EINT11EINT00 s2440IOP->rEINTPEND = 0x200; /EINT9 (0b0010 0000 0000) s2440IOP->rEINTMASK &= 0x200; s2440IOP->rEINTPEND&
4、#160; = 0x100; /EINT9 s2440IOP->rEINTMASK &= 0x100;所以 EINT11=0X800 即 0b1000 0000 0000-估计,呵呵下面我将讲解每个寄存器在一个中断处理流程中所扮演的角色SRCPND/ SUBSRCPND这两个寄存器在功能上是相同的,它们是中断源引脚寄存器,在一个中断异常处理流程中,中断信号传进中断异常处理模块后首先遇到的就是SRCPND/ SUBSRCPND,这两个寄存器的作用是用于标示出哪个中断请求被触
5、发。SRCPND的有效位为32,SUBSRCPND 的有效位为11,它们中的每一位分别代表一个中断源。SRCPND为主中断源引脚寄存器,SUBSRCPND为副中断源引脚寄存器。这里列举出SRCPND的各个位信息:SRCPND.jpg (140.83 KB)2007-3-23 21:13每个位的初始值皆为0。假设现在系统触发了TIMER0中断,则第10bit将被置1,代表TIMER0中断被触发,该中断请求即将被处理(若该中断没有被屏蔽的话)。SUBSRCPND情况与SRCPND相同,这里就不多讲了。INTMOD寄存器有效位为32位,每一位与SRCPND中各位相对应,它的作用是指定该位相应的中断源
6、处理模式(IRQ还是FIQ)。若某位为0,则该位相对应的中断按IRQ模式处理,为1则以FIQ模式进行处理,该寄存器初始化值为0x00000000,即所有中断皆以IRQ模式进行处理。(详细请参考s3c2410操作手册)。INTMSK/ INTSUBMSK 寄存器为中断屏蔽寄存器 ,INTMSK为主中断屏蔽寄存器,INTSUBMSK为副中断屏蔽寄存器。INTMSK有效位为32,INTSUBMSK有效位为11,这两个寄存器各个位与SRCPND和SUBSRCPND分别对应。它们的作用是决定该位相应的中断请求是否被处理。若某位被设置为1,则该位相对应的中断产生后将被忽略(CPU不处理该中断请求),设置为
7、0则对其进行处理。这两个寄存器初始化后的值是0xFFFFFFFF和0x7FF,既默认情况下所有的中断都是被屏蔽的。到目前为止我们总共讲解了SRCPND,INTMOD,INTMSK,SUBSRCPND,INTSUBMSK五个寄存器,在继续讲解PRIORITY寄存器之前我们先来看一张图。Priority1.jpg (63.02 KB)2007-3-23 21:13先 弄清楚一点,现在要讨论的是一个中断优先级的判断问题。为什么会有中断有先级的问题呢?我们知道CPU某个时刻只能对一个中断源进行中断处理,如果现在有 3个中断同时发生了,那CPU要按什么顺序处理这个3个中断呢?这正是引入优先级判断的原因所
8、在,通过优先级判断,CPU可以按某种顺序逐个处理中断请 求。3sc2410的优先级判断分为两级。如上图所示,SRCPND寄存器对应的32个中断源总共被分为6个组,每个组由一个ARBITER(05)寄存器对其进行管理。中断必须先由所属组的ARBITER(05)进行第一次优先级判断(第一级判断)后再发往ARBITER6进行最终的判断(第二级判断)。ARBITER(05)这六个组的优先级已经固定,我们无法改变,也就是说由ARBITER0控制的该组中断优先级最高(该组产生的中断进行第一级判断后永远会以REQ0向ARBITER6传递过去)其次是ARBITER1, ARBITER2, ARBITER4,
9、ARBITER4, ARBITER5.我们能够控制的是某个组里面各个中断的优先级顺序。怎么控制?通过PRIORITY寄存器进行控制:以下是PRIORITY寄存器各个位的参数表Priority2.jpg (85.06 KB)2007-3-23 21:13从表上我们可以知道PRIORITY寄存器内部各个位被分为两种类型,一种是ARB_MODE,另一种为ARB_SEL, ARB_MODE类型有5组对应ARBITER(26),ARB_SEL类型有7组对应ARBITER(06)。现在我将以ARBITER2为例,讲解中断组与PRIORITY寄存器中ARB_SEL, ARB_MODE之间的相互关系。首先我们
10、看到ARBITER2寄存器管理的该组中断里包括了6个中断,分别是INT_TIMER0,INT_TIMER1,INT_TIMER2,INT_TIMER3,INT_TIMER4,INT_UART2,她们的默认中断请求号分别为REQ0,REQ1,REQ2,REQ3,REQ4,REQ5。我们先看PRIORITY寄存器中的ARB_SEL2,该参数由两个位组成,初始值为00。从该表可以看出00定义了一个顺序 0-1-2-3-4-5 ,这个顺序就是这组中断组的优先级排列,这个顺序指明了以中断请求号为0(REQ0)的INT_TIMER0具有最高的中断优先级,其次是INT_TIMER1,INT_TIMER2。假
11、设现在ARB_SEL2的值被我们设置为01。则一个新的优先级次序将被使用,01对应的优先级次序为0-2-3-4-1-5,从中可以看出优先级最高和最低的中断请求和之前没有变化,但本来处于第2优先级的INT_TIMER1中断现在变成了第5优先级。从ARB_SEL2被设置为00,01,10,11各个值所出现的情况我们可以看出,除最高和最低的优先级不变以外,其他各个中断的优先级其实是在做一个旋转排列(rotate)。为了达到对各个中断平等对待这一目标,我们可以让优先级次序在每个中断请求被处理完之后自动进行一次旋转,如何自动让它旋转呢?我们可以通过ARB_MODE2达到这个目的,该参数只有1个 bit,
12、置1代表开启对应中断组的优先级次序旋转,0则为关闭。事实上当该位置为1之后,每处里完某个组的一个中断后,该组的ARB_SEL便递增在1(达到11后恢复为00)。现在我们另ARB_MODE2=1,ARB_SEL2=00则当前ARBITER2的优先级顺序为0-1-2-3-4-5,假设现在该组的1号中断请求INT_TIMER1和2号中断请求INT_TIMER2被同时触发,CPU根据优先级判断后决定先把INT_TIMER1中断向ARBITER6进行发送(在ARBITER6做第最终优先级判断),接着再向ARBITER6发送INT_TIMER2中断。请注意,在INT_TIMER1被处理完毕后,该组中段的优
13、先级次序被自动做了一次旋转,旋转后ARBITER2的优先级顺序变为0-2-3-4-1-5。假设之后某个时刻该组的INT_TIMER1和INT_TIMER2又被同时触发,则此时CPU优先处理的会是INT_TIMER2。若我们另ARB_MODE2=0,则改组的中断优先级次序在任何情况下都不做任何改变,除非我们人为地重新设置了ARB_SEL2的值。呼。好累。终于说完了麻烦的优先级-_-继续。INTPND 寄存器可能是整个中断处理过程中我们要特别注意的一个寄存器了,他的操作比较特别,怎么特别?请听我慢慢道来.: 先看一下该寄存器各位详细功能列表INTPND.jpg (106.79 KB)2007-3-
14、23 21:13正如你所见的,INTPND 寄存器与SRCPND长得一模一样,但他们在中断异常处理中却扮演着不同的角色,如果说SRCPND是中断信号进入中断处理模块后所经过的第一个场所的话,那么INTPND 则是中断信号在中断处理模块里经历的最后一个寄存器。它的每个位对应一个中断请求,若该位被置1,则表示相应的中断请求被触发,描述到这里你可能会发现它不仅和SRCPND长得一模一样,就连功能都一样,其实不然,他们在功能上有着重大的区别。SRCPND是中断源引脚寄存器,某个位被置1表示相应的中断被触发,但我们知道在同一时刻内系统可以触发若干个中断,只要中断被触发了,SRCPND的相应位便被置1,也
15、就是说SRCPND 在同一时刻可以有若干位同时被置1,然而INTPND则不同,他在某一时刻只能有1个位被置1,INTPND 某个位被置1(该位对应的中断在所有已触发的中断里具有最高优先级且该中断没有被屏蔽),则表示CPU即将或已经在对该位相应的中断进行处理。于是我们可以有一个总结:SRCPND说明了有什么中断被触发了,INTPND说明了CPU即将或已经在对某一个中断进行处理。特别注意:每当某一个中断被处理完之后,我们必须手动地把SRCPND/SUBSRCPND , INTPND三个寄存器中与该中断相应的位由1设置为0,刚才我说INTPND的操作很特别,它的特别之处就在于对当我们要把该寄存器中某
16、个值为1的位设置为0时,我们不是往该位置0,而是往该位置1。假设SRCPND=0x00000003,INTPND=0x00000001,该值说明当前0号中断和1号中断被触发,但当前正在被处理的是0号中断,处理完毕后我们应该这样设置INTPND和SRCPND:SRCPND=0x00000002 /位0被置为0INTPND =0x00000001 /位0被置为0(方法是往该位写入1)另一种直接的方法:INTPND =INTPND INTOFFS
17、ET寄存器的功能则很简单,它的作用只是用于表明哪个中断正在被处理。下面是该寄存器各位详细功能列表INTODDSET.jpg (40.79 KB)2007-3-23 21:13若当前INT_TIMER0被触发了,则该寄存器的值为10,以此类推。现在我把整个中断流程用一个图加以说明1.jpg (20.35 KB)2007-3-23 21:13attach21/attach以上这个图清楚地说明了一个中断异常处理流程。下面我用INT_TIMER0, INT_TIMER2和INT_UART0三个中断完整地介绍一次中断异常处理。首先我们得做几个假设:假设1:这三个中断的屏蔽被取消。假设2:PRIORITY
18、寄存器中ARB_MODE2,ARB_MODE5皆为0,既不进行优先级的自动旋转排序,任何时候 ARBITER2,ARBITER5控制的中断组优先级次序分别为0-1-2-3-4-5和1-2-3-4。假设3:这三个中断皆为IRQ类型。假设4:这三个中断同时被触发。INT_TIMER0, INT_TIMER2和INT_UART0三个中断被同时触发,此时三个中断信号流向SRCPND寄存器,使该寄存器中的第10位,12位,28位被置为1,中断信号继续向前流经INTMASK 寄存器,这三个中断都没有被屏蔽,于是信号进一步
19、流经INTMODE寄存器,这三个中断皆为IRQ类型,故中断信号继续向前流向PRIORITY寄存器,经过优先级判断,INT_TIMER0中断信号使INTPND 寄存器的第10位置1(INT_TIMER0优先级最高),此时INTOFFSET 寄存器的值为10,CPU转向相应的中断服务例程进行处理。处理完毕后,我们的程序将INTPND和SRCPND的第10置为0,至此INT_TIMER0中断处理完毕。此时SRCPND 的第12位,28位仍为1(这两个中断请求未被处理),故他们会继续被CPU已刚才描述的方式进行处理。中断异常处理就先讲到这吧 :SRCPND和EINTPEND都是寄存器,这里对他们两个都清中断这里要详细参见CPU手册当外部有一个中断时候,SRCPND相应的位就会被置1。通常时候是0,管理硬件的。INTPND,当处理中断了,就把相应的位置1。处理内部中断。当向1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年个人汽车长租协议书
- 发廊多人入股合同模板
- 临沂二手房购房合同模板
- 果树认养协议书范本
- 服务劳动合同模板
- 建筑工程安全验收方案
- 医院弱电合同模板
- 土地流转养牛合同模板
- 上海高空作业合同模板
- 2024年伤员工伤赔偿协议:权益明确书
- 辽宁省大连市金普新区2024-2025学年七年级上学期11月期中英语试题(无答案)
- 河南科技大学《材料科学基础》2021-2022学年第一学期期末试卷
- 区病案质控中心汇报
- 2024塔吊司机的劳动合同范本
- 2024年国家公务员考试《行测》真题卷(副省级)答案及解析
- 2024年新华社招聘应届毕业生及留学回国人员129人历年高频难、易错点500题模拟试题附带答案详解
- 江苏省南京市秦淮区2023-2024学年八年级上学期期中语文试题及答案
- 2024年个人车位租赁合同参考范文(三篇)
- (完整版)新概念英语第一册单词表(打印版)
- 签申工作准假证明中英文模板
- 员工履历表(标准样本)
评论
0/150
提交评论