[GICv3] 3. 物理中断处理(Physical Interrupt Handling)

news2024/11/15 5:00:45

中断生命周期

image

  1. 外设通过中断信号线生成中断,或者软件生成中断(SGI)。
  2. Distributor 和 ReDistributor 配合按照中断分组和中断优先级仲裁后将最高优先级的中断分发到 CPU interface。
  3. cpu interface 向中断发送到 PE
  4. PE 读取 IAR 寄存器,中断变为 active 状态,并将中断优先级提升至最高,被称为运行优先级。
  5. 中断处理完之后,PE 写 EOI 寄存器,中断优先级降低为 active 前的优先级。
  6. deactivate 中断,使中断在下一次 pending 时,能够再次被 PE take。

中断状态转换状态机

image

电平触发

image

  电平触发的状态机变化:A1->D->B2->E1

关键步骤

  pending to Active & pending

  当 PE 通过读取 CPU 接口中的 IAR(中断应答寄存器)之一来ack中断时,中断从pending转换为Active & pending。 此读取通常是在发生中断异常后执行的中断处理例程的一部分。 然而,软件也可以轮询 IAR。
此时,GIC deassert给PE的中断信号。

  Active & pending to active

  当外设取消置位中断信号时,中断从Active & pending转换为active状态。 通常发生在PE写外设的清除中断寄存器。

边沿触发

image

  状态机变化:A1->C->A2->E2

关键步骤

  Active to Active & Pending

  如果外设重新发出中断信号,则中断将从Active变为Active & Pending

  Active & Pending to Pending

  当 PE 写CPU interface中的 EOIR 时,中断从Active & Pending状态变为Pending状态。 这表明 PE 已完成对第一个中断实例的处理。此时GIC重新向PE发出中断信号。

中断类型

PPI

  PPI 是针对单个特定 PE 的中断,不同的 PE 可以使用相同的 INTID 来指示不同的事件。 PPI 可以是组 0 中断、安全组 1 中断或非安全组 1 中断。 它们可以支持边缘触发或电平触发。

SGI

  SGI 通常用于核间通信,并通过写入 GIC 中的 SGI 寄存器来生成。 SGI 可以是组 0 或组 1 中断,并且它们仅支持边沿触发。

SPI

  SPI 是外设中断,也就是什么DMA,UART,SPI中断之类的。分发器可以将其路由到可以处理中断的指定 PE,或者路由到系统中已配置为接受此类中断的一组 PE 之一的 PE。 SPI 可以是组 0 或组 1 中断,并且它们可以支持边沿触发或电平触发

中断分组

  GIC 支持三个中断组,每一个中断都需要指定属于某一个中断分组。

  1. GROUP 0
  2. Secure GROUP 1
  3. Non-Secure Group 1

image

  • Group 0中断在任何时候都触发FIQ
  • Secure group 1中断发生在PE处于secure状态时触发IRQ
  • Non-Secure group 1中断发生在PE处于non-secure状态时触发IRQ
  • Secure group 1中断发生在PE处于non-secure状态时触发FIQ
  • Non-Secure group 1中断发生在PE处于ecure状态时触发FIQ
  • Secure group 1中断发生在PE处于EL3时触发FIQ。

  总结下来就是

  当Group 1物理中断是最高优先级的待处理中断并且具有足够的优先级时,就会发出信号。如果下列条件之一为真,则作为FIQ,否则作为IRQ发出信号:

  • 是另一个安全状态的中断, 即非PE此时的安全状态的中断。
  • PE在EL3执行。

image

中断路由举例

  在一个大系统中,非安全侧运行着诸如Linux的操作系统,安全侧运行如optee的Trust OS为整个系统提供安全服务。CPU分时复用在安全操作系统和非安全操作系统之间切换。

  通过将中断分组和配置ARMv8相关寄存器,可以将本该属于安全侧的中断路由到Trust OS中进行处理,本该属于LInux中处理的非安全中断路由到LInux中处理,如图:

image

这里的SCR_EL3.FIQ和SCR_EL3.IRQ含义为:
image

image

  ‍

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

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

相关文章

队列+二叉树广度优先

题目出自力扣-n叉树的层序遍历 我是原始人,递归写出一道题就只有递归思路,开始的想法是写深搜函数,传一个随着层数递增的int参数q,节点空就return,否则遍历所有节点,每个子节点又以q1为层数递归&#xff…

Postman工具基本使用

一、安装及基本使用 安装及基本使用参见外网文档:全网最全的 postman 工具使用教程_postman使用-CSDN博客 建议版本:11以下,比如10.x.x版本。11版本以后貌似是必须登录使用 二、禁止更新 彻底禁止postman更新 - 简书 host增加&#xff1…

15.x86游戏实战-汇编指令jmp call ret

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

从零开始学习嵌入式----Linux系统中shell脚本

目录 Shell脚本入门:玩转功能语句和数组,提升你的效率! 一、功能语句:让你的脚本更灵活 1. 条件语句:if、else、elif 2. 循环语句:for、while 二、数组:处理多项数据的好帮手 1. 声明数组…

程序员学长 | PyCaret,一个超强的 python 库

本文来源公众号“程序员学长”,仅用于学术分享,侵权删,干货满满。 原文链接:PyCaret,一个超强的 python 库 今天给大家分享一个超强的 python 库,PyCaret。 https://github.com/pycaret/pycaret 简介 …

