ARM通用中断控制器GIC之中断处理状态机 Interrupt handling state machine

news2024/12/1 0:22:05

中断有四种状态:inactive,pending,active 和active and pending。而产生中断的方式有两种,一种是通过写pending寄存器,让中断进入pending状态,可以忽略是否真的有物理中断信号,让Distributor将该中断转发到对应CPU interface。

  • 对于SGI中断,可以通过写入GICD_SGIR寄存器和GICD_SPENDSGIRn寄存器来产生。
  • 对于外设中断,它可以通过硬件产生物理信号到GIC,也可以通过写入GICD_ISPENDRn寄存器来产生中断。
    此外,ARM GIC在CPU interface中,为每个所支持的中断都维护了一个状态机,下图为该状态机的示意图以及转换关系:
    Interrupt handling state machine
    当Distributor的中断转发功能以及CPU interface的中断信号发送功能使能,中断状态的转换如下:

A1和A2:转换/增加到pending状态

- 对于SGI中断,如果软件写入GICD_SGIR寄存器指定了目标处理器,或着目标寄存器的软件写入GICD_SPENDESGIRn寄存器的源处理器和中断ID等对应字段。
- 对于SPI和PPI中断,如果外设发出了中断信号,或者软件上写入了一个GICD_ISPENDR寄存器。

B1和B2:移除pending状态

- 对于SGI,会发生在对应目标处理器的软件写入寄存器GICD_CPENDSGIRn的对应bit
- 对于SPI和PPI,如果是电平敏感的中断,如果该中断的pending状态是由于输入的物理中断信号,当该信号被解除断言时,pending状态将会被移除。如果是边沿触发的中断,如果该中断是由于输入的物理边缘触发中断信号,或者是写入GICD_ISPENDRn寄存器造成的pending,如果可以通过写入GICD_ICPENDRn寄存器来解除pending状态。

C:从pending转到active

如果中断被使能,并且有足够的优先级,被CPU interface发送给处理器后,软件读取GICC_IAR寄存后,该中断将从pending状态转为active。

D:从pending状态转为active and pending:

	- 对于SGI中断,如果写入寄存器来设置SGI的pending状态和读取GICC_IAR寄存器几乎发生在同时,或者当有两个或者更多的相同中断ID的SGI中断从同一个源处理器发送到同一个目标处理器时,如果其中一个SGI走 C 转换方式,则其余的SGI中断就走D转换方式。
	- 对于PPI和SPI中断:如果当前中断被使能,软件读取GICC_IAR寄存器,这个读取动作将会添加active状态。此外,适用以下条件之一:-对于电平敏感中断,中断信号保持断言。通常是这样,因为在处理器在处理完中断之前,外围设备不会解除对中断的断言。对于一个边缘触发的中断,这种转换是否发生取决于GICC_IAR的读取的时间相对于检测中断的重新断言的时间。否则,GICC_IAR的读取将导致转换C,也可能是转换A2。

转换 E1和E2,移除中断状态

发生在软件通过写入r GICC_EOIR 和 GICC_DIR寄存器来使中断失活。

一种中断的持续时间取决于它被配置为电平敏感还是边沿敏感:

对于电平敏感,中断输入的上升沿会导致中断被pending,并且这个中断会被一直hold直到外设将这个中断信号拉低
对于边沿敏感,中断输入的上升沿会导致中断被pending,但是这个中断不会被hold

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何构建myquant量化策略?

对于如何构建myquant量化策略这个问题而言,就是获取量化股票接口的基础数据,然后有了基础数据,才能对数据进行加工处理,构建量化策略,进行量化分析,回测和回溯。myquant量化策略主要是基于python进行量化投…

案例实操 | 利用Lambda函数来进行特征工程,超方便的!!

特征工程对于我们在机器学习的建模当中扮演着至关重要的角色,要是这一环节做得好,模型的准确率以及性能就被大大地被提升,今天小编就通过Python当中的lambda函数来对数据集进行一次特征工程的操作,生成一些有用的有价值的特征出来…

nacos--基础--3.4--集成--spring--spring上下文中的一些关键的特性

nacos–基础–3.4–集成–spring–spring上下文中的一些关键的特性 1、spring上下文中的一些关键的特性 注解驱动依赖注入外部化配置事件驱动 2、注解驱动 2.1、 启用 Nacos EnableNacos 是一个模块驱动的注解EnableNacos 支持 Nacos Spring 的所有功能 服务发现&#xff1…

香港服务器托管带宽怎么选?

香港服务器托管时,带宽的选择非常重要,带宽用量的大小不同,最终的费用也就会不同。用户在香港托管服务器的时候,应该选择多大的带宽才合适呢?应该如何选择香港服务器带宽大小呢? 香港服务器托管带宽怎么选? 其实,大…

5G无线技术基础自学系列 | 无线电波传播模型

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线电波传播模型用于预测无线电波在各…

JAVA开发(JWTUtil工具类实现token源码赏析)

