中断控制器对每个SPI/PPI/SGI中断源维护了一个状态机。状态机包含以下四种状态:

(1)Inactive:中断源当前没有触发;

(2)Pending:中断源被触发,但还未被PE应答;

(3)Active:中断源被触发,且被PE应答;

(4)Active and Pending: 中断被PE应答,但中断源另一实例进入Pending状态;

NOTE: LPI没有active或active and pending状态。

下图显示了状态机的结构以及可能的转换。

中断的生命周期依赖于是否配置为电平中断或边沿中断。

1. 电平中断

Inactive to Pending

当触发中断源时,中断转换从Inactive到Pending。

在这个时候GIC发中断信号到PE(如果中断使能且存在足够的优先级)。

Pending to Active&Pending

当PE通过读取CPU接口的IAR寄存器来应答中断,中断转换从Pending到Active&Pending。

在中断异常产生时对寄存器的读取为中断处理路径的一部分。但软件也可以轮询IAR寄存器。

在此时GIC取消发往PE的中断源。

Active and Pending to Active

当外设de-assert中断信号时,中断转换从Active and Pending到Active。

这通常为了响应处理中断,执行在PE上在外设写状态寄存器。

Active to Inactive

当PE写CPU接口的EOIR寄存器时,中断转换从active到Inactive。

这表明PE完成了中断的处理。

2. 边沿中断

Inactive to Pending

当中断源被触发时,中断转换从Inactive到Pending。

在这个时候GIC发中断信号到PE(如果中断使能且存在足够的优先级)。

Pending to Active

当PE通过读取CPU接口的IAR寄存器来应答中断,中断转换从Pending到Active。在中断异常产生时对寄存器的读取为中断处理路径的一部分。但软件也可以轮询IAR寄存器。

在此时GIC取消发往PE的中断源。

Active to Acitve and Pending

当外设再次触发中断信号时,中断转换从active到active and pending。

Active and Pending to Active

当PE写CPU接口的EIOR寄存器时,中断从active到active and pending。

这表明PE完成中断的第一个实例的处理。在这个时候GIC又重新触发中断信号。

GICv3软件overview手册之GICv3基本功能(2)相关推荐

  1. GICv3软件overview手册之GICv3基本功能(4)

    GICv3架构支持ARM trustZone技术.每个INTID都赋予给一个group和安全设置.GICv3支持三种合并,如表中所示: 中断类型 使用例子 Secure Group 0 EL3的中断( ...

  2. GICv3软件overview手册之GICv3基本功能(1)

    本章描述与GICV3架构兼容的中断控制的基本操作.它也会描述不同的编程接口. 1. 中断类型 GICV3定义了如下中断类型: (1)SPI共享外设中断 这是一种全局外设中断,可路由到某个PE,或一组P ...

  3. GICv3软件overview手册之GICv3基本功能(5)

    GICv3中断控制器的寄存器接口分为三组: (1)Distributor接口: (2)edistributor接口: (3)CPU接口: Distributor(GICD_*) Distributor ...

  4. GICv3软件overview手册之GICv3基本功能(3)

    GICv3使用亲和路由来区分连接的PE,让中断路由到某个PE或某一组PE.PE的亲和性由4个8bit域表示. <affinity level3>.<affinity level2&g ...

  5. GICv3软件overview手册之介绍

    本文档提供了GICv3特性的软件overview,并且描述GICV3中断控制器的操作.它也只是如何在裸机环境下配置GICV3中断控制器的简介. 本文档是ARM通用中断控制器架构手册V3.0和V4.0的 ...

  6. GICv3软件overview手册之虚拟化

    ARMv8-A 可选择支持虚拟化.GICv3也支持虚拟化.GICv3对虚拟化的支持包括: (1)CPU接口寄存器的硬件虚拟化: (2)虚拟化中断: (3)维护中断: NOTE: GIC架构不提供虚拟化 ...

  7. GICv3软件overview手册之发送和接受SGI

    SGI中断为软件产生中断,软件可以通过写中断控制器的寄存器触发该中断. 1. 产生SGI 在CPU接口中可以通过写SGI寄存器来产生一个SGI中断. 下图为SGI寄存器的基本格式: (1)控制SGI ...

  8. GICv3软件overview手册之GICv4对虚拟LPI的直接注入(2)

    1. vPE和vINTID的映射 EventID-DeviceID的合并被映射到vPE和vINTID.当EventID和DeviceID相同时使用VMAPI命令: VMAPI <DeviceID ...

  9. GICv3软件overview手册之中断处理(2)

    1. 执行优先级&抢占 PMR设置中断发给某个PE的最小优先级.GICv3架构存在执行优先级的概念.当PE应答一个中断时,它的执行优先级变成中断的.当PE写EOI寄存器时执行优先级返回之前的值 ...

最新文章

  1. Java综合知识总结_数据库篇
  2. redis 系列25 哨兵Sentinel (高可用演示 下)
  3. 请写出一段Python代码实现删除一个list里面的重复元素
  4. Kotlin 与 Java有什么区别(最全最新的)
  5. /etc/rc.local——开机自启配置文件
  6. 实用知识点梳理:BGP协议、调制解调技术、路由特点、VOIP、FTP、Cookie、滑动窗口协议与自动重传请求
  7. 3. 无重复字符的最长子串 golang
  8. infinite-scroll学习(二)
  9. Java web 第一天
  10. 巴西矿坝决堤事故已致58人死亡 多达300人失踪
  11. 相邻素数的差最大是多少c语言,怎么证明?相邻两个素数之差的最大值
  12. dvr行业的linux
  13. Nginx服务器的gzip压缩详解
  14. obs摄像头模糊_【OBS虚拟摄像头插件】OBS虚拟摄像头下载OBS VirtualCam v2020 官方版-趣致软件园...
  15. Python 命令行参数:Argparse 与 Click
  16. 将UTC日期字符串转为本地时间字符串,如@yyyy-MM-dd'T'HH:mm:ssZ转换为本地时间
  17. 新南威尔士大学预科学生宿舍
  18. C语言编写一个函数,实现计算并返回一个整数的平方(或立方)
  19. 白嫖小程序云存储空间,手撸你的专属云盘
  20. 从安装到连接,教你如何连上Mysql数据库

热门文章

  1. java通过ip地址获取相应对应的城市
  2. 物联网有哪些安全风险?物联网安全问题汇总
  3. 批量提取word doc文档中的表格
  4. 北航操作系统课程-第一次作业-操作系统引论1
  5. pic16f1829 c语言,PIC16F1829 串口初始化程序及应用
  6. 【基础知识】PCB布局设计入门步骤
  7. ASCII表完整版(包含16进制对应表)——看看16进制与10进制的转化
  8. 一些常用的网站或工具(二)
  9. aspectjweaver.jar+ aopalliance.jar+mchange-commons-java.jar+cglib.jar官网下载
  10. 维特比算法的简单实现