FIQ和IRQ的区别及CPU实现
来源:互联网 发布:notepad 执行python 编辑:程序博客网 时间:2024/05/11 21:36
一般的中断控制器里我们可以配置与控制器相连的某个中断输入是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。
- FIQ和IRQ的区别及CPU实现
- FIQ和IRQ的区别
- FIQ和IRQ的区别
- FIQ和IRQ区别
- FIQ和IRQ区别
- FIQ和IRQ区别
- FIQ和IRQ区别
- FIQ和IRQ区别
- FIQ和IRQ区别
- IRQ和FIQ中断的区别
- IRQ和FIQ中断的区别
- IRQ和FIQ中断的区别
- IRQ和FIQ中断的区别
- IRQ与FIQ的区别
- 嵌入式学习之IRQ和FIQ之间的区别
- IRQ,FIQ区别FAQ
- ARM的SVC、IRQ和FIQ模式。
- FIQ和IRQ
- “堆”和“栈”的粗略认知
- CString时间字符串,COleDateTime,CTime类之间的转换
- 怎么发现RAC环境中'library cache pin'等待事件的阻塞者(Blocker)?
- Fragment与ViewPager之间更新数据相关问题
- 马云——2015纽约经济俱乐部演讲全文
- FIQ和IRQ的区别及CPU实现
- OpenGL 键盘控制和灯光
- WIN7下安装SVN服务器端及客户端搭建协作环境
- TFS大文件分析
- scanf sscanf fscanf fgets printf sprintf snprintf 等函数
- Redis学习笔记-Jedis操作Redis
- git的使用
- 远程计算_使用Matlab计算引擎
- String数据类型详解