现在的位置: 首页 > 综合 > 正文

FIQ和IRQ比较

2019年03月23日 ⁄ 综合 ⁄ 共 1631字 ⁄ 字号 评论关闭

http://bbs.51cto.com/thread-849274-1.html

FIQIRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQIRQ处理器模式ARM7种处理模式)。

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快,为什么快呢?
ARM的FIQ模式提供了更多的banked寄存器,r8到r14还有SPSR,而IRQ模式就没有那么多,R8,R9,R10,R11,R12对应的banked的寄存器就没有,
这就意味着在ARM的IRQ模式下,中断处理程序自己要保存R8到R12这几个寄存器,然后退出中断处理时程序要恢复这几个寄存器,
而FIQ模式由于这几个寄存器都有banked寄存器,模式切换时CPU自动保存这些值到banked寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比
IRQ快.
FIQ比IRQ有更高优先级,如果FIQ和IRQ同时产生,那么FIQ先处理。
在symbian系统里,当CPU处于FIQ模式处理FIQ中断的过程中,预取指令异常,未定义指令异常,软件中断全被禁止,所有的中断被屏蔽。所以FIQ
就会很快执行,不会被其他异常或者中断打断,所以它又比IRQ快了。而IRQ不一样,当ARM处理IRQ模式处理IRQ中断时,如果来了一个FIQ中断请求,
那正在执行的IRQ中断处理程序会被抢断,ARM切换到FIQ模式去执行这个FIQ,所以FIQ比IRQ快多了。

另外FIQ的入口地址是0x1c,IRQ的入口地址是0x18


http://zhidao.baidu.com/link?url=xh8ECIUacWSj9ai9BeHtRv36N4dGv1-Lmsu9fSwrvh1EDbtsdJgEvwKXYmdIJh9EZNF7-aFXPK9MQbtFsgWx4a

Q:arm里7种工作方式,分别在是在什么状态下用的?

A:

供参考吧,另外研究这个干什么?不要太深究了吧,ARM管脚兼容的Cortex M3/ M4都已经不再使用这7种模式了。是否说明这种设定不是那么合适呢?
 
ARM处理器工作模式一共有 7 种 :
USR  模式
    正常用户模式,程序正常执行模式

FIQ模式(Fast Interrupt Request)
      处理快速中断,支持高速数据传送或通道处理

IRQ模式
     处理普通中断

SVC模式(Supervisor)
     操作系统保护模式,处理软件中断swi  reset
 
ABT  中止(Abort mode){数据、指令}
     处理存储器故障、实现虚拟存储器和存储器保护

UND 未定义(Undefined)
    处理未定义的指令陷阱,支持硬件协处理器的软件仿真

SYS 系统模式(基本上=USR)(System)
    运行特权操作系统任务
 
用户模式和特权模式
除了用户模式之外的其他6种处理器模式称为特权模式

 特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。

 特权模式中,除系统模式外,其他5种模式又称为异常模式。

 大多数的用户程序运行在用户模式下,此时,应用程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。

 用户模式下,当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。

抱歉!评论已关闭.