Cortex-A7的GIC(通用中断控制器):边沿触发和电平触发中断处理流程

0 资料

ARM® Generic Interrupt Controller Architecture version 2.0 Architecture Specification

1 边沿触发和电平触发中断处理流程

1.0 边沿触发和电平触发的区别

边沿触发(Edge-triggered)

This is an interrupt that is asserted on detection of a rising edge of
an interrupt signal and then, regardless of the state of the signal,
remains asserted until it is cleared by the conditions defined by this
specification.

当检测到中断上升沿信号时会保持asserted状态(挂起状态),无论此后该中断信号如何变化都会保持asserted状态(挂起状态),直到按照GIC指定的操作将中断清除。
电平触发(Level-sensitive)

This is an interrupt that is asserted whenever the interrupt signal level is active, and deasserted whenever the level is not active.

当中断信号处于有效状态时中断处于asserted状态(挂起状态),当该信号处于无效状态(例如清空中断标志)则该中断会变为未激活状态。

asserted状态参考如下:
在这里插入图片描述

1.1 边沿触发中断处理流程

边沿触发的中断处理状态机转换图如下红色路径所示:
在这里插入图片描述
对应的处理示意图如下:
在这里插入图片描述
处理步骤如下:
(1)中断源发出中断信号,上升沿触发使中断从未激活状态转为挂起状态
(2)进入ISR(中断服务函数)读取GICC_IAR(中断确认寄存器)使中断从挂起状态转为激活状态,SPI电平转为低电平,.接下来便执行中断相对应的回调函数
(3)回调函数执行完毕后写GICC_EOIR(中断结束寄存器)进入未激活状态。注意:在GICv2 中只要对GICC_EOIR进行了有效写入就会自动将对应的中断停用(不再需要设置GICC_DIR中断停用寄存器)。

1.2 电平触发中断处理流程

电平触发的中断处理状态机转换图如下红色路径所示:
在这里插入图片描述
对应的处理示意图如下:
在这里插入图片描述
处理步骤如下:
(1)中断源发出高电平信号,使中断从未激活状态转为挂起状态
(2)进入ISR(中断服务函数)读取GICC_IAR(中断确认寄存器)使中断从挂起状态转为激活及挂起状态(此时中断信号依然为高),接下来便执行中断相对应的回调函数
(3)回调函数执行完毕后写GICC_EOIR(中断结束寄存器)进入未激活状态。注意:在GICv2 中只要对GICC_EOIR进行了有效写入就会自动将对应的中断停用(不再需要设置GICC_DIR中断停用寄存器)。

2 总结

(1)GIC的边沿触发和电平触发中断的处理流程基本一致,不同的是电平触发中断只有在进入中断未激活状态时才会解除挂起,其余状态下均是挂起状态(电平也一直为有效状态)。
(2)为了保证中断能够有效通知到GIC,建议将中断设置为边沿触发。为了保证每次中断都能够相对无误地通知到GIC,也可以将设置为边沿触发。
(3)如果不希望出现同一个中断嵌套自己(ARMv7需要使用软件方式实现嵌套中断,有些实现可能在执行中断服务函数前已经使能了自己的中断),则可以配置成电平触发。

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

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

相关文章

一分钟掌握 Excel VBA 技巧,轻松批量生成工资条,提高工作效率!

可能大家忽视了一点,Excel是我们日常办公中使用最多的工具,所以,学好Excel并加以运用,一定能提升你的工作效率,比如Excel VBA可以用代码实现自动化办公,下面举一个Excel VBA批量生成工资条的办公小案例。 …

关于 Visual Studio Code 如何插入自定义快捷方式

第一步:打开控制面板,也可以使用快捷键ctrlshiftp 然后点击命令面板 第二步:输入snippets搜索,选择配置用户代码片段 第三步:选择新建全局代码片段文件,然后输入文件名,这里我因为创建的是vue的…

鸿蒙媒体开发系列03——AVPlayer和AVRecorder概述

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。 1、概述 本期我们初步讨论音视频资源的播放与录制相关能力 —— AVPlayer & AV…

数字经济指数合集

数字经济指数合集 随着信息技术的快速发展,数字经济已成为推动全球经济增长的重要力量。在中国,数字经济的发展尤为迅速,不仅促进了产业结构优化升级,还提升了社会治理效能。为了更好地衡量各地数字经济的发展水平,一…

工厂模式,策略模式,代理模式,单例模式在项目中的应用

项目背景: 首先这篇文章是总结了OJ项目和AI答题平台项目(和一点点的聚合搜索项目)中设计模式的文章 在项目中也用了很多次的设计模式,我感觉起来,这些设计模式的作用就是提高项目的扩展性和降低耦合性 工厂模式&…

