首页 > 其他分享 >Cortex-A7的GIC(通用中断控制器):边沿触发和电平触发中断处理流程

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

时间:2024-09-17 12:50:12浏览次数:9  
标签:触发 GICC 状态 中断 电平 激活状态 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需要使用软件方式实现嵌套中断,有些实现可能在执行中断服务函数前已经使能了自己的中断),则可以配置成电平触发。

标签:触发,GICC,状态,中断,电平,激活状态,GIC
From: https://blog.csdn.net/kevin1499/article/details/141531328

相关文章

  • Cortex-A7:__disable_irq和GIC_DisableIRQ、__enable_irq和GIC_EnableIRQ的区别(2)——AP
    0相关资料ARM®GenericInterruptControllerArchitectureversion2.0.pdf1API测试对比1.1__disable_irq同时GIC_DisableIRQ验证程序如下:voidgic_test(void){__disable_irq();GIC_DisableIRQ(UART4_IRQn);}测试结果:所有中断都无法响应。1.2_......
  • 3.4.1.2 IPIPE对Linux中断号的改造
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客3.4.1.2IPIPE对Linux中断号的改造    在IPIPEdomain中,IPIPE_NR_IRQS代表中断总数量,在代码中经常用到,最具代表的就是下图中定义structipipe_irqdescirqs[IPIPE_NR_IRQS].        先列一......
  • 蓝桥杯【物联网】零基础到国奖之路:六. 中断
    蓝桥杯【物联网】零基础到国奖之路:六.中断第一节中断理论1,中断的作用2,中断和异常3,NVIC中断控制器4,中断的分类5,中断管理机制第二节GPIO中断1,CubeMX配置2,添加中断代码第一节中断理论举个例子:工作时电话响了,这时你会把手里的工作停下来,然后接电话,电话里的人安排你......
  • 20240913_155935 mysql 触发器
    建表需求创建一个日志表记录teacher表的操作日志情况增删改的相关信息要保存起来方便定期查看明确字段表名:log_info列信息idactioninfotime创建表格CREATETABLElog_info( idINTPRIMARYKEYAUTO_INCREMENT, action_nameVARCHAR(11), infoVARCHAR(111), act_......
  • USB总线-Linux内核USB3.0设备控制器中断处理程序分析(九)
    1.概述USB设备枚举、请求处理、数据交互都涉及USB设备控制器中断。当有事件发生时,USB设备控制器首先将事件信息通过DMA写入到事件缓冲区中,然后向CPU发出中断,随后CPU调用中断处理函数开始处理中断事件。2.事件dwc3USB设备控制器事件使用dwc3_event数据结构描述,由4个字节组成。......
  • STM32 -中断
    并发(Concurrency)并发是指同时处理多个任务的能力,但并不意味着这些任务实际上是在同一时刻物理上同时运行的。在单处理器或多处理器系统中,并发通过时间片轮转(time-slicing)等技术实现,这些技术使得操作系统可以在多个任务之间快速切换,从而在宏观上给用户造成所有任务都在同时运行......
  • jenkins远程启动任务--启用远程触发构建
    一:前言在执行Jenkins的项目构建的时候,一般都是通过web管理界面中的”构建”来执行项目构建操作,但是除此之外我们还可以通过项目配置中的”构建触发器”来触发构建操作,其中”构建触发器”有一种方式是通过配置令牌远程触发项目构建。 二:设置用户token打开当前登录用户设置页面......
  • jackson 原生反序列化触发 getter 方法
    jackson原生反序列化触发getter方法jackson的POJONode方法可以任意调用getterjackson序列化会任意调用getter分析jackson序列化会调用任意getter方法,jackson反序列化也会任意调用getter,这两个都不需要多说什么了,在前面的jackson反序列化中的TemplatesImpl......
  • UNO 已知问题 在后台线程触发 SKXamlCanvas 的 Invalidate 且在 PaintSurface 事件抛
    本文记录一个UNO已知问题,在UNO里面可以利用SKXamlCanvas对接Skia绘制到应用里面。如果此时在后台线程里面调用SKXamlCanvas的Invalidate触发界面的重新刷新,但在具体的执行绘制PaintSurface事件里面对外抛出异常,将会导致应用炸掉背景:我准备在UNO里面将Microsoft......
  • Zabbix自定义监控项与触发器
            当我们需要获取某台主机上的数据时,直接利用zabbix提供的模板可以很方便的获得需要的数据,但是有些特别的数据,利用这些现有的模板或监控项是无法实现的,例如网站状态信息的监控、mysql数据库主从状态等信息。这是就需要自己定义键值和监控项,以满足企业对检测数......