Cortex-R52 GIC:Generic Interrupt Controller

news2024/9/21 14:43:49

ARM Cortex-R52 GIC:Generic Interrupt Controller

1.关于GIC

GIC是支持和管理cluster系统中断的资源。它支持中断优先级、中断路由到核心或输出端口、中断抢占和中断虚拟化。
Cortex-R52处理器实现了一个内部GIC分配器用于处理器,每个核心还有一个GIC CPU接口。每个核包含一个GIC重分配器。
GIC 是一种集成电路,用于管理和处理各种类型的中断请求。Cortex-R52 处理器实现的 GIC 采用了 ARM 公司推出的 GIC 架构,具有高度的灵活性和可扩展性,并支持多核处理器系统。

2.GIC 功能描述

GIC分配器接收外设(SPI)和核心(PPI)的有线中断。 GIC分配器仲裁路由到每个核心的中断以确定最高优先级挂起中断(HPPI),然后将其传递给GIC CPU界面。 来自核心的激活,去激活和软件生成的中断通过GIC CPU接口传递以更新GIC分配器的状态。 GIC分配器包含内存映射的配置和状态寄存器。 GIC分配器包含每个中断目标一个再分配器。 再分配器主要负责包含PPI和SGI的寄存器。

GIC CPU接口包括处理物理中断的部分和处理虚拟中断的部分。 GIC CPU接口包含可作为系统寄存器访问的配置和状态寄存器。 中断被配置为Group 0中断或Group 1中断。 Group 0中断使用FIQ发出信号,而Group 1中断使用IRQ发出信号。

GIC CPU接口处理物理中断的部分从GIC分配器接收HPPI。 它执行抢占计算并向核心发出FIQ或IRQ信号。 来自核心的激活,去激活和软件生成的中断通过CPU接口传回到分配器。 GIC CPU接口处理虚拟中断的部分最多可以包含四个虚拟中断,其中优先级最高的用于向核心生成虚拟FIQ或虚拟IRQ。

2.1 中断源

2.1.1 Private Peripheral Interrupts (PPIs)

PPI(Private Peripheral Interrupts,私有外设中断)是由特定于单个核心的外设产生的有线中断。每个核心具有16个PPI,INTID16-INTID31。输出接口不支持PPI。没有被分配使用的PPI将作为Cortex-R52处理器顶层的额外中断输入提供。配置未分配的PPI可以选择上升沿触发或低电平触发。
那什么中断会有这种特性呢?
比如通用定时器中断啊,温度传感器中断之类的。

INTID 	PPI分配
30 	非安全物理计时器中断
27 	虚拟定时器中断
26 	Hypervisor定时器中断
25 	虚拟CPU接口维护中断
24 	跨触发器接口中断
23 	性能监视器计数器溢出中断
22 	调试通信通道中断

2.1.2 Shared Peripheral Interrupts (SPIs)

SPI是一种由特定于单个核心的外设产生的有线中断,可以被通过软件配置路由到一个特定的核。每个Cortex-R52处理器都具有960个可配置的SPI,这些SPI作为处理器的顶层输入信号提供给其他组件使用。

那么如何确定哪些SPI被分配给哪个核心?
在每个核心中,通过低延迟硬件将32个唯一的SPI路由到该核心,而其他所有核心则使用常规延迟硬件将同样的SPI路由到它们。对于每个核心而言,INTID(32x+32)到INTID(32x+63)的SPI被视为低延迟(其中x = 0、1、2或3),即它们具有更快的响应时间和更高的优先级,可以更快地从硬件设备接收并处理SPI中断请求。

最后,每个SPI都可以配置为上升沿触发或高电平触发,并且通过编程相应的SPI路由信息来实现。SPI[0]对应于INTID32,而SPI[30]对应于INTID991。

2.1.3 Software Generated Interrupts (SGIs)

