| |
|
开发:
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例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |