【ARM】Exynos 4412 中断控制器相关计算

本文介绍了Exynos 4412处理器中GIC(Generic Interrupt Controller)的中断处理流程,包括开启中断、中断源屏蔽、优先级处理等。在配置GIC时,涉及中断使能寄存器ICDISER和CPU目标选择寄存器ICDIPTR的计算。以EINT9为例,详细解释了如何确定中断在这些寄存器中的位置,为多核处理器中中断信号的正确路由提供指导。
摘要由CSDN通过智能技术生成

由于引入了GIC,在设置中断控制器的时候不免产生各种计算,各种寄存器编号换算比较繁琐,在此提供一种计算方式。

GIC处理中断的流程


GIC中由成百上千的寄存器,要理清寄存器的设置思路,必须要理解GIC是如何处理中断源发来的中断信号的。

  1. 首先,GIC有一个全局开关——ICDDCR。这个寄存器决定了GIC是否会处理外围的中断信号,因此必须先将它打开。

  2. 中断信号到来后,第一个要面对的是GIC的中断源屏蔽,这里GIC提供了两种策略:白名单——ICDISER_CPU,以及黑名单—— ICDICER_CPU。

    在白名单中,相应的中断源位置1表示允许这个中断;在黑名单中,相应的中断源位置1表示禁止这个中断。一般情况下,我们都是使用白名单。

  3. OK,现在许多的中断信号都被允许进入GIC了,接下来中断信号们面对的是GIC的优先级处理系统。这个优先级的处理简单的说就是:谁的优先级高,就先响应谁;低于最低优先级的中断信号将被阻止。

  4. 经过了两轮过滤,剩下的中断信号都将交给CPU处理。那么又出现了一个先后顺序的问题。FIQ优先级高于IRQ这是一定的,另外,在GIC中可以设置每一个中断源的优先级,GIC将根据优先级高低,依次将信号传送给CPU。

  5. 对于一个将要传送给CPU的中断信号,我们是要将它给哪个CPU呢?因为多核处理器有很多的CPU。仍然是通过寄存器来设置。

  6. 到了最后一关,前面只是中断信号自己“一厢情愿”的想要交给CPUn处理

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值