0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GIC是什么意思 GIC硬件原理

麦辣鸡腿堡 来源:LoyenWang 作者:LoyenWang 2023-09-28 14:58 次阅读

GIC硬件原理

  • ARM公司提供了一个通用的中断控制器GIC(Generic Interrupt Controller)GIC的版本包括V1 ~ V4,由于本人使用的SoC中的中断控制器是V2版本,本文将围绕GIC-V2来展开介绍;

来一张功能版的框图:

图片

  • GIC-V2从功能上说,除了常用的中断使能、中断屏蔽、优先级管理等功能外,还支持安全扩展、虚拟化等;
  • GIC-V2从组成上说,主要分为DistributorCPU Interface两个模块,Distributor主要负责中断源的管理,包括优先级的处理,屏蔽、抢占等,并将最高优先级的中断分发给CPU InterfaceCPU Interface主要用于连接处理器,与处理器进行交互;
  • Virtual DistributorVirtual CPU Interface都与虚拟化相关,本文不深入分析;

再来一张细节图看看DistributorCPU Interface的功能:

图片

  • GIC-V2支持三种类型的中断:
    1. SGI(software-generated interrupts):软件产生的中断,主要用于核间交互,内核中的IPI:inter-processor interrupts就是基于SGI,中断号ID0 - ID15用于SGI
    2. PPI(Private Peripheral Interrupt):私有外设中断,每个CPU都有自己的私有中断,典型的应用有local timer,中断号ID16 - ID31用于PPI
    3. SPI(Shared Peripheral Interrupt):共享外设中断,中断产生后,可以分发到某一个CPU上,中断号ID32 - ID1019用于SPIID1020 - ID1023保留用于特殊用途;
  • Distributor功能:
    1. 全局开关控制Distributor分发到CPU Interface
    2. 打开或关闭每个中断;
    3. 设置每个中断的优先级;
    4. 设置每个中断将路由的CPU列表;
    5. 设置每个外设中断的触发方式:电平触发、边缘触发;
    6. 设置每个中断的Group:Group0或Group1,其中Group0用于安全中断,支持FIQ和IRQ,Group1用于非安全中断,只支持IRQ;
    7. SGI中断分发到目标CPU上;
    8. 每个中断的状态可见;
    9. 提供软件机制来设置和清除外设中断的pending状态;
  • CPU Interface功能:
    1. 使能中断请求信号到CPU上;
    2. 中断的确认;
    3. 标识中断处理的完成;
    4. 为处理器设置中断优先级掩码;
    5. 设置处理器的中断抢占策略;
    6. 确定处理器的最高优先级pending中断;

中断处理的状态机如下图:

图片

  • Inactive:无中断状态;
  • Pending:硬件或软件触发了中断,但尚未传递到目标CPU,在电平触发模式下,产生中断的同时保持pending状态;
  • Active:发生了中断并将其传递给目标CPU,并且目标CPU可以处理该中断;
  • Active and pending:发生了中断并将其传递给目标CPU,同时发生了相同的中断并且该中断正在等待处理;

GIC检测中断流程如下:

  1. GIC捕获中断信号,中断信号assert,标记为pending状态;
  2. Distributor确定好目标CPU后,将中断信号发送到目标CPU上,同时,对于每个CPU,Distributor会从pending信号中选择最高优先级中断发送至CPU Interface
  3. CPU Interface来决定是否将中断信号发送至目标CPU;
  4. CPU完成中断处理后,发送一个完成信号EOI(End of Interrupt)给GIC;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288492
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • 子系统
    +关注

    关注

    0

    文章

    100

    浏览量

    12265
  • gic
    gic
    +关注

    关注

    0

    文章

    14

    浏览量

    6216
  • 控制器
    +关注

    关注

    0

    文章

    20

    浏览量

    3274
