ARM 中断处理和中断控制器

发布者:Joyful444Life最新更新时间:2017-02-26 来源: eefocus关键字: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中的中断号就是根据这个算法把每个中断算一下得来的。

关键字:ARM  中断处理  中断控制器 引用地址:ARM 中断处理和中断控制器

上一篇:ARM中断寄存器详解
下一篇:ARM处理器启动方式

推荐阅读最新更新时间:2024-03-16 15:34

ARM的函数指针、指针函数的区别和用法
在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,和大家的一些总结,整理到此。和大家分享。 首先它们之间的定义: 1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。 表示: float *fun(); float *p; p = fun(a); 注意指针函数与函数指针表示方法的不同,千万不要混淆
[单片机]
关于ARM中断的具体的启动代码解释
关于中断的具体的启动代码解释: 可以这么理解,44B0 中断系统中有两张中断转移表,经过二重转移才跳到中断处理程序。第一张中断向量表由硬件决定,所在区域为ROM(flash),地址空间从0X00开始,其中0X00-0X 1C为异常向量入口地址,0X20-0XC0为中断向量入口地址。另一张中断向量表在RAM 中,可以随便改,其位置在程序连接后才定。由于 RAM 放在地址空间的高端(距离中断向量超过了 32M),为了从第一张中断向量表跳到第二张中断向量表,故在第一张中断向量表对应位置上写上 ldr PC,# interrupt_service 如:ldr PC,=HandlerEINT4567。 (1) 一级中断向量表
[单片机]
Arm/FPGA联手发威 研华生产线大步迈入AI时代
  人工智能(Artificial Intelligence, AI)无疑是近一两年来科技产业内最热门的话题,除了科技业巨头无不大力投入之外,金融等服务业者对导入人工智能,也展现出强烈兴趣。制造业对AI技术的关注,也不在话下,并且在相关关键技术逐渐到位的情况下,已开始有实际导入动作。下面就随嵌入式小编一起来了解一下相关内容吧。   倡导智能制造不遗余力的研华科技,除了为各行各业提供对应的先进解决方案外,在自家生产在线也开始逐步导入人工智能要素。比如机台设备的状态侦测/诊断、原物料/能源的使用状况,乃至产品的品管流程等,均已逐步导入人工智能。安谋( Arm )的硅智财(IP)与SoC及赛灵思(Xilinx)的现场可编程门阵列( FP
[嵌入式]
Arm的物联网野望与危机
     2016年,当软银以 243 亿英镑收购Arm时,他们想要的可不止是手机市场。相反,它们看中的是可以将各种设备连入互联网的低功耗芯片,也就是所谓的物联网芯片。 进入2018年,Arm明显加快了在物联网领域的布局。 6月13日,Arm宣布收购物联网连接管理技术提供公司Stream Technologies。7月30日,Arm收购数据分析公司Treasure data。 对于这一系列收购,Arm的目标到底是什么? Arm与物联网 不可否认,在移动时代,Arm几乎是无可替代的。但是软银收购Arm的目的并不在于此。 软银CEO兼创始人孙正义在一份声明中称,当前软银正积极投资于“物联网”业务,希望抓住该市场的重大商机,而收购A
[手机便携]
锁定Android平板高阶绘图功能 Telechips扩大ARM Mali GPU授权协议
    Telechips公司与ARM再度达成协议,扩大 ARM Mali 嵌入式绘图技术授权并新增 Mali-400 MP 绘图处理器(GPU)授权计画,并计划于2011年第四季,根据 Mali-400 MP 绘图的处理器技术推出新产品。     Telechips先前已推出各种采用ARM Mali-200 GPU 技术的消费性装置,而ARM Mali-400 MP 为首款支援 OpenGL ES 2.0 的嵌入式多核心绘图处理器,支援 2D 与 3D 加速,最高可达1080p解析度以上,十分适合目前讲求绘图视觉效果的高阶消费性电子产品。     针对新款 Android 平板电脑需求,Telechips期望采用ARM Mali-
[手机便携]
ARM的step内存到SDRAM内存代码复制程序调试之罪魁祸首 ADR与LDR
start.S启动的汇编代码 #define S3C2440_MPLL_200MHZ ( (0x5C 12)|(0x01 4)|(0x02) ) #define MEM_CTL_BASE 0x48000000 .text .global _start _start: /*1关看门狗*/ mov r0,#0x53000000 mov r1,#0 str r1, /*2设置时钟*/ ldr r0,=0x4C000014 mov r1,#0x03 str r1, mrc p15,0,r1,c1,c0,0 orr r1,r1,#0xc0000000 mcr p15,0,r1,c1,c0,0 ldr
[单片机]
ARM高管评英特尔手机芯片:业务模式不适合
    北京时间7月18日消息,ARM客户运算主管杰夫-朱(Jeff Chu)表示,公司拥有许多授权企业,这可以使ARM的创新速度快过英特尔,使公司的触及幅度宽过英特尔。   英特尔是世界最大的芯片商,不过ARM高管认为,英特尔的业务模式在进入移动计算时并不匹配,要进入智能手机、平板、其它设备领域,困难尤其大。   杰夫-朱认为,ARM芯片覆盖了智能手机的90%,在许多平板中也使用。ARM可以更快创新,覆盖范围也更广。杰夫-朱说:“作为一家企业,英特尔长于制造产品,但在移动领域不能一码通吃。”   几年来,英特尔和ARM彼此进入对方的领域,英特尔极力将X86芯片能耗降下来。英特尔芯片主要用在PC和服务器中,但用在移动设备中就太热了,
[手机便携]
基于ARM处理器S3C2440的无线监控系统设计
  无线网络技术在近一两年开始全面普及,无论是在家庭用户还是企业用户中,我们都能看到无线技术的影子。 认识无线监控,相信大家对有线监控系统比较了解,有线监控系统主要由网络摄像机、云台、视频服务器、监控终端等设备组成。而无线监控系统所需要的设备则比较简单,它只需要无线网络摄像机、无线AP、监控终端等设备组成,如果需要远距离无线监控,还要增加户外无线网桥等设备。   在此提出一种基于嵌入式Windows CE5.O的无线视频监控系统。解决了传统视频监控系统成本高、体积大、传输距离有限、功耗大、安装不方便等问题。该系统的设计将为无线视频监控提供一种新的思路、方法和技术路线;在安防、远程教育、远程视频会议、医疗系统等无线视频领域具有广阔
[单片机]
基于<font color='red'>ARM</font>处理器S3C2440的无线监控系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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