分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

IRQ中断和快速中断FIQ区别

ARM920T内核有两个中断:IRQ中断和快速中断FIQ

FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。
一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ,所以一个中断是可以指定为FIQ或者IRQ的,为了合理,要求系统更快响应,自身处理所耗时间也很短的中断设置为FIQ,否则就设置了IRQ。
如果该中断设置为了IRQ,那么当该中断产生的时候,中断处理器通过IRQ请求线告诉ARM,ARM就知道有个IRQ中断来了,然后ARM切换到IRQ模式运行。类似的如果该中断设置为FIQ,那么当该中断产生的时候,中断处理器通过FIQ请求线告诉ARM,ARM就知道有个FIQ中断来了,然后切换到FIQ模式运行。

简单的对比的话就是FIQ比IRQ快,为什么快呢?

1:ARM的FIQ模式提供了更多的banked寄存器,r8到r14还有SPSR,而IRQ模式就没有那么多,R8,R9,R10,R11,R12对应的banked的寄存器就没有,这就意味着在ARM的IRQ模式下,中断处理程序自己要保存R8到R12这几个寄存器,然后退出中断处理时程序要恢复这几个寄存器,而FIQ模式由于这几个寄存器都有banked寄存器,模式切换时CPU自动保存这些值到banked寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比IRQ快。

2:FIQ比IRQ有更高优先级,如果FIQ和IRQ同时产生,那么FIQ先处理。

3:FIQ的中断向量地址在0x0000001C,而IRQ的在0x00000018。(也有的在FFFF001C以及FFFF0018),写过完整汇编系统的都比较明白这点的差别,18只能放一条指令,为了不与1C处的FIQ冲突,这个地方只能跳转,而FIQ不一样,1C以后没有任何中断向量表了,这样可以直接在1C处放FIQ的中断处理程序,由于跳转的范围限制,至少少了一条跳转指令。
4:IRQ和FIQ的响应延迟有区别
IRQ的响应并不及时,IRQ会延迟几个指令周期才跳转到中断向量处,看起来像是在等预取的指令执行完。FIQ的响应不清楚,也许比IRQ快。

中断延迟:从外部中断请求信号发出到执行对应的中断服务程序ISR的第一条指令所需要的时间。通过软件程序设计来缩短中断延迟的方法有:中断优先级和中断嵌套。

中断控制

中断体系结构主要由中断源和控制寄存器两大部分构成,其寄存器主要有4种:模式、屏蔽、优先级、挂起(标志)寄存器等

寄存器简述

1控制寄存器
1.1模式:
FIQ/IRQ(默认IRQ)
1.2屏蔽:
中断是否允许, 
1 表示被屏蔽
1.3优先级:
多个中断源同时来临时处理的顺序
2状态:-=>  挂起/标志
读该寄存器查看中断状态, 
读到1中断来临 
写1清除中断标志,写1有效, 写0无效,

寄存器名称

中断相关的寄存器
中断源挂起寄存器 SRCPND
中断挂起寄存器 INTPND
中断源屏蔽寄存器 INTMSK
中断模式寄存器 INTMOD
子中断源挂起寄存器 SUBSRCPND
子中断源屏蔽寄存器 SUBINTMSK

外部中断相关寄存器
外部中断源挂起寄存器 EINTPEND
外部中断源屏蔽寄存器 EINTMASK
外部中断控制 EXITINTx

寄存器详述

中断控制器操作

程序状态寄存器(PSR)的F 位和I 位
如果ARM920T CPU 中的PSR 的F 位被置位为1,CPU 不会接受来自中断控制器的快中断请求(FIQ)。同样的如果PSR 的I 位被置位为1,CPU 不会接受来自中断控制器的中断请求(IRQ)。因此,中断控制器可以通过清除PSR 的F 位和I 位为0 并且设置INTMSK 的相应位为0 来接收中断。

中断模式

ARM920T 有两种中断模式的类型:FIQ 或IRQ。所有中断源在中断请求时决定使用哪种类型。

中断挂起寄存器

S3C2440A 有两个中断挂起寄存器:源挂起寄存器(SRCPND)和中断挂起寄存器(INTPND)。这些挂起寄存器表明一个中断请求是否为挂起。当中断源请求中断服务,SRCPND 寄存器的相应位被置位为1,并且同时在仲裁步骤后INTPND 寄存器仅有1 位自动置位为1。如果屏蔽了中断,则SRCPND 寄存器的相应位被置位为1。这并不会引起INTPND 寄存器的位的改变。当INTPND 寄存器的挂起位为置位,每当I 标志或F 标志被清除为0 中断服务程序将开始。SRCPND 和INTPND 寄存器可以被读取和写入,因此服务程序必须首先通过写1 到SRCPND寄存器的相应位来清除挂起状态并且通过相同方法来清除INTPND 寄存器中挂起状态。

