硬件中断.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
硬件中断

中断原理及应用 ---闵建 有过裸机开发经验的工程师都很清楚中断的重要性。学习一款处理器,异常处理机制可谓是其精髓所在,而硬件中断又是异常处理中的一种很典型并且使用很频繁的情况。 把握这一块内容需要大家明了两个方面的内容。 (1) 处理器的异常处理机制(中断是处理器众多异常中的一种) (2) SOC对中断的硬件支持(中断控制器) 接下来以三星公司生产的基于ARM 核为CORTEX-A8的SOC,型号为S5PC100, 来阐述下中断的原理及使用。 中断的概念。 中断,顾名思义,就是打断一个正在发生的事件。其中包括三方面的内容:1 是打断当前的事件;2 处理紧急事件 3 回到之前打断的事件继续执行。举个简单的例子, 比如老师正在讲课,你有非常重要的事件需要老师帮你解决,于是你举手打断老师讲的内容去处理你的问题,老师解决了你的问题后又回到被打断前的内容接着往下讲。由这个简单的例子你可以看出来一个完整的中断流程需要注意几个方面的问题:1 必须有一种途径能打断正在进行的事件(如学生举手);2 打断后必须能顺利的去执行一个更为紧迫的事件(如果多个学生都有问题的话,势必要定位哪个问题是哪个学生提出的,并且还要考虑多个学生同时申请问题的情况)3 怎么顺利返回去(老师回到之前讲课的内容)。 1.1 中断的产生 先来解决第一个问题也就是中断怎么发生的, 图1 经典ARM核内部框图 上图为一款ARM核内部框图,注意看标红的部分。ARM核会引出两根线,一根为IRQ中断线,一根为FIQ中断线。由于IRQ 跟FIQ在原理上相似,我们在这边不花篇幅去讲其区别,仅拿IRQ来描述中断的原理。看到这里大家应该能明白什么情况下处理器核会接收到中断,注意仅仅是能接受到中断,能不能响应是另一码事。为什么这么说呢?CPU核可能有的时候做的事情要比中断请求更为紧迫,比如刚加电做初始化的时候,这个时候如果这个管脚产生电平变化,可能ARM核也不会去管,也就是说在ARM内部把中断的功能给禁止掉。事情确实如此,ARM在加电运行时,通常CPSR 的F位 I位的初始化状态是1,也就是中断/快中断是禁止了的。如果你要想用中断或者快中断怎么办? 当然要将F 位 或者I 位清零。 当然还要明确一个问题,就是谁去让IRQ线产生电平变化,换句话来讲,就是谁去申请中断?答案当然是那些等不及了的外设。这些外设普遍的特征就是它们的事件要求CPU核来及时处理。但是现在又有问题了,刚才看到的ARM核的IRQ线就单单的一根,难道一个处理器能支持发生中断的外设只能有一个么? 答案当然是否定的,但是如果有多个外设的话,这些外设如何和ARM相连接呢? 还有就是IRQ线上有电平变化了,ARM如何知道是哪个外设激发的这种电平变化呢? 这个时候中断控制器就应需而产生了。 有了中断控制器后,一款基于ARM的SOC 可以大致用以下框图描述。 图2 中断控制器描述图 如上图所示,SOC里面有一个支持16个中断源(即能申请中断的外设)的中断控制器,每一个外设与中断控制器都有一根中断请求线相连。如果相应外设想申请中断,对应管线上必定会有请求信号产生。细心的朋友可能会发现,除了对应片内外设有线和中断控制器连接以外(对应的片内外设如UART ADC等想申请中断,对应线上就需要有请求信号产生),还有一部分线是从中断控制器直接引出到SOC外面的芯片管脚上,这部分叫做外部中断管脚,可以灵活的连接一些外部设备的中断请求线(如仅仅是一个外部的按键),并且这根线上的中断请求信号可以自定义,如定义成高电平为有效中断请求信号(也就是这根线上有高电平信号才能送给中断控制器),或者是低电平、上升沿、下降沿、双边沿等等。 其实在一个片上系统(SOC)里,每一个中断源连接中断控制器的线是按照一定的顺序划分好的,也可以理解为系统给每一个中断源都分配一个号,也就是常说的中断号。 我们再细致深入的来看中断信号是怎么从外设送到中断控制器里(以S5PC100为例)。 S5PC100芯片手册第四章讲中断控制器的内容,S5PC100有三路VIC ,可以理解为其中断控制器分为三个中断控制模块,其实是为了好管理,因为S5PC100共支持94个中断源,有些寄存器用一位去描述某个中断源的某种功能,如禁止使能当前中断源,如标识对应中断线是否产生中断或者这个中断申请是要通过IRQ线送给ARM还是FIQ线送给ARM等等。 而S5PC100的寄存器统统为32位的,所以94个中断源至少得3组(一组中有多个寄存器来决定中断线的某种功能或者状态)寄存器来描述。 中断源对应的中断号(中断线编号)。 大家可以清楚的看到处理,片内外设的中断线在中断控制器里对应的连接编号。 如果你要想通过VIC(中断控制器)控制一个外设,首先查上面这个表,找到其中

文档评论(0)

htfyzc + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档