历史上的今天
返回首页

历史上的今天

今天是:2024年09月17日(星期二)

2021年09月17日 | ARM9_S3C2440学习(四)FIQ和IRQ区别

2021-09-17 来源:eefocus

ARM 处理器有 FIQ和 IRQ 两级外部中断,它们都是由对电平敏感的低电平(LOW)信号激活进入处理器的。为了产生中断,CPSR 中的相应禁用位必须清零。


快速中断请求(Fast Interrupt Request,FIQ),IRQ全称为Interrupt Request,即是“中断请求”的意思。


FIQ 的优先级比 IRQ高,具体表现如下:


(1)当发生多个中断时,首先处理 FIQ。


(2)处理 FIQ会导致禁用 IRQ 和后续 FIQ,在 FIQ处理程序启用之前,不会处理 IRQ 和后续 FIQ。这通常是通过在处理程序结束时从 SPSR恢复 CPSR来完成的。


FIQ 向量是向量表的最后一个入口,因此 FIQ处理程序可直接放在该向量位置并从该地址顺序执行。这避免了跳转以及相关的延迟,并意味着如果系统有高速缓存,则向量表和 FIQ处理程序可能都锁定在高速缓存中的一个块内。这一点非常重要,因为 FIQ就是为了尽快处理中断而设计的。通过五个额外的 FIQ模式编组寄存器,可以保存处理程序各次调用的状态,这也加快了执行速度。


注意:中断处理程序必须包含清除中断源的代码。


#define pISR_RESET         (*(unsigned *)(_ISR_STARTADDRESS+0x0))


#define pISR_UNDEF              (*(unsigned *)(_ISR_STARTADDRESS+0x4))


#define pISR_SWI             (*(unsigned *)(_ISR_STARTADDRESS+0x8))


#define pISR_PABORT            (*(unsigned *)(_ISR_STARTADDRESS+0xc))


#define pISR_DABORT            (*(unsigned *)(_ISR_STARTADDRESS+0x10))


#define pISR_RESERVED (*(unsigned *)(_ISR_STARTADDRESS+0x14))


#define pISR_IRQ             (*(unsigned *)(_ISR_STARTADDRESS+0x18))


#define pISR_FIQ              (*(unsigned *)(_ISR_STARTADDRESS+0x1c))


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。

推荐阅读

史海拾趣

DUBILIER公司的发展小趣事

随着技术的不断进步和市场的不断变化,DUBILIER公司意识到必须不断拓展市场以保持竞争力。因此,公司决定采取多元化的市场战略,进入多个不同的细分市场。通过与行业合作伙伴建立紧密的合作关系,DUBILIER公司成功地将其产品推广到了更广泛的领域。同时,公司还积极开拓国际市场,将产品出口到世界各地。这些努力不仅为公司带来了更多的商业机会,还进一步巩固了其在全球电子行业的地位。

Cicoil公司的发展小趣事

在20世纪60年代,人类开始了对月球的探索。Cicoil公司的柔性扁平电缆被选为阿波罗任务的关键组件之一。这些电缆为宇航员在月球上的活动提供了安全可靠的电力和数据传输保障。当尼尔·阿姆斯特朗和巴兹·奥尔德林在月球上行走时,他们的每一步都离不开Cicoil电缆的支持。这一历史性的时刻让Cicoil公司名声大噪,也进一步巩固了其在电子行业中的地位。

Alan Industries Inc公司的发展小趣事

随着产品技术的不断提升,Alan Industries Inc.开始积极拓展市场。公司制定了详细的市场营销策略,通过线上线下的多渠道推广,成功将产品打入国内外市场。同时,公司还注重品牌建设,通过优质的产品和服务赢得了消费者的信任和口碑。随着品牌知名度的提升,公司的市场份额不断扩大,成为电子行业中的佼佼者。

Cables To Go公司的发展小趣事

