中断分支

2012-10-07 09:03:38      我来说两句 
收藏   我要投稿   

7.7  FIQ和IRQ中断

7.7.1  中断分支

1.软件控制中断分支

ARM内核只有两个外部中断输入信号nFIQ和nIRQ。但对于一个系统来说,中断源可能多达几十个。为此,在系统集成时,一般都会有一个异常控制器来处理异常信号,如图7-5所示。


 

这时候用户程序可能存在多个IRQ/FIQ的中断处理函数。为了使从向量表开始的跳转始终能找到正确的处理函数入口,需要设置处理机制和方法。在以往的ARM芯片中采用的是使用软件来处理异常分支,因为软件可以通过读取中断控制器来获得中断源的信息,从而达到中断分支的目的,如图7-6所示。


 

因为软件的灵活性,可以设计出比图7-6更好的流程控制方法,如图7-7所示。

Int_vector_table是用户自己开辟的一块存储器空间,里面按次序存放异常处理函数的地址。IRQ_Handler()从中断控制器获取中断源信息,然后再从Int_vector_table中的对应地址单元得到异常处理函数的入口地址,完成一次异常响应的跳转。这种方法的好处是用户程序在运行过程中,能够很方便地动态改变异常服务内容。


 

进入异常处理程序后,用户可以完全按照自己的意愿来进行程序设计,包括调用Thumb状态的函数等。但对于绝大多数的系统来说,有两个步骤必须处理,一是现场保护,二是要把中断控制器中对应的中断状态标识清除,表明该中断请求已经得到响应。否则,中断函数退出以后,又会被再一次触发,从而进入周而复始的死循环。

2.向量中断控制器

这种类型的中断控制早已出现在了ARM芯片中,比如基于S5PC100的Cortex-A8中,以集成PL192向量中断控制器。使用向量中断的优点在于,中断优先级仲裁及中断分支的处理递交给了控制器来处理,这样从获取中断源,再到中断ISR的处理,其性能相对于软件方式的实现有很大的提高。下面是使用这种机制的详细介绍。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值