IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> GICv3软件overview手册之配置GIC -> 正文阅读

[嵌入式]GICv3软件overview手册之配置GIC

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

????????LPI的配置与配置SPI/PPI/SGI不一样,LPI的配置在其他章分开描述。

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

????????本章首先看全局设置,然后看基于PE的设置。

1. 全局设置

????????Distributor控制寄存器GICD_CTLR必须被配置来使能中断group,并设置路由模式。

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

????????GICD_CTLR中ARE位控制是否亲和性路由使能。若亲和性路由没有使能,GICv3配置为传统操作。是否亲和性路由使能可以被单独控制为安全和非安全状态。

(2)Enables

GICD_CTLR包含group0/安全group1/非安全group1的分开的使能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接口寄存器,以及在GICv3中如何访问系统寄存器。软件必须通过设置ICC_SRE_ELn寄存器使能访问CPU接口寄存器。

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

????????CPU接口寄存器包含优先级屏蔽寄存器(ICC_PMR_EL1)和二进制寄存器(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_EL1为安全状态。这意味着ICC_GRPEN1_EL1控制当前安全状态的group1。在EL3时,软件通过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为最高优先级,0xff为最低优先级。后面章节会描述GICD_IPRORITYn和GICR_IPRORITYn中的优先级如何屏蔽低优先级中,以及它是如何控制抢占。

????????不要求中断控制器实现完整的8bit优先级位。如果GIC支持2个安全状态,至少要实现5bit。如果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控制。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:36:08  更:2022-01-04 13:38:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:40:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码