收藏 人收藏

    评论

    相关推荐

    英特尔Altera系列cyclone V HPS GIC

    大家好,又到了每日学习的时间了,今天我们来聊一聊英特尔 Altera系列 cyclone V HPS GIC. 一、CYCLONE V GIC配置 Cyclone v使用双核ARM CORTEX
    的头像 发表于 05-29 10:06 9138次阅读
    英特尔Altera系列cyclone V HPS <b class='flag-5'>GIC</b>

    ARM之中断GIC分析

      1.“站的高尿的远”  GIC为中断控制器,不要和ARM core的中断搞混了,这些中断都是连接到ARM core的IRQ或者FIQ上的。  要了解arm中断系统,GIC绝对不容错过,好先付
    发表于 11-26 13:50

    GIC硬件原理是什么?

    GIC硬件原理是什么?
    发表于 02-07 06:35

    ARM GIC(一)之ARM soc中断的处理介绍

    的桥接器件,就是arm公司推出大名鼎鼎的gic,general interrupt controller。gic其实是一个架构,版本历经了gicv1(已弃用),gicv2,gicv3,gicv4。对于
    发表于 04-06 10:12

    ARM GIC(二)之中断术语的定义

    ARM在GIC中,对于中断,定义了如下的一些术语。一、中断状态对于每一个中断而言,有以下4个状态:◾inactive:中断处于无效状态◾pending:中断处于有效状态,但是cpu没有响应该中断
    发表于 04-06 10:15

    GIC ITS的ITS tables和Command Queue访问简析

    ACE-Lite转换为了AXI interface,因而这个系统设计不能实现GIC ITS和CPU的硬件一致性。在这样的系统上运行Linux GICv3 driver可能会出现一致性问题:因为
    发表于 12-20 14:35

    基于GIC的物联网的应用方案

    本文档内容介绍了基于GIC的物联网的应用方案,供参阅。
    发表于 09-18 15:46 0次下载
    基于<b class='flag-5'>GIC</b>的物联网的应用方案

    小电阻器对治理电网GIC的效果分析

    地磁感应电流(geomagnetically induced currents,GIC)引起变压器半波饱和对电力系统的安全运行产生不利影响,甚至引发大面积停电事故。为了有效治理GIC对大规模电力系统
    发表于 01-04 17:03 7次下载
    小电阻器对治理电网<b class='flag-5'>GIC</b>的效果分析

    应用K值算法的甘肃电网GIC-Q扰动计算

    的安全运行。以甘肃750 kV电网和330 kV电网GIC的计算数据为基础,基于变压器GIC无功(GIC-Q)损耗系数K值算法,计算了750 kV和330 kV变压器的GIC无功损耗增
    发表于 01-31 14:57 3次下载

    扒一扒GIC-600的相关知识

    为了适应大规模的SoC设计,GIC-600被设计成分布式IP。所谓分布式,GIC-600由几种组件构成,每个组件可以跟其它相关模块在物理设计上摆放在一起,并与其拥有共同的电源域
    发表于 02-06 11:36 2163次阅读

    GIC驱动的执行流程是什么

    驱动流程分析 GIC驱动的执行流程如下图所示: 首先需要了解一下链接脚本 vmlinux.lds ,脚本中定义了一个 __irqchip_of_table 段,该段用于存放中断控制器信息,用于最终
    的头像 发表于 09-28 15:09 236次阅读
    <b class='flag-5'>GIC</b>驱动的执行流程是什么

    Linux GIC驱动数据结构分析

    数据结构分析 先来张图: GIC驱动中,使用 struct gic_chip_data 结构体来描述GIC控制器的信息,整个驱动都是围绕着该结构体的初始化,驱动中将函数指针都初始化好,实际的工作
    的头像 发表于 09-28 15:18 322次阅读
    Linux <b class='flag-5'>GIC</b>驱动数据结构分析

    GIC-600的组件是如何连接的

    为了适应大规模的SoC设计,GIC-600被设计成分布式IP。 所谓分布式,GIC-600由几种组件构成,每个组件可以跟其它相关模块在物理设计上摆放在一起,并与其拥有共同的电源域;组件之间通过片上网
    的头像 发表于 11-07 17:19 284次阅读
    <b class='flag-5'>GIC</b>-600的组件是如何连接的

    GIC-600的内部结构组件

    接下来看看每个组件。 • 首先是distributor,一个SoC只有一个。 •它的组件只能与distributor通信。所以,可以看出,distributor是GIC-600中的核心,其作用是收集
    的头像 发表于 11-07 17:29 274次阅读
    <b class='flag-5'>GIC</b>-600的内部结构组件

    gic和ARM Core的连接

    • ◾nVIRQ: 虚拟普通中断 • ◾nVFIQ: 虚拟快速中断 (2)gicv3和ARM Core的连接 gicv3 AXI-stream协议 • ◾gic stream协议,是基于AXI-stream协议
    的头像 发表于 11-07 18:07 306次阅读
    <b class='flag-5'>gic</b>和ARM Core的连接