好S3C2440的中断控制器.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
好S3C2440的中断控制器

S3C2440的中断控制器 收藏 S3C2440的中断控制器 S3C2440有60个中断源。这些中断源是由诸如DMA控制器、UART、IIC等片内外设提供的。 当从片内外设和外部中断请求引脚获得多个中断请求时,在仲裁程序完成之后,中断控制器向核ARM920T发出FIQ或IRQ请求。 这个仲裁程序取决于硬件优先逻辑并将仲裁结果写入中断请求寄存器(interrupt pending register,INTPND)。 中断控制器的操作 ARM提供FIQ和IRQ异常中断用于外部设备向CPU请求中断服务,一般情况下都采用IRQ中断.那么FIQ和IRQ与什么寄存器有关呢?包括PSR和INTMOD 程序状态寄存器(Program Status Register,PSR)的F位和I位,这两位是用来控制FIQ和IRQ的。 如果CPU ARM920T的PSR寄存器中F位置1,CPU就不接受来自中断控制器的快速中断请求(Fast Interrupt Request,FIQ)。类似的如果I位置1,CPU就不接受来自中断控制器的中断请求(Interrupt Resquest)。因此,我们可以通过将PSR的F位或者I位清零,同时将INTMSK相应的位清零使中断控制器可以接收到对应的中断请求 中断模式寄存器——INTMOD(INTERRUPT MODE) 中断模式寄存器有32位,每一位都对应一个中断源,INTMOD相应的位置1,ARM核就已FIQ模式响应中断;同样的,INTMOD相应的位置0,就已IRQ模式响应中断。 中断优先级 每一个仲裁机构依赖于一位的仲裁模式控制器(ARB_MODE)和两位的选择控制器信号(ARB_SEL)来对6路中断请求进行处理。具体参见S3C2440_datasheet。 中断控制器 SRCPND(SOURCE PENDING)——源中断指示寄存器 SRCPND寄存器32位中每一位对应着一个中断源,哪一位置1,则相应的中断源产生了中断请求并且等待中断服务。要注意,SRCPND寄存器每一位的置位与INTMSK寄存器中的屏蔽位是否置1无关,是由中断源自动置位的,但要清除该位,即将该位清零,是需要手动操作的。这就是说在响应中断之后,SRCPND寄存器相应的位必须被清除,也就是清零,这样才能正确的再次响应同一中断源的中断请求,如果没有这么做,那就会一直响应该中断,出现如图1所示情况,即这种不停响应中断的情况并不是用户所期望的。 这里要注意,如何清除指定位呢?方法是向指定位写1,没错是写1,这样相应的位就被清零了。 例如: rSRCPND |= 0xFFFFFFFF; 这条语句执行完之后,rSRCPND的值就是0 图1未清除制定位导致错误的中断响应 SRCPND地址 SRCPND每一位所代表的中断源 INTPND(INTERRUPT PENDING)——中断请求寄存器 中断请求寄存器每一位对应着相应的中断请求,经过优先级逻辑后,INTPND只能有一位被置1,并向CPU产生中断请求,在IRQ中断服务子程序中,读取该寄存器值来决定响应哪一个中断。 与SRCPND类似,在响应中断后,相应的位需要清零,也是向寄存器相应位写1,来清除指定位。 例如: rINTPND |= bit; 这里的bit就是相应的位,此条语句执行完之后,rINTPND值为0。如果响应中断后不清除相应的位,那么出现如图1同样的错误,即不断响应该中断。 同样我们要注意到,只有在IRQ模式下的中断发生,INTPND相应的位才置1,如果FIQ模式的中断发生了,不会对INTPND相应的位产生影响。 INTPND地址 INTPND每一位对应的中断源与SRCPND相同 INTMSK(INTERRUPT MASK)——中断屏蔽寄存器 在INTMSK寄存器中,32位一次对应着每个中断源,如果某一位被置1,CPU将不会响应该中断源的中断请求,即SRCPND被置1但INTPND不变。如果每一位都为0,那么所有中断请求都会被响应。 INTMSK地址 INTMSK每一位对应的中断源与SRCPND相同 INTOFFSET(INTERRUPT OFFSET)——中断偏移寄存器 中断偏移寄存器INTOFFSET中的值显示了INTPND寄存器中的哪一个IRQ被响应,这个位在清除SRCPND和INTPND后将自动被清除。 这里要注意,与INTPND寄存器相似,FIQ模式的中断并不影响INTOFFSET寄存器,INTOFFSET只对IRQ有效。 SUBSRCPND(SUB SOURCE PENDING)——次级中断指示寄存器 其用法与注意事项与SRCPND相同。用完清零,方法同样为写1,但要记住,先清除SUBSRC

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档