在竞争激烈的电子行业中,优质的客户服务是赢得客户信任的关键。Cables To Go公司深知这一点,因此始终将客户服务放在首位。公司建立了一支专业的客服团队,随时为客户提供咨询、技术支持和售后服务。此外,公司还不断优化服务流程,提高服务效率,确保客户能够享受到及时、专业的服务。这种以客户为中心的服务理念赢得了客户的广泛赞誉。

福斯特半导体(Foster)公司的发展小趣事

在电子行业的激烈竞争中,Cables To Go公司以其卓越的产品品质和创新精神脱颖而出。公司从成立之初就注重产品研发,不断推出符合市场需求的高品质线缆产品。通过严格把控原材料采购和制造工艺,Cables To Go确保了每一根线缆都具备出色的性能和稳定性。同时,公司还积极投入研发,推出了一系列具有创新性的线缆解决方案,满足了客户多样化的需求。

Global Navigation Systems公司的发展小趣事
远程无线防盗报警(发射)电路通常包括入侵探测器、微型无线报警发射机和无线报警接收控制器三大部分。当入侵探测器检测到异常情况(如门窗被非法打开)时,会触发微型无线报警发射机发出编码报警电信号。这个信号通过无线方式传输给远程的无线报警接收控制器,接收控制器解码后触发报警装置(如警铃、灯光等)进行报警,并可能通过GSM模块等通讯方式将报警信息发送给用户或监控中心。

问答坊 | AI 解惑

8路温度转换上下限修改

谁能告诉我怎样存储修改呀?…

查看全部问答>

世界500强面试题目及评点

世界500强面试题目及评点(上) 世界500强面试题目及评点(下) …

查看全部问答>

LPC1343

呵呵,来申请一下吧,看看能不能有机会得到。 有机会得到的话,一定多写一些使用经验出来跟大家分享。 如果能够顺便做一个学习板出来,可以在论坛搞更多活动了。…

查看全部问答>

求助:遇到sp被重定义怎么办?

在CCS2.0下用C写程序的时候编译连接都没问题,但是程序老是陷入死循环,查了很久都没查出来,最后感觉是可能是如下3个warning的问题 “Reg5509a.h\",line 107:warning:incompatible redefinition of macro \"RSA0L\"(declared at line 60) “Reg5 ...…

查看全部问答>

新手请教关于嵌入式开发的方向问题

请问大家,做“智能卡”(比如食堂饭卡、公交车卡)、读卡器的开发工作,对于嵌入式开发、手机软件开发和Wince应用开发的工作在经验和技能上有没有多大帮助呢?…

查看全部问答>

STMCU开发板免费大赠送啦

    ST公司将在登记的客户中抽取1500人,免费赠送MCU开发套件(含STM32,STM8最小系统,和STLINK)。赠品预计5月底发放。微芯力科公司将协办ST公司的开发套件免费赠送活动。请点击以下链接,登记信息,参加活动。http://w ...…

查看全部问答>

STM32F103RBT6+KEIL3.4+JLINK怎样设置keil下载程序到flash呢?

STM32F103RBT6+KEIL3.4+JLINK 怎样设置keil下载程序到flash呢? 在网上查了好多相关文档,都试了,下载的时候也没报错,但是结果很奇怪。 之前下了个让PB2输出高电平点亮LED灯的程序,下载后LED确实亮了,后来想让LED闪烁,但是无论如何,LE ...…

查看全部问答>

城主,问一下STM32F105RB的OTG问题!

我现在想用STM32F105RB做产品,在现场通过U盘对产品进行升级!请问可以做到吗?因为USB的OTG我从来没有用过。以前用的要么只能host,或者只能作device。 另外当用STM32F105RB的OTG作主访问U盘时,外围还要加其它的接口芯片吗?另外就是STM32F ...…

查看全部问答>

TI阅读:电压参考如何影响 ADC 性能,第 1 部分

本帖最后由 dontium 于 2015-1-23 11:40 编辑 这个是英文版的,没发现中文版,有牛人自制中文版的,发上来贡献下。 …

查看全部问答>

UDP的服务器程序

那位大侠有UDP的服务器程序,能否借鉴一下?谢谢了…

查看全部问答>