本文档提供了GICv3特性的软件overview,并且描述GICV3中断控制器的操作。它也只是如何在裸机环境下配置GICV3中断控制器的简介。
本文档是ARM通用中断控制器架构手册V3.0和V4.0的简介。它不能代替这两文档。可以查阅这两文档了解更多详细的寄存器和行为。
1. 范围
GICV3允许很多不同的配置和使用。本文档只是作简单的介绍,且为所有使用的子集。它仅描述如下情况:
(1)存在两种安全状态;
(2)亲和路由在两种安全状态下使能;
(3)在所有的异常级别下系统寄存器的访问使能;
(4)连接的处理器与ARMv8-A兼容,执行所有异常级别且在所有级别上使用AARCH64;
本文档不包含:
(1)传统的行为;
(2)AARCH32的使用;
2. GIC架构的历史简介
GICV3增加了多个新特性。将这些新特性放入下表中,下表提供了不同版本的GIC及重要特性的简要overview。
版本 | 关键特性 | 典型使用 |
GICV1 | 支持最多8个PE 支持最多1020个中断ID 支持两个安全状态 | ARM Cortex-A5 MPCore ARM Cortex-A9 MPCore ARM Cortex-R7 MPCore |
GICV2 | 支持GICV1所有的重要特性 支持虚拟化 | ARM Cortex-A7 MPCore ARM Cortex-A15 MPCore ARM Cortex-A53 MPCore ARM Cortex-A57 MPCore |
GICV3 | 支持GICV2所有的重要特性 支持超过8个PE 支持基于message的中断 支持超过1020个中断ID 支持系统寄存器访问CPU接口寄存器 兼容的安全模式,将安全和非安全分开 | ARM Cortex-A53 MPCore ARM Cortex-A57 MPCore ARM Cortex-A77 MPCore |
GICV4 | 支持GICV3所有的重要特性 虚拟中断的直接注入 | ARM Cortex-A53 MPCore ARM Cortex-A57 MPCore ARM Cortex-A72 MPCore |
NOTE: GICV2M是GICV2的扩展,增加了message中断的支持。
3. 传统支持
GICV3对编程模型作了很多修改。为了支持GICV2系统的传统软件,GICV3支持传统操作。
使用的编程模型由GICD_CTRL寄存器中ARE(affinity routing enable亲和性路由使能)位控制:
(1)当ARE=0时,亲和路由disable(传统操作);
(2)当ARE=1时,亲和路由使能;
NOTE:为了可读性,GICD_CTRL.ARE_S和GICD_CTRL.ARE_NS作为ARE在适当的地方被提及。
在支持两个安全状态的系统中,亲和路由可以为每个安全状态分开控制。只有某些特殊情况下的合并被允许,如下图所示:
本文档重点关注新的GICV3的编程模型,在两安全状态下ARE=1的情况。传统操作,ARE=0的情况不再描述。
NOTE: 支持传统操作是可选的。当实现了传统操作时,传统操作在其它情况下被选择。