1. GIC-625中断控制器架构概述
GIC-625是Arm CoreLink系列中的通用中断控制器(Generic Interrupt Controller)实现,基于GICv3和GICv4架构规范设计。在现代多核SoC中,中断控制器承担着关键的系统功能——它需要高效地收集、管理和分发来自各种外设的中断信号到合适的处理器核心。
1.1 核心组件与数据流
GIC-625采用典型的三级架构设计:
- Distributor(分发器):全局中断管理单元,负责所有中断源的优先级排序、安全状态检查和目标核心路由决策。它通过GICD_开头的寄存器组进行配置。
- Redistributor(再分发器):每个处理器核心配备一个,负责将Distributor分配的中断递送给特定核心,并管理本地中断状态。对应寄存器以GICR_为前缀。
- CPU接口:与处理器核心直接交互的硬件模块,处理中断的应答和优先级屏蔽。
中断处理的基本流程为:
- 外设触发中断信号(电平触发或边沿触发)
- Distributor根据GICD_CTLR寄存器配置决定是否处理该中断
- 进行优先级仲裁(比较新中断与当前处理中断的优先级)
- 根据路由表(如GICD_IROUTERn)确定目标核心
- 目标核心的Redistributor接收中断并通知CPU接口
- 处理器核心响应中断,读取ICC_IARn寄存器获取中断ID
- 处理完成后写入ICC_EOIRn寄存器通知GIC
1.2 关键架构特性
GIC-625相较于前代产品的主要增强点包括:
- 双安全状态支持:通过GICD_CTLR.DS位控制,可配置为单一安全状态或Secure/Non-secure双状态,满足TrustZone安全需求
- 1-of-N中断路由:允许单个SPI中断动态路由到多个核心中的一个(通过GICD_ICLARn寄存器配置)
- 消息信号中断:支持基于内存写操作的消息触发中断(MBIS),减少物理引脚依赖
- 错误注入与检测:提供GICD_ERRINSRn等寄存器用于模拟RAM错误,验证系统可靠性
实际项目中需注意:GIC-625默认上电时所有中断均被禁用,必须在初始化流程中正确配置GICD_CTLR寄存器使能相应中断组
