赞
踩
ARMv9架构继续支持ARMv8引入的中断管理机制,包括SPI(共享外设中断)、PPI(每处理器中断)和SGI(软件生成的中断)。这些中断类型为不同的应用场景提供了灵活性和高效的中断处理方式。此外,GIC V3中断控制器的组成部分包括:distributor,Redistributor,cpu interface,ITS。
GIC V3中断控制器和处理器核心之间的关系图如下:
图 1-1
0
到15
的中断编号,为软件生成的中断,主要用于处理器间的通信(IPC)。ARM架构允许软件触发这些中断,以便一个处理器可以向一个或多个处理器发送信号。16
到31
的中断编号,这类中断是每个处理器专有的。这意味着每个处理器都有自己的一组 PPI,而这组PPI
仅对该处理器可见。32
开始的中断编号,用于系统中的外设共享中断。这意味着SPI可以被系统中的任何处理器接收。GICv3中断号分配对于每个中断,从产生到处理再到结束,是有一个完整的生命周期的。
图 1-2
generate
:外设或软件发起一个中断;distribute
:中断经过分组,优先级仲裁等,发送给对应的 CPU interface;deliver
:CPU interface
将中断发送给 core;activate
:当CPU core 开始响应中断,GIC将最高激活优先级的中断设置为激活;priority drop
: core发信号给GIC,通知最高优先级中断,GIC可以重置优先级;deactivation
:清除中断.GICC_IAR
寄存器来响应该中断,寄存器返回硬件中断号GICC_EOIR
寄存器,来给GIC发送一个EOI完成信号GICC_IAR
寄存器来响应该中断,寄存器返回硬件中断号GICC_EOIR
寄存器,来给GIC发送一个EOI
完成信号forwarding方式,由以下寄存器实现
GICR_SERLPIR
:将指定的LPI中断,设置为Pending状态GICR_INVLPIR
:将指定的LPI中断,清除Pending状态。寄存器内容和 GICR_SERLPIR
一致GICR_INVLPIR
:将缓存中,指定LPI
的缓存给无效掉,使GIC重新从memory中载入LPI的配置GICR_INVALLR
:将缓存中,所有LPI
的缓存给无效掉,使GIC重新从memory中,载入LPI中断的配GICR_SYNCR
:对Redistributor的操作是否完成推荐阅读:
https://blog.csdn.net/wyy4045/article/details/104827111
https://www.sohu.com/a/771753252_121124377
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。