指由 CPU 直接写对应的寄存器触发中断,因而这种中断不是由硬件产生的,而是由软件主动产生的。这种特殊的中断主要用于核间通信。当处理器需要中断应用程序执行时,可以使用SGI生成中断信号。。SGI的数量有限,每个CPU核只能生成16个SGI,每个SGI都有一个独特的编号(INTID0-INTID15)。SGI是边沿触发中断,在生成SGI时,SGI信号会从低电平跳变到高电平,然后维持高电平状态,直到中断服务程序将其清除为止。这些属性使SGI非常适合进行异步通信和同步协议的实现,并可用于更好地支持多处理器系统。

SGI (Software Generated Interrupt) 和 PPI (Private Peripheral Interrupt) 都是 ARM 处理器中的中断信号。每个 CPU 核都有自己的 SGI 或 PPI 中断,不同核的同种类型中断共享相同的编号。因此,它们都采用了 “banked” 形式的中断源,即每个 CPU 核都可以接收到来自同一种类型中断的信号,但是在处理中断时会根据中断编号进行区分和处理。其中,SGI 是由软件触发的中断,用于处理特定的事件或情况。PPI 则是专门为外围设备设计的中断,用于处理与外设相关的事件或情况。这些中断信号都有各自的优先级,并按照优先级高低被处理。这种中断机制可以使系统在出现多个异步事件时能够快速响应并作出正确的处理。

2.2可选的导出接口

GIC Distributor提供了一个可选的导出接口,允许将外部设备作为中断目标,与核心相同。以下图示显示了从GIC Distributor到导出接口的HPPI以及来自导出接口的中断激活、去激活和SGI。导出接口的操作与GIC CPU接口相同,唯一不同之处在于WAKE_INFO仅适用于CPU核。
导出接口的目标数由核数和GIC外部设备数确定。要将SPI路由到导出接口,必须使用相应的GICD_IROUTERn寄存器配置导出接口的目标数。这些SPI必须使用GICD寄存器按照标准SPI配置进行优先级、群组和边缘或电平触发类型的配置。

启用这些SPI后,对应的中断组或组将被启用,并且导出接口的ProcessorSleep位为0。GIC Distributor通过导出接口将HPPI呈现给外部设备。通常情况下,外部设备会通过激活然后去激活SPI来响应。对于边沿触发的SPI,可以同时激活和去激活中断。对于电平敏感的SPI,在激活后,外部设备执行某些操作以引起相应的中断信号去除。然后外部设备执行去激活操作。外部设备还可以通过向GIC Distributor发送消息向核心传递SGI。不支持将外部设备连接到导出接口的PPI。

GIC Distributor不提供导出接口的内存映射总线接口,也就是说,其中一个核心负责代表外部设备配置GIC Distributor。
在这里插入图片描述

对中断源的划分是从 GIC 输入的角度进行的。GIC(Generic Interrupt Controller)是一种可编程中断控制器,它具有多个中断输入,可以使用寄存器对这些输入进行编程,以确定它们的优先级、屏蔽状态和触发方式等。在 GIC 输出到达CPU之后,只有 IRQ 和 FIQ 两种中断类型。IRQ 是标准的中断请求,在处理器执行当前指令之后响应;而 FIQ 是快速中断请求,在处理器正在执行当前指令时立即响应。两者的区别在于 FIQ 中断会优先于 IRQ 中断被响应,因此 FIQ 中断用于实时性要求比较高的场合。

3.GIC编程模型

Hypervisor Control System Registers (ICH),CPU interface Registers (ICC) 和 Virtual CPU interface Registers (ICV) 描述了 GIC CPU 接口的系统寄存器。

4.总结

GIC 是一种集成电路,用于管理和处理各种类型的中断请求。Cortex-R52 处理器实现的 GIC 采用了 ARM 公司推出的 GIC 架构,具有高度的灵活性和可扩展性,并支持多核处理器系统。

Cortex-R52 的 GIC 实现包括两个主要组件:Distributor 和 CPU Interface。Distributor 负责中断分发和路由,而 CPU Interface 则用于处理和响应中断。

Distributor 包括 GICD 寄存器和 GICR 寄存器两部分。GICD 寄存器用于配置和控制分发器,包括中断使能、优先级设置等功能。GICR 寄存器则用于控制中断路由和中断亲和力等。

CPU Interface 包括 ICH、ICC 和 ICV 寄存器三部分。ICH 寄存器用于控制 Hypervisor 模式下的中断,ICC 寄存器用于控制中断信号的分配和优先级等级,ICV 寄存器用于虚拟化环境下的中断控制。

这些寄存器可以通过内存映射的方式进行访问。使用 GIC 工作可以提高系统的中断响应效率和可靠性,保证系统的稳定性和可靠性。

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

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

相关文章

FreeRTOS 信号量(二)

文章目录 一、计数型信号量1. 计数型信号量简介2. 创建计数型信号量①函数 xSemaphoreCreateCounting()②函数 xSemaphoreCreateCountingStatic() 3. 计数型信号量创建过程分析4. 释放和获取计数信号量 二、计数型信号量操作实验 一、计数型信号量 1. 计数型信号量简介 有些资…

C语言从入门到精通第13天(函数的调用)

函数的调用 无参函数的调用有参函数的调用函数的嵌套调用递归函数的调用函数的声明 函数在定义完以后,如果不被调用时不会被执行到的;在程序中main函数是主函数,是会被自动调用,C程序有且只有一个main函数。 无参函数的调用 调用…

C/C++程序添加ico图标详解

制作Ico图标文件 将图片素材进行编辑,可以截取成正方形,然后以通过在线转换图标工具转换成 ico 格式的图标文件 将ico图标文件放在之前编写好的 startprintservices.cpp 文件目录中 创建资源文件 接着我们创建一个文件命名为 ico.rc 的文件&#xff0…

vue3快速上手学习笔记,还不快来看看?

Vue3快速上手 1.Vue3简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址:https://github.com/vuejs/vue-next/release…

react-antd-procomponents组件库 ProTable表格实现跨页多选。

table表格多选时所需要的api 1.onSelect - 单行选择(用户手动选择/取消选择某行的回调) 2.onSelectMultiple - 多行选择(用户使用键盘 shift 选择多行的回调) 3.onSelectAll - 全选全不选(用户手动选择/取消选择所有行的回调) 4.onChange - 每次选择行都…

高可用keepalived + Nginx 负载均衡器

准备操作: [rootlocalhost ~]# systemctl stop firewalld # 或 systemctl disable --now firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# cd /etc/yum.repos.d [rootlocalhost ~]# mv repo.bak/* ./ [rootlocalhost ~]# yum -y install epel-rele…

Linux中的YUM源仓库和NFS文件共享服务(うたかたの夢)

YUM仓库源的介绍和相关信息 简介 yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。 yum由仓库和客户端组成,也就是整个yum由两部分组成&#xff0…

Python爬虫基础之三

Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、Beautiful Soup库的使用、xpath和正则表达式的使用等。此外,还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。 上一篇文章讲解了有关条件判断语句、循环语句、元组、字典等相…

排序 - 插入排序(Insertion Sort)

文章目录 插入排序介绍插入排序实现插入排序的时间复杂度和稳定性插入排序时间复杂度插入排序稳定性 代码实现核心&总结 每日一道算法,提高脑力。第三天,插入排序。 插入排序介绍 直接插入排序(Straight Insertion Sort)的基本思想是: 把n个待排序…

浅谈个人对“孔乙己的长衫“的感受

名人说:往者不可谏,来者犹可追。——《论语微子篇》 创作者:Code_流苏(CSDN) ★温馨提示:以下仅代表个人观点,不代表其它任何人看法。 目录 〇、缘由一、社会对于学历和职业之间的关系认知是怎样的?二、学…

android studio AlertDialog弹出对话框

1.定义弹出的对话框的按钮和显示结果的文本框 <Buttonandroid:id"id/btn7"android:layout_width"match_parent"android:layout_height"wrap_content"android:background"drawable/btn_nine_selector"android:text"弹出对话提醒…

ROS学习第三十五节——URDF集成Gazebo实操

https://download.csdn.net/download/qq_45685327/87719249 1.编写封装惯性矩阵算法的 xacro 文件 head.xacro <robot name"base" xmlns:xacro"http://wiki.ros.org/xacro"><!-- Macro for inertia matrix --><xacro:macro name"sp…

微软杀疯了,谷歌蒸发1000亿市值作陪,中文编程和它却打起翻身仗

微软VS谷歌&#xff0c;究竟谁是最后赢家&#xff1f; 当微软宣布收购OpenAI开发的ChatGPT的决定一出&#xff0c;Google深感威胁&#xff0c;开发出Gmail的早期员工甚至大胆预测&#xff0c;Google离完全毁灭只剩下一到两年&#xff01; 好歹也在互联网之战中屹立多年&#…

密码学|AES加密算法|学习记录

AES简介 AES加密是分组加密的一种 明文长度为固定的128位 密钥可长度为128&#xff0c;192&#xff0c;256位 128bit16字节&#xff0c;在AES中我们将数据用4x4字节的矩阵表示。&#xff08;注排列顺序为先从上到下再从左到右&#xff09; AES的一般步骤 对于上图最终轮区…

ChatGPT生成式算法及发展历程

引言 GPT&#xff08;Generative Pre-Trained Transformer&#xff09;系列是OpenAI开发的一系列以Transformer[2]为基础的生成式预训练模型&#xff0c;这个系列目前包括文本预训练模型GPT-1[3]&#xff0c;GPT-2[4]&#xff0c;GPT-3[5]&#xff0c;InstructGPT[7]、ChatGPT…

项目范围控制:如何控制项目范围的变化?

一个成功的项目需要在进度、成本和质量之间取得平衡。控制项目交付范围是实现这个平衡的关键。然而&#xff0c;项目范围是会变化的&#xff0c;因此控制项目范围变化是必要的。 如何控制项目范围的变化&#xff1f; 1、了解项目的交付范围 项目经理、团队成员、利益相关者和…

手把手带你理解Spring日志原理

文章目录 1 楔子2 jcl原理分析2.1 依赖坐标2.2 API调用2.3 源码分析 3 slf4j原理分析3.1 依赖坐标3.2 API调用3.3 源码分析 4 spring是如何选择日志技术的&#xff1f;4.1 场景一&#xff1a;通过log4j2打印日志4.1.1 引入maven依赖4.1.2 编写配置文件4.1.3 执行测试方法4.1.4 …

陆奇博士最新演讲分享:我的大模型世界观(附PPT下载链接)

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年3月份热门报告合集 【限时免费】ChatGPT4体验&#xff0c;无需翻墙直接用 ChatGPT调研报告&#xff08;仅供内部参考&#xff09; ChatGPT的发展历程、原理、技术架构…

使用WireShark抓包分析TCP_IP协议

文章目录 前言一、TCP/IP协议1.1 OSI分层1.2 TCP/IP 分层 二、抓包2.1 Socket代码2.2 过滤包 三、分析3.1 TCP首部3.2 实战分析3.3 三次握手3.4 四次挥手 参考 前言 TCP/IP 协议 是一组用于互联网通信的协议。它由两个主要协议组成&#xff1a;传输控制协议&#xff08;TCP&am…

【视频课程】算法工程师需要的ChatGPT大模型算法理论与实践课程!非粗浅科普...

前言 自从2022年11月ChatGPT发布之后&#xff0c;迅速火遍全球。其对话的交互方式&#xff0c;能够回答问题&#xff0c;承认错误&#xff0c;拒绝不适当的请求&#xff0c;高质量的回答&#xff0c;极度贴近人的思维的交流方式&#xff0c;让大家直呼上瘾&#xff0c;更是带火…