中断屏蔽寄存器

此寄存器表明如果中断相应的屏蔽位被置位为1 则禁止该中断。如果某个INTMSK 的中断屏蔽位为0,将正常服务中断。如果INTMSK 的中断屏蔽位为1 并且产生了中断,将置位源挂起位。

中断控制器特殊寄存器

此处中断控制器中有5 个控制寄存器:源挂起寄存器、中断模式寄存器、屏蔽寄存器、优先级寄存器和中断挂起寄存器。
所有来自中断源的中断请求首先被记录到源挂起寄存器中。基于中断模式寄存器,它们被分配到2 个组中,包括快中断请求(FIQ)和中断请求(IRQ)。IRQ 的多仲裁过程是基于优先级寄存器。

源挂起(SRCPND)寄存器

SRCPND 寄存器由32 位组成,其每一位都涉及一个中断源。如果中断源产生了中断则相应的位被设置为1并且等待中断服务。因此此寄存器指示出是哪个中断源正在等待请求服务。注意SRCPND 寄存器的每一位都是由中断源自动置位,其不顾INTMASK 寄存器中的屏蔽位。另外SRCPND 寄存器不受中断控制器的优先级逻辑的影响。
在指定中断源的中断服务程序中,必须通过清除SRCPND 寄存器的相应位来正确的获得来自相同源的中断请求。如果从ISR 中返回并且未清除相应位,则中断控制器的操作就好像其它中断请求已经从同一个源进入了。换句话说,如果SRCPND 寄存器的指定位被设置为1,其通常被认作一个有效中断请求正在等待服务。
清除相应位的时间依赖于用户的需要。如果希望收到来自相同冤源的其它有效请求,则应该首先清除相应位,并且接着使能中断。
可以通过写入一个数据到此寄存器来清除SRCPND 寄存器的指定位。其只清除那些数据中被设置为1 的相应位置的SRCPND 位。那些数据中被设置为0 的相应位置的位保持不变。

中断模式(INTMOD)寄存器

此寄存器由32 位组成,其每一位都都涉及一个中断源。如果某个指定为被设置为1,则在FIQ(快中断)模式中处理相应中断。否则则在IRQ 模式中处理。特别注意,只能有一个中断设置为快速中断模式。

中断屏蔽(INTMSK)寄存器

此寄存器由32 位组成,其每一位都都涉及一个中断源。如果某个指定为被设置为1,则CPU 不会去服务来自相应中断源(请注意即使在这种情况中,SRCPND 寄存器的相应位也设置为1)的中断请求。如果屏蔽位为0,则
可以服务中断请求。

中断挂起(INTPND)寄存器

中断挂起寄存器中32 位的每一位都表明了是否相应未屏蔽并且正在等待中断服务的中断请求具有最高的优先级。当INTPND 寄存器在优先级逻辑后被定位了,只有1 位可以设置为1 并且产生中断请求IRQ 给CPU。IRQ 的
中断服务程序中可以读取此寄存器来决定服务32 个中断源的哪个源。
就如SRCPND 寄存器,必须在中断服务程序中清除了SRCPND 寄存器后清除此寄存器。可以通过写入数据到此寄存器中来清除INTPND 寄存器的指定位。只会清除数据中设置为1 的相应INTPND 寄存器位的位置。数据
中设置为0 的相应位的位置则保持不变。特别注意:在清除源挂起寄存器和中断挂起寄存器时,是向寄存器中的相应位写1,不是写0,这是由寄存器的硬件结构决定的。
次级源挂起(SUBSRCPND)寄存器可以通过写入数据到此寄存器来清除SUBSRCPND 寄存器的指定位。只有数据中那些被设置为1 的相应
SUBSRCPND 寄存器的位的位置才能被清除。数据中那些被设置为0 的相应位的位置则保持不变。

中断次级屏蔽(INTSUBMSK)寄存器

此寄存器有11 位,其每一位都与一个中断源相联系。如果某个指定位被设置为1,则相应中断源的中断请求
不会被CPU 所服务(请注意即使在这种情况中,SRCPND 寄存器的相应位也设置为1)。如果屏蔽位为0,则可以

服务中断请求。

还有就是清除中断时有子中断的要先清除子中断位,再清除中断位,有子中断的要设置子中断屏蔽寄存器打开子中断。
设置步骤:
0.相应引脚对应成外部中断功能
1. 设置触发方式:上升沿、下降沿、高电平、
低电平、双沿触发
2. 清中断源挂起寄存器(状态寄存器)、中断
服务寄存器(可选、防止原有中断干扰)
3. 设置中断模式(IRQ或FIQ可选,默认为IRQ)
4. 设置中断优先级(可选,一般默认即可)
5. 打开外部中断屏蔽(允许中断)
6. 设置中断服务入口程序

