Fork me on GitHub
侧边栏

【ARMv8v9 GIC 系列 1.7 -- GIC PPI SPI SGI LPI 中断使能配置概述】

GIC 各种中断使能配置

在ARM GICv3和GICv4架构中,不同类型的中断(如PPIs、SPIs、SGIs和LPIs)可以通过 不同的 方式进行启用和禁用。

image

下面详细介绍这些中断的启用和禁用方法:

PPIs(每个处理器私有中断)

  • 启用和禁用PPIs :通过向 GICR_ISENABLER0 GICR_ICENABLER0 寄存器写入,可以在启用了亲和性路由的安全状态下,启用和禁用PPIs。
    如果支持并配置了物理中断的传统操作,对于PPIs n = 0 ,也就是只有一个寄存器。可以通过向 GICD_ISENABLER<n> GICD_ICENABLER<n> 写入来单独启用和禁用PPIs。

物理中断的传统操作模式 (“Legacy Operation for Physical Interrupts”)通常指的是对早期 ARM架构 的支持,其中中断管理方式可能与最新的GIC规茅有所不同。这种传统操作模式允许兼容旧的中断处理机制,使得新的GIC能够在不完全遵循最新GIC规范的环境下工作,以确保对旧硬件或软件的兼容。

  • 扩展PPI范围 :在可选的扩展PPI范围内,PPIs可以通过写入 GICR_ISENABLER<n>E GICD_ICENABLER<n>E 来启用和禁用。

SPIs(共享外设中断)

  • 启用和禁用SPIs :通过向 GICD_ISENABLER<n> GICD_ICENABLER<n> 寄存器写入,可以启用和禁用SPIs,其中 n > 0 对于SPIs。
  • 扩展SPI范围 :在可选的扩展SPI范围内,SPIs可以通过写入 GICD_ISENABLER<n>E GICD_ICENABLER<n>E 来启用和禁用。

SGIs(软件生成的中断)

  • 启用和禁用SGIs :当启用了亲和性路由时,可以通过向 GICR_ISENABLER0 GICR_ICENABLER0 写入来启用和禁用SGIs。
    如果支持并配置了物理中断的传统操作,那么对于SGIs, n = 0 ,也可以通过向 GICD_ISENABLER<n> GICD_ICENABLER<n> 写入来单独启用和禁用SGIs。SGIs是否可以通过写入 GICR_ISENABLER0 GICR_ICENABLER0 永久启用或禁用,取决于具体实现。

LPIs(局部中断)

  • 启用LPIs :可以通过在 LPI 配置表中设置启用位来启用个别 LPIs 。关于使用 LPI 配置表启用 LPIs 的更多信息,并未在此处详细展开,但基本思路是在LPI配置表中指定每个LPI的配置,包括它们是否被启用。

这种灵活的启用和禁用机制为系统提供了细粒度的中断管理能力,允许根据应用需求和性能考虑,对中断进行精确控制。

posted @ 2025-05-10 17:03  yooooooo  阅读(196)  评论(0)    收藏  举报