2017嵌入式第10讲中断.ppt

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

I/O端口及中断控制器 阅读P156-P159 思考以下问题 S3C2410A共有多少个中断源?多少个外部中 断源?外部中断的触发方式如何设置?中断标志 位在哪些寄存器里?某中断是否允许由哪个寄存器控制?中断优先级由哪个寄存器控制?中断处理的流程是什么样的? 中断控制器概述 S3C2410A片内的中断控制器,接收来自56个中断源的中断请求。这些中断源由S3C2410A外部中断请求引脚和片内外设提供。片内外设包括DMA控制器、UART、IIC等。在这些中断源中,UARTn的INT_ERRn、INT_RXDn和INT_TXDn经过逻辑或以后送到中断控制器,作为INT_UARTn。EINT4~EINT7、EINT8~EINT23经过逻辑或以后送到中断控制器,作为EINT4_7、EINT8_23。 当从片内外设和外部中断请求引脚接收到多个中断请求时,中断控制器经过仲裁处理后,向ARM920T内核请求FIQ或IRQ中断。 仲裁处理取决于硬件优先权逻辑,并且仲裁结果写入中断挂起寄存器INTPND(interrupt pending register)。用这种方法可以帮助用户,告知在多个中断请求源中,哪一个经过仲裁并送到ARM920T内核。 有了中断请求,请求源的保存可以分为两种。一种是带子请求寄存器的,如UARTn的INT_ERRn、INT_RXDn和INT_TXDn,有了中断请求,请求源要保存在子源挂起寄存器SUBSRCPND中;另一种是不带子请求寄存器的,如INT_DMA3,有了中断请求,请求源要保存在源挂起寄存器SRCPND中。对于带子请求寄存器的,还要检查中断子屏蔽寄存器INTSUBMSK是否对某一个子请求源进行了屏蔽,只有不屏蔽,才能在源挂起寄存器SRCPND中对应位置1。之后,一个或多个中断请求要判断是否被屏蔽;是IRQ模式还是FIQ模式;如果是IRQ模式还要判断多个中断请求的优先权;最后以IRQ或FIQ请求送ARM920T内核。 中断处理示意图。 外部中断EINT4~EINT7、EINT8~EINT23的请求,要在外部中断挂起寄存器EINTPEND中保存,检查外部中断屏蔽寄存器EINTMASK是否屏蔽,如果不屏蔽,才能送到源挂起寄存器SRCPND的对应位EINT4_7、EINT8_23。 中断控制器用到的S3C2410A引脚信号有EINT0~EINT23和nBATT_FLT。 中断控制器特殊功能寄存器 ⒈ 程序状态寄存器(PSR)中的F位和I位 如果ARM920T CPU中的PSR的F位被设置为1,CPU不接受来自中断控制器的快速中断请求(Fast Interrupt Request,FIQ)。同样,如果I位被设置为1,CPU不接受来自中断控制器的中断请求(Interrupt Request,IRQ)。因此,通过清除PSR的F位或I位为0,同时设置中断屏蔽寄存器INTMSK的对应位为0,送到中断控制器的中断请求才能被处理。 ⒉中断模式寄存器 ARM920T有2种类型的中断模式:FIQ或IRQ,所有的中断源在中断请求时,要确定该中断源被设置成哪一种模式。中断模式寄存器INTMOD中的每1位,指示一个中断源被设置成了哪一种模式。 中断模式寄存器INTMOD由32位组成,它们中的每一位对应一个中断源。中断模式寄存器INTMOD地址为0x4A000004,可读写,Reset值为0 ⒊ 源中断挂起寄存器 S3C2410A中有两个中断挂起寄存器,一个是源挂起寄存器SRCPND,另一个是中断挂起寄存器INTPND。这两个挂起寄存器指示一个中断请求是或否被挂起(记录)。当多个中断源同时请求中断服务时,寄存器SRCPND多个对应位被设置成1。与此同时,经过仲裁处理后,寄存器INTPND中仅仅1位被自动地设置为1。如果多个中断被屏蔽,这些中断源同时请求中断服务时,寄存器SRCPND中的对应位仍被设置为1,但是不引起寄存器INTPND值的改变。当寄存器INTPND中的1位被设置为1时,如果这1位对应IRQ请求,并且PSR中的I位为0;或者这1位对应FIQ请求,并且PSR中的F位为0,就会进入相应的中断服务程序。 寄存器SRCPND和INTPND能被读或写,中断服务程序必须清除相应的挂起位,方法是通过写1到SRCPND的对应位,能够将该位清0。然后再写1到INTPND的对应位,能够将INTPND的对应位清0。 中断挂起寄存器(interrupt pending register),也译作中断未决寄存器。 源挂起寄存器SRCPND由32位组成,其中每1位与1个中断源相对应。 源挂起寄存器SRCPND地址为0x4A000000,可读写,Reset值为0 子源挂起寄存器 子源挂起寄

文档评论(0)

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

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

1亿VIP精品文档

相关文档