力扣 160相聚链表

注意 判断是否有交点 用while(A! B) 其中A A nullptr? headb:A->next;B同理 注意,while循环的退出条件是AB指针指向同一个,如果没有相交,仍然可以退出 当AB都为NULLPTR时退出

包成功安装tiny-cuda-nn,记录安装过程中的问题解决,附带pytorch3d安装【踩坑指南】

tiny-cuda-nn安装过程中的问题解决,附带pytorch3d安装【踩坑指南】 前言tiny-cuda-nn第一种下载方法:命令行安装tiny-cuda-nn第二种下载方法:本地编译 pytorch3d安装 前言 official repo: https://github.com/NVlabs/tiny-cuda-nn 该包可以显…

【记录】LaTex|LaTex 代码片段 Listings 添加带圆圈数字标号的箭头(又名 LaTex Tikz 库画箭头的简要介绍)

文章目录 前言注意事项1 Tikz 的调用方法:newcommand2 标号圆圈数字的添加方式:\large{\textcircled{\small{1}}}\normalsize3 快速掌握 Tikz 箭头写法:插入点相对位移标号node3.1 第一张图:插入点相对位移3.2 第二张图&#xff1…

(2024,测试时训练(TTT),线性注意力,RNN,嵌套循环)学习(在测试时学习):具有表达性隐藏状态的 RNN

Learning to (Learn at Test Time): RNNs with Expressive Hidden States 公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 2. 方法 2.1 使用 TTT 更新隐藏状态 2.2 …

通勤数据:Comma2k19 数据集

A Commute in Data: The comma2k19 Dataset 通勤数据:Comma2k19 数据集 https://arxiv.org/pdf/1812.05752v1 Abstract— comma.ai presents comma2k19, a dataset of over 33 hours of commute in California’s 280 highway. This means 2019 segments, 1 minut…

节点流与处理流:深入解析Java中的IO流

节点流与处理流:深入解析Java中的IO流 1、节点流(Node Stream)1.1 定义1.2 好处1.3 示例 2、处理流(Processing Stream)2.1 定义2.2 好处2.3 创建特征2.4 示例 3、总结 💖The Begin💖点点关注&…

【多线程】线程同步--条件变量的原理及其使用

文章目录 前言线程同步的基本概念条件变量定义条件变量初始化条件变量销毁条件变量等待条件(重要)唤醒等待简单运用常见使用条件变量的格式 前言 线程同步意味着在多线程并发执行中,协调线程之间的执行顺序,以确保共享资源被正确…

(一)、python程序--模拟电脑鼠走迷宫

一、绪论 1、简介 电脑鼠走迷宫是一种比赛,制作实物电脑鼠小车在迷宫找目标点,用时最短者获胜。考验参赛选手软硬件结合的能力。 2、走迷宫模拟软件中已实现功能 1、点击迷宫墙壁可编辑迷宫,并且可保存和加载迷宫形状文件; 2、…

即时通讯平台项目测试(主页面)

http://8.130.98.211:8080/login.html项目访问地址:即时通讯平台http://8.130.98.211:8080/login.html 本篇文章进行项目主页面的测试。 在测试前需要先对待测内容进行分类,按照功能进行分类可以分为:个人信息设置、发送/接收消息、添加好友…

YOLO V8-Pose 【批量图片推理】 推理详解及部署实现

前言 在实际处理过程中,我们使用YOLO V8进行推理时,通常会针对一张图片进行推理。如果需要对多张图片进行推理,则可以通过一个循环来实现对图片逐张进行推理。 单张图片推理时,需要注意图片的尺寸必须是32的倍数,否则…

游戏AI的创造思路-技术基础-情感计算(1)

游戏中的AI也是可以和你打情感牌的哦,不要以为NPC是没有感情的,不过,不要和NPC打过多的情感牌,你会深陷其中无法自拔的~~~~~~ 目录 1. 情感计算算法定义 2. 发展历史 3. 公式和函数 3.1. 特征提取阶段 TF-IDF(词频…

算法学习笔记(8.1)-动态规划入门

目录 问题特性: 最优子结构: 代码示例:(动态规划最优子结构) 上述最小代价爬楼梯的运行过程: 代码示例: 无后效性: 解析: 具体过程图示如下: 具体的…

算法的复杂度

文章目录 一、算法的效率1、复杂度的概念2、复杂度的重要性 二、时间复杂度三、空间复杂度四、大O的渐进表示发五、计算复杂度案例1、计算Func1函数的复杂度2、计算Fun2的时间复杂度3、计算Func3的时间复杂度4、计算Func4的时间复杂度5、计算strchr的时间复杂度6、计算Func5的时…

解决Invalid or unsupported by client SCRAM mechanisms(dbeaver)

在用工具(dbeaver)链接Opengauss数据库的时候,报出标题的错误。原因为驱动不正确。 驱动下载地址:https://opengauss.org/zh/download/ 下载完的包 ,解压后,里面应该有两个jar 包,使用postgresql.jar dbe…

MT3056 交换序列

思路&#xff1a; 与题目 MT3055 交换排列 类似 代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e4 10; int n, fa[N], b[N], d[N]; void init(int n) {for (int i 1; i < n; i)fa[i] i; } int find(int x) {return x fa[x] ?…