历史上的今天
今天是:2025年07月01日(星期二)
2021年07月01日 | ARM中断模式(IRQ)和快速中断模式(FIQ)区别比较
2021-07-01 来源:eefocus
简介:本文主要对ARM中断模式(IRQ)和快速中断模式(FIQ)区别进行了说明,希望对你的学习有所帮助。
概念
IRQ(Interrupt Request):指中断模式。
FIQ(Fast Interrupt Request):指快速中断模式。
IRQ与FIQ是ARM处理器的两种不同编程模式(ARM有7种处理模式)。
详述
1、对FIQ你必须进快处理中断请求,并离开这个模式。
2、IRQ可以被FIQ所中断,但FIQ不能被IRQ所中断,在处理FIQ时必须要关闭中断。
3、FIQ的优先级比IRQ高。
4、FIQ模式下,比IRQ模式多了几个独立的寄存器。
不要小看这几个寄存器,ARM在编译的时候,如果你FIQ中断处理程序足够用这几个独立的寄存器来运作,它就不会进行通用寄存器的压栈,这样也省了一些时间。
5、FIQ的中断向量地址在0x0000001C,而IRQ的在0x00000018。(也有的在FFFF001C以及FFFF0018)
写过完整汇编系统的都比较明白这点的差别,18只能放一条指令,为了不与1C处的FIQ冲突,这个地方只能跳转,而FIQ不一样,1C以后没有任何中断向量表了,这样可以直接在1C处放FIQ的中断处理程序,由于跳转的范围限制,至少少了一条跳转指令。
6、IRQ和FIQ的响应延迟有区别
IRQ的响应并不及时,从Verilog仿真来看,IRQ会延迟几个指令周期才跳转到中断向量处,看起来像是在等预取的指令执行完。FIQ的响应不清楚,也许比IRQ快。
史海拾趣
|
我在uC/OS的中断服务程序中只要不调用函数,中断服务程序是可以运行的,但是一旦中断服务函数中涉及信号量,则外部等待这个信号量的任务只会执行一次就死在那里了! 串口中断接收程序: interrupt 20 void iUART0_Receive(void){ OSIn ...… 查看全部问答> |
|
我现在定义了,如果P2.4是低电平则执行一个操作,使一个变量的值+1,现在我在P2.4口上接了个开关,就是那种按下去接着弹起来的按钮开关,现在按下去则P2.4是低电平,但是我发现这样有一些问题,按一次变量的值乱蹦,因为执行了很多次吧。 于是我加 ...… 查看全部问答> |
|
我有一块S3C2440的板子,装好后通电三组串口好像短路一样,相互之间的阻值只有几十欧,用串口0连PC开机就不断输出乱码或者00 00....,本来调试串口是UART1的,即使启动时的调试信息也是通过UART1输出的。很奇怪,不知道是什么原因。… 查看全部问答> |
|
.本人想做一个windows mobile 5.0的系统. 请问也是用PB吗?? 怎么我做了一个mobile handheld.. 界面跟WINCE的一样!丑死了喔!… 查看全部问答> |
|
本人做的项目是车载导航多媒体系统,主板是Pxa270,现在要添加usbhost驱动, 不知道PB工程里怎么修改,驱动程序生成的是DLL吗?大家说详细点 谢谢!… 查看全部问答> |
|
我在port_DataReceived事件中对窗口控件操作时老是提示要与独立线程创建的控件交互, 比如,我中该事件中收到一段字符,判断后关闭当前窗口, 这个简单的应用都实现不了,我该怎么做呢?… 查看全部问答> |