进入中断:
1、执行中断服务程序
2、清中断源挂起寄存器

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

ARM920T S3C2440 的中断系统相关推荐

  1. Keil5 平台 S3C2440裸机程序开发-----中断系统/UART

    目录 前言 一.启动文件 二.代码 main.c uart.c uart.h led.c led.h S3C2440.h 三.编译,烧录,打开串口助手,接收到数据. 前言 本博文介绍mini2440开 ...

  2. S3C2410中断系统

    S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器.该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支 ...

  3. s5pv210——中断系统相关介绍

    以下内容源于朱有鹏课程的学习,如有侵权,请告知删除. 参考资料:http://www.cnblogs.com/biaohc/p/6354068.html 一.S5PV210的中断体系介绍 1.什么是中 ...

  4. 1.8.ARM裸机第八部分-按键和CPU的中断系统

    1.8.1.什么是按键 1.8.1.1.按键的物理特性 (1).平时没人按的时候,弹簧把按键按钮弹开.此时内部断开的. (2).有人按下的时候,手的力量克服弹簧的弹力,将按钮按下,此时内部保持接通(闭 ...

  5. 嵌入式裸机按键和CPU的中断系统学习笔记

    准备工作 一.按键介绍与硬件连接 按键介绍 按键是常见的外部中断设备,类似于我们电路中的开关.一般的按键都有4个引脚,这4个引脚成2对:其中一对是常开触点(不按则断开,按下则闭合):一对是常闭触点(平 ...

  6. 外设篇:按键和CPU的中断系统

    什么是按键 按键的物理特性 (1).平时没人按的时候,弹簧把按键按钮弹开.此时内部断开的. (2).有人按下的时候,手的力量克服弹簧的弹力,将按钮按下,此时内部保持接通(闭合)状态:如果手拿开,则弹簧 ...

  7. 《8.按键和CPU的中断系统》

    转自 https://edu.csdn.net/lecturer/505 朱老师物联网大讲堂 <8.按键和CPU的中断系统> 第一部分.章节目录 1.8.1.什么是按键 1.8.2.轮询方 ...

  8. 【DSP开发】C6000非多核非KeyStone系列DSP中断系统

    C6000系列DSP的中断系统 上一篇介绍了C6455的GPIO系统,最后把GPIO4配置成了中断/事件模式,本文将介绍C6455的中断系统,介绍完基本概念后,给出把GPIO4映射到INT4的代码. ...

  9. Linux中断(interrupt)子系统之一:中断系统基本原理【转】

    转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于AR ...

  10. linux中断系统那些事之----中断处理过程【转】

    转自:http://blog.csdn.net/xiaojsj111/article/details/14129661 以外部中断irq为例来说明,当外部硬件产生中断时,linux的处理过程.首先先说 ...

最新文章

  1. 背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar
  2. play2.0文档-面向java开发者(7)异步HTTP编程
  3. python用途与前景-Python 就业方面的选择与应用分析
  4. table 在网页无法顶到头部问题
  5. #ifndef 与 #program once 的区别
  6. Java代码注释规约
  7. 电信业务分类目录2019_2019年1月国内增值电信业务许可情况分析报告,市场区域发展不均衡...
  8. 400+的考研复试线怎么玩???满屏都是400+?今年国家线会涨吗?
  9. poj3311 经典tsp问题
  10. [Redux/Mobx] Redux怎么添加新的中间件?
  11. vue 引用src中的文件_Vue中引用第三方JS文件
  12. 【译】数据显示:中国的程序员是世界上最牛的程序员?
  13. 缺陷管理规范--bug管理流程
  14. linux mysql修改数据表结构语法
  15. 在线编程网站收集-备用
  16. gd32f303 设计中断优先级_浅谈飞控的软件设计
  17. Laravel 框架 - 模板继承
  18. 100个免费可商用字体,你总有一天用到它
  19. Mac 安装Nessus
  20. 计算机信息技术结束语,新学期初二年级计算机信息技术课第四节结尾

热门文章

  1. 【mediasoup 带宽估计】aimd算法2 : AimdRateControl
  2. Linux的文件的权限管理
  3. box-sizing 的使用
  4. PS透明婚纱抠图(超详细)
  5. 基于Python的电商数据分析系统
  6. Egret引擎基础教程II(EUI基础使用教程)
  7. 有关白鹭egret引擎EUI Editor 打开项目报错问题的解决
  8. 为什么要使用NAS存储设备呢?
  9. 数学建模(6)-Matlab绘制图像精细修改
  10. word2016 无响应问题解决办法