美文网首页
GIC的启动流程

GIC的启动流程

作者: 欢仔_159a | 来源:发表于2017-07-21 20:13 被阅读0次

    一 与GIC有关的基本概念

    GIC是ARM中统管异常的模块,所有加速器的中断信号都将发送给GIC,再由GIC路由给不同的核去处理该中断。

    1 寄存器

    VBAR_ELx:

    ESR_ELx:

    ELR_ELx:

    MPIDR:

    SCR_ELx:

    HCR_ELx:

    2 异常的分类:

    (1)同步异常:DABT,IABT,PC Alignment

    (2)异步异常:IRQ,FIQ,Serror

    二 ARMv8是如何识别异常的?

    在OS刚起来时的一段*.s的汇编文件中有个中断向量表,ARM支持的几种异常在该表中都有对应的入口。并且向量表的地址存放在对应的VBAR_ELx,一旦编译链接成功,VBAR_ELx的值就已经固定。

    当系统产生异常时,首先会根据ESR_ELx判断是否有异常发生,若有则根据VBAR_ELx找到中断向量表,再根据ESR_ELx的EC域识别中断类型,在向量表中寻找对应中断类型的入口,然后开始中断处理。

    三 中断路由

    每个核都有一个MPIDR寄存器,并且每个核的MPIDR寄存器的值都不相同,这可以作为每个核的唯一标志。

    比如我希望某个中断由核1处理,那么GIC中的路由寄存器需要根据核1的MPIDR值去配置。

    四 中断在哪个EL上处理?

    这取决于当前中断分组,当前所处ELx以及各种安全寄存器的配置。

    五 中断处理流程

    中断从产生,处理到结束都离不开软硬件的配合。

    相关文章

      网友评论

          本文标题:GIC的启动流程

          本文链接:https://www.haomeiwen.com/subject/lttykxtx.html