ARM架构(四)——异常中断和中断控制器(GIC)①

中断术语1——assert、routing、target、target to、target fromtaken

在这里插入图片描述
几个重要的概念:assert。routing、target、target to、target fromtaken

1.2 assert

外设发给GIC一个中断信号,GIC发给PE,PE对中断进行assert,断言这个中断是IRQ还是FIQ,这个过程就是assert。

1.3 target

外设发出中断信号给GIC,GIC发给PE,PE首先进行assert,然后下一步,PE对这个中断要进行Target操作,就是target到某一个异常等级,可能是EL1,也可能是EL2也可能是EL3,这个过程就是Target.

1.4 taken

外设发出中断信号给GIC,GIC发给PE,PE首先进行assert,然后PE对这个中断要进行Target,然后下一步在部分场景下PE还会再检查PSTATE的MASK位,,下一步PE准备对这个中断进行处理,就叫做PE taken了这个中断。taken之后就会跳到异常向量表进行中断处理了。

1.5 routing

就是从外设发出中断信号给GIC,GIC发给PE,PE首先assert,判断这个中断是FIQ还是IRQ。然后:
(1)PEtarget到其异常等级
(2)PE先判断处理器状态掩码
(3)PE taken这个中断
最后跳到异常向量表进行中断处理。
中间这个(1)(2)(3)过程就是routing路由的过程。

1.6 小结

在这里插入图片描述

路由之后,在部分场景下还会再检查PSTATE的MASK位,如果是unMasked的,此时也就是中断被taken了,也就是PE acknowledge了该中断。然后中断处理的软件中读取gic的寄存器。

2. 中断术语2

掌握中断进入和中断退出时,哪些行为是硬件自动完成的,哪些行为是依靠软件去做的。

2.1 IRQ 和FIQ区别

FIQ不是一个快速中断的意思,在很早的ARM手册中有讲FIQ比IRQ优先级别高,但是在后面的手册中有更正,FIQ 和IRQ优先级没有高低,FIQ更多的是体现了一个要被转发出去的中断,如果这个中断我这边不处理要转发出去,那就是FIQ,我自己要处理就是IRQ

2.2 中断数据流

在这里插入图片描述

图中蓝色都是硬件完成,后面跳到中断向量表了才到软件开始处理,

2.3中断entry

中断进来时的硬件的自动行为:
1、将PSTATE保存到SPSR_ELx中
2、将return地址保存到ELR_ELx中:
3、将PSTATE.{D.A,F}全部置为1
4-如果是同步异常或SError,在更新ESR_ELX异常特征寄存器
5、跳转到异常向量表
6、sp选择目标异常级别的sp_elx

2.4中断exit

一旦中断处理程序处理完中断,该处理程序就返回到中断发生前正在运行的代码。
它通过以下操作来实现:恢复所有以前堆叠的可损坏寄存器启动异常返回指令(ERET) ,ERET指令从关联的SPSR和分支中恢复先前的处理器状态到ELR中记录的异常返回地址。返回异常级别是根据SPSR_EL< x>中的值配置的,其中< x>是要返回的级别。SPSR_ELx还包含目标执行状态 。这是中断退出时候的硬件自动行为。

  • 在ELx上执行ERET指令时:
    (1)用ELR_RLx保存的值恢复PC
    (2)通过使用SPSR_ELx的内容来恢复PSTATE

在这里插入图片描述

2.5 EL 级别的切换

在这里插入图片描述

2.6 svc 也是可以trapped到EL2

  • 置上以下比特位,svc将trapped到EL2:
    HFGITR_EL2 (Hypervisor Fine-Grained Instruction Trap Register)
    SVC_EL1, bit [53]
    SVC_ELo, bit [52]
  • 置上以下比特位eret将trapped到EL2:
    ERET, bit [51]
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值