资讯详情

GICv3软件overview手册之配置GIC

本章描述了如何在裸设备环境中使能和配置GICv3中断控制器。请查看寄存器的详细描述ARM一般中断控制器用户手册。

LPI配置与配置SPI/PPI/SGI不一样,LPI其他章节分别描述配置。

使用GICv大多数中断控制器系统是多核系统,可能是多处理器系统。有些设置是全球性的,它们影响所有连接PE。其他设置都是针对某个设置的PE的。

本章先看全局设置,再看基础PE的设置。

1. 全局设置

Distributor控制寄存器GICD_CTLR必须配置以中断能量group,并设置路由模式。

(1)使能亲和性路由(ARE bits)

GICD_CTLR中ARE亲和性路由是否使位控制。如果不使用亲和性路由,GICv3配置为传统操作。亲和路由能否单独控制为安全和非安全状态。

(2)Enables

GICD_CTLR包含group0/安全group1/非安全group分开使能bit。

- GICD_CTLR.EnableGrp1S使能distribution的安全group1中断;

- GICD_CTLR.EnableGrp1NS使能distribution的非安全group1中断;

- GICD_CTLR.EnableGrp0使能distribution的group0中断;

2. 单独的PE设置

2.1 Redistributor配置

当reset时,Restributor将其连接的PE视为sleeping。通过GICR_WAKER控制唤醒。使连接PE软件必须:

(1)清GICR_WAKER.ProcessorSleep=0;

(2)轮询GICR_WAKER.ChildrenAsleep直到它为0;

对LPI其他章节描述了使能和配置。

当GICR_WAKER.ProcessorSleep=1或GICR_WAKER.ChildrenAsleep=1时,写CPU接口寄存器,而不是ICC_SRE_ELn,会导致不可预测的行为。

2.2 CPU接口的配置

CPU接口负责将中断传输到连接的接口PE。为使能CPU软件需要做以下配置:

(1)访问系统寄存器

描述了前一章CPU接口寄存器和在GICv如何如何访问系统寄存器?软件必须设置ICC_SRE_ELn可访问的寄存器CPU接口寄存器。

(2)设置优先级屏蔽和二进制指向寄存器

CPU接口寄存器包含优先级屏蔽寄存器(ICC_PMR_EL一、二进制寄存器(ICC_BPRn_EL1)。优先屏蔽设置中断最小优先级,直接给予PE。二进制寄存器用于优先分组和抢占。两个寄存器的使用在后面章节中详细描述。

(3)设置EOI模式

在CPU接口中ICC_CTLR_EL1和ICC_CTLR_EL3中EOI如何处理模式控制中断的完成。详细描述后一章。

(4)中断每组group的发送

每个中断group发送必须通过CPU接口发送到PE以前使能。为了发送能量,软件必须是group1中断写ICC_IGRPEN1_EL1寄存器,为group0中断写ICC_IGRPEN0_EL1寄存器。

ICC_IGRPEN1_EL一是安全状态。这意味着ICC_GRPEN1_EL1控制当前的安全状态group1。在EL三、软件通过ICC_IGRPEN1_EL3访问安全group1中断和非安全group1中断使能。

2.3 PE配置

PE一些配置也需要允许中断和处理。超出本文档范围的详细描述。AArch64状态的基本步骤:

(1)路由控制

中断路由控制在PE的SCR_EL3和HCR_EL2.路由控制位决定中断产生的异常级别。这些寄存器的路由位在复位时处于UNKNOWN因此,软件必须初始化。

(2)中断屏蔽

PE在PSTATE执行屏蔽位。当这些位置需要设置时,中断需要屏蔽。这些位置设置在复位时。

(3)Vector表

PE向量表的位置由VBAR_ELn设置寄存器SCR_EL3和HCR_EL2.VBAR_ELn在复位时位UNKNOWN值。必须设置软件VBAR_ELn寄存器指向内存中适当的向量表位置。

3. SPI/PPI/SGI配置

使用GICD_*寄存器通过Distributor配置SPI。使用GICR_*寄存器通过Dedistributor配置PPI/SGI。对于每个INTID,软件必须配置如下:

(1)优先级(GICD_IPPRORITYn,GICR_IPRIORITYn)

每个INTID有一个与之相关的优先级,由一个8bit无符号值。0x00是最高优先级,00xff最低优先级。后一章将被描述GICD_IPRORITYn和GICR_IPRORITYn如何屏蔽低优先级中的优先级,如何控制抢占。

不要求中断控制器实现完整的8bit优先级GIC支持至少5个安全状态的2个安全状态bit。如果GIC只支持一个安全状态,至少4bit。

(2)Group(GICD_IGROUPn, GICD_IGRPMODn,GICR_IGROUP0, GICR_IGRPMOD0)

如前面描述的,三种中断需要描述位group中断group为group0, 安全group1和非安全group1。

(3)电平触发/边缘触发

物理信号中断时,必须配置为边缘触发或电平触发。SGI通常是边缘触发,所以GICR_ICFGR0通常为RAO/WI。

(4)Enable(GICD_ISENABLERn, GICD_ICENABLER, GICR_ISENABLER0, GICR_ICENABLER0)

每个INTID有一个enable位置。设置-使能寄存器和清除-使能寄存器不需要读写过程。ARM建议在使能INTID本章描述之前的设置。

对于裸体设备,在初始配置后不需要经常更改设置。但是,如果中断,则必须重新配置,如更改group建议先设置disable这个INTID。

定义了大多数配置寄存器的复位值。这意味着中断控制器的设计师决定了不同系统中不同的值。

3.1 为SPI设置目标PE

对于SPI,中断目标需要配置,这是由GICD_IROUTERn控制。每个SPI一个GICD_IROUTERn寄存器,Interrupt_Routing_mode位控路由策略。可选如下:

(1)GICD_IROUTERn.Interrupt_Routing_Mode=0

SPI被传递给PE A.B.C.D,在寄存器中表示亲和力。

(2)GICD_IROUTERn.Interrupt_Routing_Mode=1

SPI可传输到中断group中Distribution任何连接PE。Distributor选择目标PE,而不是软件,所以中断可能总是都不一样。

        这种类型的路由为1:N

        PE可以接受1:N中断。可以通过GICR_CTLR中DPG1S, DPG1NS和DPG0控制。

标签: 连接器gic

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台