一、token解决问题的背景: 1、 单点登录, 2、分布式登录状态, 3、在信任期内 避免 重新输入用户名密码登录。 4、跨系统免登陆等。 5、一些接口的请求权限验证。 总结以上token最终都是为了解决在在分布式系统中信任期内 避免 重新输入用户名…

如何选择合适的统计学方法

一般来说,使用哪种统计方法,取决于我们的应用场景、我们的研究目的是什么。 这里面一个麻烦的地方在于,不管你使用哪种统计方法,似乎都可以得出一个’结果’或一个p值,但这个结果有没有意义就两说了。 在我看来&…

【WEB安全】Xstream最新反序列化poc执行报错问题

前言 最近有个需求,用Xstream反序列化打个内存马,从通用性来讲,肯定用1.4.17的洞去打应用范围最广。众所周知,Xstream官方会提供其漏洞的poc。在我实验之下,1.4.17的几个poc只要涉及到任意java代码执行的都会报错&…

VMware创建共享文件夹并实现文件传输(Windows主机,Ubuntu虚拟机)

文章目录创建共享文件夹安装/更新VMware tool挂载共享文件夹共享文件夹的实现更改配置项,实现自动挂载(推荐直接用这个)数据传输参考博客创建共享文件夹 1、开启虚拟机的共享文件夹配置 首先在虚拟机中打开设置,在选项中点击共享…

Java springboot+vue+MySQLJava大型CRM客户关系管理源码带手机端和小程序源码 Java客户全流程高效管理CRM系统源码

springbootvue MySQL数据库 1. 前端:Vue 2. 后端:Spring boot 3. 数据库:MySQL 源码已经亲测 1. 前端:Vue 2. 后端:Spring boot 3. 数据库:MySQL 小程序是用UNIAPP开发的。 后台登录账户&#xff1a…

(附源码)springboot智能服药提醒app 毕业设计 102151

基于springboot智能服药提醒app 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,智能服药提醒app程序被用户…

平均价格算法:TWAP vs. VWAP

时间加权平均价格 (TWAP) 和成交量加权平均价格 (VWAP) 算法应用不同的方法来计算资产价格,这是所有去中心化金融 (DeFi) 原语的组成部分。 在本文中,我们介绍了 TWAP 和 VWAP 算法之间的差异,解释了它们如何在区块链环境中为资产定价&#…

化学工程与装备杂志化学工程与装备杂志社化学工程与装备编辑部2022年第10期目录

科学研究与开发《化学工程与装备》投稿:cnqikantg126.com 槐木活性炭处理生活废水的研究 孔繁铸;高丽娟;赵开创;钱程; 1-3 基于Pumplinx的水泵机械密封温升仿真研究 赵雪飞;贾红杰;李雪峰;李雷;王景新;张晓辉; 4-728 全固态石墨烯-Ag/AgCl海洋电场探测电…

功率放大器的输入阻抗和输出阻抗是交流还是直流电阻

功率放大器的输入阻抗和输出阻抗一般是指交流电阻。交流电阻指一些伏安特性曲线的斜率。所以放大器输入阻抗和输出阻抗都是理论分析计算为主,而不使用万用表测量其大小。 输入阻抗一般是指电路输入端的等效阻抗,输入端加上一个电压源U,测量输…

WRF模式安装+详细运行教程

安装教程在安装之前,首先需要去查看自己的 Linux 系统(虚拟机或者服 务器)上的编译环境,也就是确定自己是否安装编译器或安装了哪种编 译器。(因为安装过程需要选择编译器)常用的编译器分为三种系列&#x…

Typora基础使用技巧

Typora Tutorial 1.数学符号及公式 (1).常用数学符号 数学符号没什么特别的语法,这里顺道总结以下方便使用: + - ≠ ≈ / > < ≯ ≮ ≤ ≥ ∵ ∴ ∽ ≌, √, Φ Χ Ψ Ωα…

antd-protable的分页逻辑封装

一、前言 这次的分页基于pro-table进行封装。 前端分页看似是个小功能,但里面隐藏的逻辑还是非常多的,比如我们业务中需要的分页器除了能进行正常的页码切换等操作外,还需要如下的功能: 次页删除最后一条数据需要跳转至第一页&…

计算机研究生就业方向之去大厂做大数据

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

JUC并发编程第十篇,谈谈ThreadLocal原理与内存泄露的那些事儿

JUC并发编程第十篇,谈谈ThreadLocal原理与内存泄露的那些事儿一、ThreadLocal是什么?能干嘛?二、ThreadLocal 使用场景举例三、阿里开发规范中 ThreadLocal 的使用(SimpleDateFormat)四、ThreadLocal 底层源码架构分析…

一个帖子教你实现 商品下单、获取商品订单信息、商品送货时发送通知 一体化功能

1、介绍 总览 通过无缝数据库结构,在保证数据的可用性、一致性、安全性外,云数据库能够实现数据在客户端和云端之间的无缝同步。云函数提供serverless环境,AppGallery Connect的其他服务为云函数提供事件源。监听事件源可以触发相关函数。 …