ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的

发布者:740322lwj最新更新时间:2022-06-07 来源: eefocus关键字:ARM9  移植  ARM  中断  中断嵌套  中断号 手机看文章 扫描二维码
随时随地手机看文章

几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。


ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。


我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin.


在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的。


先不说中断控制器,只说ARM核心。正常情况下,ARM核都只是机械地随着pc的指示去做事情,当CPSR中的I和F位为1的时候,IRQ和FIQ全部处 于禁止状态。无论你在irq pin和fiq pin上面发什么样的中断信号,ARM是不会理你的,你根本不能打断他,因为他耳聋了,眼也瞎了。


在I位和F位为0的时候,当irq pin上有中断信号过来的时候,就会打断arm的当前工作,并且切换到IRQ模式下,并且跳到相应的异常向量表(vector)位置去执行代码。这个过程 是自动的,但是返回到被中断打断的地方就得您亲自动手了。当你跳到异常向量表,处于IRQ的模式的时候,这个时候如果irq pin上面又来中断信号了,这个时候ARM不会理你的,irq pin就跟秘书一样,ARM核心就像老板,老板本来在做事,结果来了一个客户,秘书打断它,让客户进去了。而这个时候再来一个客户,要么秘书不断去敲门 问,要么客户走人。老板第一个客户没有会见完,是不会理你的。


但是有一种情况例外,当ARM处在IRQ模式,这个时候fiq pin来了一个中断信号,fiq pin是什么?是快速中断呀,比如是公安局的来查刑事案件,那才不管你老板是不是在会见客户,直接打断,进入到fiq模式下,并且跳到相应的fiq的异常 向量表处去执行代码。那如果当ARM处理FIQ模式,fiq pin又来中断信号,又就是又一批公安来了,那没戏,都是执法人员,你打不断我。那如果这个时候irq pin来了呢?来了也不理呀,正在办案,还敢来妨碍公务。


所以得出一个结论: IRQ模式只能被FIQ模式打断,FIQ模式下谁也打不断。


在打不断的情况下,irq pin 或 fiq pin随便你怎么发中断信号,都是白发。


所以除了fiq能打断irq以外,根本没有所谓中断嵌套的情况。


但是再怎么说irq pin 和fiq pin加起来也就2根引脚,那这么多中断源,怎么办呢?不可能谁来了都直接来敲门吧。


那么接下来该说谁来给irq pin或者 fiq pin发信号呢?上文中可以看到,是老板的客户,也可能是公安。这个事情就是由中断控制器来管理。


拿最简单的2410/2440的中断控制器举例,这个中断控制器加一个子中断控制器,还有一个外部中断控制器管理了50多个中断资源,说穿了有50多个 脚。这些脚除了外部中断都是规定了功能的,比如WDT、LCD、DMA等,这个功能不能改,因为2410/2440内部硬件连线决定了。


当你WDT和DMA的中断都到来的时候,就会被送到SRCPND寄存器中,两个中断都在里面,那到底把哪一个送给ARM呢?这个时候先看INTMOD,也 就 是模式,哪个是设置成为了快速中断,哪个就被送上去;那如果两个都是设置的快速中断呢?不可能,因为同一时间只能有一个中断可以被设成快速中断。所以,如 果有快速中断,这个时候直接就给fiq pin发中断信号,打断ARM。


那要是没有快速中断呢,这个时候就看INTMSK,看WDT和DMA有没有被屏蔽的,如果DMA在INTMSK被屏蔽了,那就只有WDT继续向上送了,如 果都没有屏蔽,那么他们两个同进来到了PRIORITY优先级寄存器,在这里,根据优先级的设置,一定会分出一个高,一个低的优先级出来,高的那个就被送 上去,送到了INTPND寄存器,所以INTPND随时随地有且只有一个一个中断在里面。只要INTPND里面有中断,irq pin就不会一直不断给ARM中断信号,当第一次发的时候,中断了ARM,这个时候ARM进入相应的异常向量,并处于IRQ模式,正在这个时 候,INTPND仍然在不断的通过irq pin向ARM发中断信号,但是ARM这个时候已经处于IRQ模式,是不会理睬你的。当你中断处理完了,要退出IRQ模式了,这个时候小心了,如果你在退 出IRQ模式之前不清除INTPND里面的中断位,当你刚退出IRQ模式,又被中断了,因为INTPND一直在发中断信号。所以在退出IRQ模式之前要清 除INTPND里面的中断位。但是光清除INTPND里面的位还不行,因为SRCPND里面WDT和DMA的中断还在,当你刚清除完INTPND,结果 SRCPND里面又选了一个出来又送到了INTPND里面。所以正确的处理方法是退出IRQ模式之前,一定要先清除SRCPND里相应的中断位,再清除 INTPND里相应的位。那么请注意,SRCPND里面可能有多位,所以清除你已处理过的中断就行了,而INTPND里面只可能有一位,直接清掉就可以 了。


