ARM 之FIQ(快速中断) IRQ(中断)

IRQ,FIQ定义: 这就是个普通中断,当我们程序定义了该中断,并且在程序运行的时候产生了IRQ中断,则此时的芯片是这样运行的------中断处理器利用IRQ请求线来告诉ARM,ARM就知道有个IRQ中断来了,然后ARM切换到IRQ模式运行。类似的如果该中断设置为FIQ,那么当该中断产生的时候,中断处理器通过FIQ请求线告诉ARM,ARM就知道有个FIQ中断来了,然后切换到FIQ模式运行。

那么问题来啦,为何要有这两个中断,或者说为何分成这两种中断?原因很简单,速度不同,FIQ 也就是快速中断的速度快,那么问题又来了,为何就FIQ速度快???

原因:

  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快.不要小看这几个寄存器,ARM在编译的时候,如果你FIQ中断处理程序足够用这几个独立的寄存器来运作,它就不会进行通用寄存器的压栈,这样也省了一些时间。

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

  3. 在symbian系统里,当CPU处于FIQ模式处理FIQ中断的过程中,预取指令异常,未定义指令异常,软件中断全被禁止,所有的中断被屏蔽。所以FIQ就会很快执行,不会被其他异常或者中断打断,所以它又比IRQ快了。而IRQ不一样,当ARM处理IRQ模式处理IRQ中断时,如果来了一个FIQ中断请求,那正在执行的IRQ中断处理程序会被抢断,ARM切换到FIQ模式去执行这个FIQ,所以FIQ比IRQ快多了。

  4. 另外FIQ的入口地址是0x1c,IRQ的入口地址是0x18。写过完整汇编系统的都比较明白这点的差别,18只能放一条指令,为了不与1C处的FIQ冲突,这个地方只能跳转,而FIQ不一样,1C以后没有任何中断向量表了,这样可以直接在1C处放FIQ的中断处理程序,由于跳转的范围限制,至少少了一条跳转指令。

转自:https://www.cnblogs.com/locean/p/4945057.html

转载于:https://www.cnblogs.com/luoxiao23/p/11249880.html

ARM的IRQ模式和FIQ模式相关推荐

  1. 【嵌入式开发】ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存器 CPSR SPSR | 模式设置代码编写 | 设置 svc 模式 )

    一. 处理器工作模式相关介绍 1. 处理器模式简介 (1) 处理器工作模式分类 (2) 处理器不同工作模式区别 (3) Linux 系统运行的模式 (4) 特权模式 说明 (5) 异常模式 (6) 系 ...

  2. ARM的SVC、IRQ和FIQ模式。

    我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的. 先不说中断控制器 ...

  3. fiq中断的入口地址_ARM中断模式(IRQ)和快速中断模式(FIQ)区别比较

     概念 IRQ(Interrupt Request):指中断模式. FIQ(Fast Interrupt Request):指快速中断模式. IRQ与FIQ是ARM处理器的两种不同编程模式(ARM有7 ...

  4. linux工作原理fiq,笔记:linux中实现fiq模式(关于arm中断,唤醒中断)

    因为sep4020的唤醒需要用到fiq模式,上网搜索了一下linux暂时不支持fiq,但是仔细查看了entry-armv.S的文件,其实linux不是不支持linux,只是不能支持太复杂的操作(这个说 ...

  5. ARM在不同模式下如何区别同名寄存器(如fiq模式下的R8_fiq与其他模式下的R8),从而访问不同的寄存器...

    首先看下ARM状态下不同模式下的的寄存器,共37个,31个通用的. 好,问题来了:在快速中断模式下的R8_fiq与其他模式下的R8是不同的寄存器,但是在汇编代码中不会区别寄存器名字. 例如MOV R8 ...

  6. 嵌入式ARM设计编程(三) 处理器工作模式

    文章和代码已归档至[Github仓库:hardware-tutorial],需要的朋友们自取.或者公众号[AIShareLab]回复 嵌入式 也可获取. 一.实验目的 (1) 通过实验掌握学会使用ms ...

  7. [ARM] ARM处理器的7种工作模式和2种工作状态

    转载:https://blog.csdn.net/ly930156123/article/details/79219303 两种工作状态 1.ARM状态:32位,ARM状态执行字对齐的32位ARM指令 ...

  8. ARM寄存器的7种工作模式和几种寻址方式

    ARM寄存器的7种工作模式 CPSR[5:0] 10000 user 10001 FIQ 10010 IRQ 10011 SVC 10111 中止 11011 未定义 11111 系统 用这两个指令读 ...

  9. ARM体系结构(1)- 工作模式与工作状态

    1. ARM的工作模式 用户模式(usr):属于正常的用户模式,ARM处理器正常的程序执行状态. 快速中断模式(fiq):用于处理快速中断,对高速数据传输或通道处理. 外部中断模式(irq):对一般情 ...

最新文章

  1. 如何写一篇好的技术博客
  2. Python超过R,成为数据科学和机器学习的首选语言!
  3. 漫画:什么是八皇后问题?
  4. (赞助5本)谷歌官方推荐的 TensorFlow 2 “豹书”来了!
  5. Unable to execute dex: Multiple dex files define Lcom
  6. SVN打分支及主干合并到分支
  7. 领地柜怎么砸_5㎡餐厅也配有餐边柜!布局、尺寸都给你们准备好,照着装准没错...
  8. 面对微信小程序的威胁,支付宝可以考虑安心做B2C的社交了
  9. HDU 1394 Minimum Inversion Number 树状数组
  10. Qt Creator 使用技巧(功能快捷键如注释、声明和实现之间切换)
  11. 怎样才能在电脑上下载计算机一级考试软件?
  12. 输入框中有内容才激活组件
  13. 操作系统的目标与作用
  14. 自步对比学习(Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID)
  15. Materia Camera Mesh
  16. Android 开发初步环境搭建
  17. 订单管理系统审批----未整理
  18. 看完这个就理解升压斩波(Boost)电路了
  19. Math数学方法,String字符串型、Date日期
  20. 【java小程序实战】小程序短视频后台项目之MD5加密工具类

热门文章

  1. 人工智能就业发展前景分析
  2. c# 解压zip 进度_C#解压zip文件
  3. Python爬取最近上映的电影评论并生成词云——误杀
  4. 【使用ChatGPT制作PPT】
  5. Oracle APEX 系列文章4:在阿里云上打造属于你自己的APEX完整开发环境 (安装XE, ORDS, APEX)...
  6. 爬虫实战操作(3)—— 获取列表下的新闻、诗词
  7. 什么是跨阻放大器:工作及其应用特性介绍
  8. anaconda编写python_使用 Anaconda
  9. ansible group_vars和host_vars
  10. 关于 Intel CPU 和Iris Xe Graphics的报告问题