视频语音转成文字用什么工具?这4款就很不错!

如今视频语音已经可以帮助我们在短时间内或去很多信息,在办公,学习教育,影视娱乐方面可以帮助我们高效的进行记录。当我们需要文字化的整理时,就会需要转换的工具。这片文章遍要罗列4款我在办公室用到的几款比较高效准确的视频语音…

原来石岩也有羊台山登山口

带娃探寻家附近的好玩的,娃问:石岩湿地公园的水从哪里来的?我说可能是羊台山吧,我们可以随着河流去找下啊。其实我内心也是没底的,我去的羊台山都是从龙华的羊台山东地铁下车去的。 骑行的好处就是可以松弛感看风景&a…

犬类检测系统源码分享

犬类检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

C++ | (二)类与对象(上)

燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的假期为什么一去不复返呢? 目录 一、初识类 1.1 类的定义 1.2 C中…

在petalinux工程里添加iperf

在petalinux工程里添加iperf 1,首先确定iperf包在哪里 xxx/components/yocto/layer/ meta-openembedded/meta-oe/recipes-benchmark/iperf3/ 2,然后就是往menuconfig中加: xxx/project-spec/meta-user/conf/user-rootfsconfig文件中 添加: …

maxcompute使用篇

文章目录 maxcompute使用篇1.mongoDB与maxcompute 进行数据同步1.1 基本类型的数据1.2部分复杂类型的数据 2.maxcompute中复杂数据类型解析2.1 get_json_object2.2 json_tuple2.3 处理json几种失效的情况:2.4 STR_TO_MAP、MAP_KEYS2.5 regexp_replace2.6 FROM_JSON2.7 nvl2.8 t…

高级I/O知识分享【epoll || Reactor ET,LT模式】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,接口 epo…

ElasticSearch-2-核心语法集群高可用实战-Week2

ES批量操作 1.批量获取文档数据 这里多个文档是指,批量操作多个文档,搜索查询文档将在之后的章节讲解 批量获取文档数据是通过_mget的API来实现的 (1)在URL中不指定index和type 请求方式:GET 请求地址:_mget 功能说明 &#…

12 Java文件处理之写入、读取:IO流(中):高级流(缓冲流、转换流、序列化流和反序列化流、打印流)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、缓冲流1 字节缓冲流(1)BufferedInputStream:字节缓冲输入流构造方法---- BufferedInputStream(InputStream in):创建一个使用默认缓冲区大小的缓冲输入流。---- BufferedInputStream(In…

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例 前言问题描述控制方程及数值方法浅水方程及其数值计算方法边界条件的实现 代码框架与关键代码模拟结果 更新于2024年9月17日 前言 这篇博客算是学习浅水方程,并利用MATLAB复刻Liang (2004)1中溃坝流算例的一个记录…

特殊文本文件日志技术重点笔记。

特殊文本文件,日志技术(黑马 一套入门 3h) 特殊文件 日志技术 把程序运行的信息,记录到文件中,方便程序员定位bug,并了解程序的执行情况等。 1.为什么要用这些特殊文件 1.1存储单个用户的: 用户名,密码 1.2存储多个用户的&…

数据清洗-缺失值填充-XGboost算法填充

目录 一、安装所需的python包二、采用XGboost算法进行缺失值填充2.1可直接运行代码2.2以某个缺失值数据进行实战2.2.1 代码运行过程截屏:2.2.2 填充后的数据截屏: 三、XGBoost算法原理介绍3.1 XGBoost 的定义3.2 XGBoost 的核心思想3.3 XGBoost 的特点3.…

2024 批量下载知乎回答/文章/想法/专栏/视频/收藏夹,导出 excel 和 pdf

之前分享过文章 2024批量下载知乎回答文章想法专栏收藏夹,公众号文章内容图片封面视频音频,微博内容图片视频评论转发数据,导出excel和pdf ,今天再整理分享下知乎知乎回答/文章/想法/专栏/视频/收藏夹下载。 苏生不惑 这个账号已…

Jenkins基于tag的构建

文章目录 Jenkins参数化构建设置设置gitlab tag在工程中维护构建的版本按指定tag的版本启动服务 Jenkins参数化构建设置 选择参数化构建: 在gradle构建之前,增加执行shell的步骤: 把新增的shell框挪到gradle构建之前, 最后保存 …

驱动器磁盘未格式化难题:深度剖析与恢复实践

驱动器磁盘未格式化的深层探索 在数据存储与管理的日常中,驱动器作为我们数字生活的基石,其稳定性直接关系到数据的安全与可用性。然而,当屏幕上赫然出现“驱动器中的磁盘未被格式化”的提示时,许多用户往往感到手足无措&#xf…