再来说说Linux的情况。Linux不用FIQ,只用到了IRQ。但是我们有时候一个中断需要处理很长时间,那我们就需要占用IRQ模式那么长的时间 吗?没有,linux在IRQ模式下只是简单的记录是什么中断,马上就切换回了SVC模式,换句话说,Linux的中断处理都是在SVC模式下处理的。那 么中断号是怎么来的呢?在ARM上固死了,相应的中断号只有一个办法得到:查询irqs.h 。那我先用一个中断号注册一个中断处理程序,当中断发生的时候,Linux怎么知道是我这个中断号发生的中断呢? 在处理中断的时候,先读取INTPND,根据需要再读取EINTPEND或SUBSRCPND计算出一个中断号,相应的处理算法在 get_irq_nr_base这个宏中。而且irqs.h中的中断号就是根据这个算法把每个中断算一下得来的。


还有子中断、外部中断,电平触发、边沿触发等,以后再谈。

关键字:ARM9  移植  ARM  中断  中断嵌套  中断号 引用地址:ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的

上一篇:at91sam9260 开发环境的建立
下一篇:s3c6410的UART设备驱动(1)

推荐阅读最新更新时间:2024-11-19 23:29

ARM高级业务发展经理:Enlighten是什么?能用在哪里?
日前,ARM高级业务发展经理Alex Shang介绍了全局光照技术Enlighten,该技术未来除了在游戏上有广阔空间外,包括建筑行业、广播行业、电子商务和汽车等领域都将有广阔发展空间。以下是详细发言 给大家介绍一下全局光照以及Enlighten这个全局光照的技术是如何实现,它对数字画面的创建,它在应用领域它带来的优势是哪些,给大家做一个介绍。 我们先看一下画面。这个demo是通过UE4的引擎来创建的一个场景,这个也是我们在今年GDC上的一个demo,它是在一个很大的世界的开放场景,大概是25平方公里,5 5的面积上创建的一个大世界的场景。这也是现在游戏领域的一个趋势,就是场面越来越大,画面越来越丰富,在这样一个应用场景下如何实
[手机便携]
<font color='red'>ARM</font>高级业务发展经理:Enlighten是什么?能用在哪里?
详解 ARM Linux启动过程分析
ARM Linux启动过程分析是本人要介绍的内容,嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不同体系结构的处理器来说Linux的启动过程也有所不同。本文以S3C2410 ARM处理器为例,详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。 1、引 言 Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展。虽然 Linux 在桌面 PC 机上的普及程度远不及微软的 Windows 操作系统,但它的发展速度之快、用户数量的日益增多,也是微软所不能轻视的。而近些年来
[单片机]
【STM32】3-外部中断实验(EXTI)步骤及解析
一、外部中断介绍 1.1 EXTI 简介 STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事件/中断请求的边沿检测器。EXTI的每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发),还可独立地被屏蔽。 1.2 EXTI 结构框图 1.3 外部中断/事件线映射 STM32F10x的EXTI具有20个中断/事件线,如下: 二、外部中断配置步骤 要使用外部中断我们就需要先配置它,通常都需经过这几步:(EXTI相关库函数在stm32f10x_exti.c和stm32f10x_exti.h文件中) (1)使能IO口时钟,配置IO口模式为输入 (2)
[单片机]
【STM32】3-外部<font color='red'>中断</font>实验(EXTI)步骤及解析
pic单片机p18f458A/D中断转换程序
//程序实现 A/D 转换功能,A/D采用中断方式。该程序通过p IC 单片机 p18f458的RA2模拟通道送入一直流 电压 , //当送入的直流电压大于2.5V时,与PORTD口相连的8个 发光二极管 闪动,当直流电压恢复到 //http://www.51hei.com 单片机 网提供此ad转换程序,有问题请联系本站。 //2.5V以下时,发光 二极管 停止闪动,且只有低四个发光。 #include p18f458.h union adres { int y1; unsigned char adre ; }adresult; //定义一个共用体,用于存放A/D转换的结果 unsigned char i; unsigne
[单片机]
IAR for Arm集成开发环境全面支持芯驰科技9系列SoC和E3系列MCU
IAR Embedded Workbench for Arm集成开发环境已全面支持芯驰科技9系列SoC和E3系列MCU 最新版 IAR Embedded Workbench for Arm 全面支持芯驰科技9系列SoC和E3 MCU 芯片,帮助中国汽车行业开发者打造强大的嵌入式开发解决方案 中国上海—2022年6月17日——全球领先的嵌入式开发软件工具和服务提供商IAR Systems日前宣布:其最新发布的IAR Embedded Workbench for Arm 9.30版本已全面支持芯驰科技9系列SoC和E3 MCU芯片。 国内领先的车规芯片企业芯驰科技致力于为未来智慧出行提供高性能、高可靠的车规芯片
[嵌入式]
IAR for <font color='red'>Arm</font>集成开发环境全面支持芯驰科技9系列SoC和E3系列MCU
全长5m的蛇形检查机器人“ Float Arm”,能用在哪些领域?
Hibot宣布,已通过第三方向Takahata Precision分配新资本,与东京电力科技公司签订资本和业务协议。 通过资本业务合作,Hibot将致力于在东京电力技术公司维护每个电力设施(如火力发电站、核电站、可再生能源厂)中使用机器人引入基础设施检查服务。此外,Takahata的新型3D光学传感器安装在Hibot新型蛇形操纵器“ Float Arm”的顶端。因此,可以通过高速获取高精度的三维数据来进行更详细的分析。此外,通过利用Takahata的网络,Hibot将不仅在日本而且在全球范围内全面扩展其RaaS(机器人服务)业务。 能代替“脏乱、危险、严重”的工作的机器人手臂“Float Arm” Hibot是一家机器人公司,
[机器人]
《连线》:AMD加倍下注ARM架构服务器
    安德鲁·费尔德曼(Andrew Feldman)现在负责AMD的服务器芯片业务,所以这家的宿敌对超低能耗处理器下注也便不足为奇。AMD认为,这种产品将逐渐渗透到服务器领域。   在AMD收购芯片制造商SeaMicro时,费尔德曼随之一同加盟了AMD。他创办的这家硅谷创业公司,从一开始就希望加入到低能耗服务器革命中。SeaMicro起初将数以百计的英特尔手机芯片整合到一台服务器中,但现在,费尔德曼已经加盟AMD,所以他开始将另一种低能耗芯片整合到这种遍布于整个互联网的机器中。   AMD已经宣布,该公司正在基于ARM架构开发服务器芯片,这种架构已经应用在全球多数智能手机和平板电脑中。本周三,为了在ARM芯片推出之前填补空白,费
[手机便携]
LG和ARM针对2009年美国电视数模转换,共同开发新型数模转换器技术
LG电子采用ARM9E系列处理器开发未来数字机顶盒产品    中国上海,2007年5月29日 —— ARM公司(伦敦证交所:ARM;纳斯达克:ARMHY)今天宣布,全球消费电子领域的领导者和技术创新者LG电子(2006年全球销售额达到385亿美元)获得ARM926EJ-S处理器授权,用于新的数字机顶盒产品线。      LG电子DTV实验室副总裁Choi Seung-Jong表示:“随着美国做出关闭模拟电视的决定,对基于数字电视的先进服务的需求将驱动新一轮消费电子产品进入家庭应用。ARM的技术为我们实现了设计机顶盒解决方案所需灵活性,因此我们可针对美国市场推出广泛的产品,以充分把握这一市场机遇。”      最新协议扩展了LG基
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved