当前位置: 首页 > news >正文

Cortex-A7的GIC(通用中断控制器):中断处理状态机

0 资料

ARM® Generic Interrupt Controller Architecture version 2.0 Architecture Specification

1 中断处理状态机

1.1 中断处理状态说明及状态机转换图

在这里插入图片描述
在这里插入图片描述

说明:
Inactive:未激活,中断无效。中断非挂起或非激活。
Pending:挂起,中断有效。等待被处理的中断。
Active:激活,中断有效。正在被CPU处理的中断。
Active and pending:激活及挂起,中断有效。CPU正在处理当前中断且该中断源又发送中断信号过来。

1.2 Transition A1 or A2, add pending state(添加挂起状态)

在这里插入图片描述
添加挂起状态分为SGI和SPI/PPI两个处理路径:
(1)SGI
发生以下情况之一:
(1.1)软件写入GICD_SGIR (软中断生成寄存器)
(1.2)软件写入GICD_SPENDSGIRn(软中断设置挂起寄存器)
(2)SPI/PPI
发生以下情况之一:
(2.1)外围设备发出中断请求信号
(2.2)软件写入GICD_ISPENDRn(中断设置挂起寄存器)

1.2 Transition B1 or B2, remove pending state(删除挂起状态)

在这里插入图片描述
删除挂起状态分为SGI和SPI/PPI两个处理路径:
(1)SGI
软件写GICD_CPENDSGIRn(软中断清除挂起寄存器)
(2)SPI/PPI
发生以下情况之一:
(2.1)如果是电平触发中断,电平无效时清除挂起
(2.2)如果是边沿触发中断,软件写入GICD_ICPENDRn(中断清除挂起寄存器)

1.3 Transition C, pending to active(挂起到激活)

在这里插入图片描述
如果中断已启用,并且具有足够的优先级向处理器发出信号,则软件通过读取GICC_IAR(中断确认寄存器)实现挂起到激活的转换。

1.4 Transition D, pending to active and pending(挂起到激活及挂起)

在这里插入图片描述
挂起到激活及挂起状态分为SGI和SPI/PPI两个处理路径:
(1)SGI
发生以下情况之一:
(1.1)软中断生成及GICC_IAR(中断确认寄存器)均发生
(1.2)当两个或多个具有相同中断ID的未决SGI来自同一源处理器并以同一处理器为目标时。如果其中一个SGI遵循转换C,其他SGI则遵循转换D
(2)SPI/PPI
同时发生以下情况:
(2.1)中断使能
(2.2)软件读取GICC_IAR(中断确认寄存器),进入激活状态
(2.3)发送以下事件中的一个:
(2.3.1)电平触发中断的信号处于有效状态
(2.3.2)对于边缘触发的中断,是否发生这种转换取决于GICC_IAR的读取时间(中断确认寄存器)与中断检测时间。

1.5 Transition E1 or E2, remove active state(未激活状态)

在这里插入图片描述
通过写入GICC_EOIR(中断结束寄存器)或GICC_DIR(中断停用寄存器)进入未激活状态。这里需要注意:在GICv2 中只要对GICC_EOIR进行了有效写入就会自动将对应的中断停用(不再需要设置GICC_DIR中断停用寄存器)。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 知识图谱用于推荐系统问题
  • odoo SyntaxWarning: invalid escape sequence ‘\w‘
  • Java nio pipe 相似的 api
  • Linux系统中使用socket编程进行网络通信
  • 多维系统下单点登录之整理解决方案
  • 数字虚拟人原理
  • 百日筑基第六十二天-持续集成和持续交付的 pipeline 概念
  • NSSCTF练习记录:[SWPUCTF 2021 新生赛]ez_rsa
  • 分布式数据一致性小结
  • Spring Boot 应用中注册和使用 Filter
  • js怎样改变元素的内容、属性、样式?
  • GATK ReadsPathDataSource类介绍
  • Docker绑定挂载使用手册
  • 数据结构系列-归并排序
  • 网络安全售前入门01——产品了解
  • [ JavaScript ] 数据结构与算法 —— 链表
  • codis proxy处理流程
  • CSS3 变换
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Effective Java 笔记(一)
  • es的写入过程
  • javascript 总结(常用工具类的封装)
  • Markdown 语法简单说明
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Python_网络编程
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Vue ES6 Jade Scss Webpack Gulp
  • windows下使用nginx调试简介
  • 将回调地狱按在地上摩擦的Promise
  • 前端之Sass/Scss实战笔记
  • 使用docker-compose进行多节点部署
  • 我的面试准备过程--容器(更新中)
  • 我建了一个叫Hello World的项目
  • 在Docker Swarm上部署Apache Storm:第1部分
  • ionic入门之数据绑定显示-1
  • Spring第一个helloWorld
  • 数据可视化之下发图实践
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​渐进式Web应用PWA的未来
  • # centos7下FFmpeg环境部署记录
  • #ifdef 的技巧用法
  • (3)(3.5) 遥测无线电区域条例
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (第一天)包装对象、作用域、创建对象
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (三)模仿学习-Action数据的模仿
  • (学习日记)2024.01.19
  • (转) ns2/nam与nam实现相关的文件
  • (转)ORM
  • (转)Scala的“=”符号简介
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)