当前位置: 首页 > news >正文

10-ARM gicv3/gicv4的总结-基础篇

目录

        • 1、gic的版本
        • 2、GICv3/gicv4的模型图
        • 3、gic中断号的划分
        • 4、GIC连接方式
        • 5、gic的状态
        • 6、gic框架
        • 7、gic Configuring
        • 推荐

本文转自 周贺贺,baron,代码改变世界ctw,Arm精选, armv8/armv9,trustzone/tee,secureboot,资深安全架构专家,11年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计和开发。

在这里插入图片描述

1、gic的版本

GIC是一个为Cortex-A和Arm Cortex-R设计的标准的中断控制器
在这里插入图片描述

2、GICv3/gicv4的模型图

在这里插入图片描述

3、gic中断号的划分
  • Shared Peripheral Interrupt (SPI)

  • Private Peripheral Interrupt (PPI)

  • Software Generated Interrupt (SGI)

  • Locality-specific Peripheral Interrupt (LPI)
    在这里插入图片描述
    (使用示例)
    在这里插入图片描述

4、GIC连接方式

在这里插入图片描述

5、gic的状态

在这里插入图片描述
中断的生命周期:
对于电平触发的中断(level-sensitive interrupts),一个上升沿输入,将中断变成pending,中断信号线保持高电平直到PE断言该中断信号.
对于边沿触发的中断(edge-sensitive interrupts),一个上升沿输入,将中断变成pending,中断信号线不会保持高电平.
在这里插入图片描述

6、gic框架

• Distributor interface
• Redistributor interface
• CPU interface
在这里插入图片描述

Distributor (GICD_*) for SPIs
• Interrupt prioritization and distribution of SPIs
• Enable and disable SPIs
• Set the priority level of each SPI
• Route information for each SPI
• Set each SPI to be level-sensitive or edge-triggered
• Generate message-signaled SPIs
• Control the active and pending state of SPIs
• Determine the programmer’s model that is used in each Security state: affinity routing or legacy

Redistributors (GICR_*)
• Enable and disable SGIs and PPIs
• Set the priority level of SGIs and PPIs
• Set each PPI to be level-sensitive or edge-triggered
• Assign each SGI and PPI to an interrupt group
• Control the state of SGIs and PPIs
• Control the base address for the data structures in memory that support the associated interrupt properties and pending state for LPIs
• Provide power management support for the connected PE

CPU interfaces (ICC_*_ELn)
• Provide general control and configuration to enable interrupt handling
• Acknowledge an interrupt
• Perform a priority drop and deactivation of interrupts
• Set an interrupt priority mask for the PE
• Define the preemption policy for the PE
• Determine the highest priority pending interrupt for the PE

In Arm CoreLink GICv3, the CPU Interface registers are accessed as System registers: ICC_*_ELn.

7、gic Configuring

全局配置
GICD_CTLR.ARE: Enable Affinity routing (ARE bits), 1-使用gicv3 mode,0-使用legacy mode(gicv2 mode). 默认为1
GICD_CTLR.EnableGrp1S
GICD_CTLR.EnableGrp1NS
GICD_CTLR.EnableGrp0

注意在GIC-600 does not support legacy operation

(Redistributor)Settings for each PE
Redistributor中包含了一个GICR_WAKER寄存器,用于记录connected PE的状态是onLine还是offline. 如果让PE变成online,软件则必需这样做:
• Clear GICR_WAKER.ProcessorSleep to 0.
• Poll GICR_WAKER.ChildrenAsleep until it reads 0

如果PE is offline (GICR_WAKER.ProcessorSleep==1)时,来了一个中断target到该PE上,将产一个wake request信号,这个信号连接PE的power controller,该controller将会打开PE。然后PE clear the ProcessorSleep bit
在这里插入图片描述

CPU interfaces (ICC_*_ELn)

SRE bit— enable cpu interface
注:有些处理器可能不支持legacy operation,SRE比特位也是固定为1,那么软件就不需要处理该比特了

Set Priority Mask and Binary Point registers
ICC_PMR_EL1、ICC_BPRn_EL1

Set EOI mode (EOI:End of interrupt)
ICC_CTLR_EL1 and ICC_CTLR_EL3

Enable signaling of each interrupt group
ICC_IGRPEN1_EL1 (banked by Security state)
ICC_IGRPEN0_EL1

PE configuration

  • Routing controls - SCR_EL3 、 HCR_EL2
  • Interrupt masks - PSTATE
  • Vector table - VBAR_ELn
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

interrupt sources configuration

  • SPIs are configured through the Distributor, using the GICD_* registers.
  • PPIs and SGIs are configured through the individual Redistributors, using the GICR_* registers

对于每一个中断,软件必需配置的:

  • Priority: GICD_IPRIORITYn, GICR_IPRIORITYn
  • Group: GICD_IGROUPn, GICD_IGRPMODn, GICR_IGROUPn, GICR_IGRPMODn
  • Edge-triggered or level-sensitive: GICD_ICFGRn, GICR_ICFGRn
  • Enable: GICD_ISENABLERn, GICD_ICENABLER, GICR_ISENABLERn, GICR_ICENABLERn

在这里插入图片描述
Setting the target PE for SPIs

  • GICD_IROUTERn.Interrupt_Routing_Mode == 0 rounting到制定的PE
  • GICD_IROUTERn.Interrupt_Routing_Mode == 1 Distributor硬件会自动选择一个PE,可以是0-n
    A PE can opt out of receiving 1-of-N interrupts. This is controlled by the DPG1S, DPG1NS and DPG0 bits in GICR_CTLR.

在这里插入图片描述
在这里插入图片描述

Routing a pending interrupt to a PE

  • Check that the group associated with the interrupt is enabled
  • Check that the interrupt is enabled
  • Check the routing controls to decide which PEs can receive the interrupt.
    routing is controlled by GICD_IROUTERn,An SPI can target one specific PE, or any one of the connected PEs
  • Check the interrupt priority and priority mask to decide which PEs are suitable to handle the interrupt
    Each PE has a Priority Mask register, ICC_PMR_EL1, in its CPU interface
  • Check the running priority to decide which PEs are available to handle the interrup
    Only an interrupt with a higher priority than the running priority can preempt the current interrupt

软件读取中断号
在这里插入图片描述
中断优先级
在这里插入图片描述

中断结束End of interrupt

  • Priority drop - 将中断优先级降到中断产生之前的值
  • Deactivation - 将中断从active变成inactive

在gicv3中,drop和deactivation通常是一起打开的。

ICC_CTLR_ELn.EOImode = 1: 通过写ICC_EOIR0_EL1、ICC_EOIR1_EL1让drop and deactivation同时生效
ICC_CTLR_ELn.EOImode = 0: 通过写ICC_EOIR0_EL1、ICC_EOIR1_EL1让drop生效,写ICC_DIR_EL1让deactivation生效,这在虚拟化中会用到.

大多数的软件系统中 EOIMode0,而下hypervisor的系统中 EOIMode1

中断号的状态
在这里插入图片描述
产生SGI中断
在这里插入图片描述
PE在secure执行时,可以产生secure和non-secure的SGI;
PE在non-secure执行时,也是可以产生secure的SGI,但是取决于GICR_NSACR寄存器的配置,该寄存器只能在secure中读写
在这里插入图片描述

比较GICv3和GICv2
在gicv2中,SGI INTIDs对于originating PE和the target PE是banked
在gicv3中,SGI仅仅对target PE是banked

在gicv2中同时收到两个SGI=5中断,两个中断都会被PE处理。
而在gicv3上,由于originating不是banked,所有前一个SGI=5中断将会丢失。PE只能收到一个

Legacy operation

  • When ARE==0, affinity routing is disabled (legacy operation)
  • When ARE==1, affinity routing is enabled (GICv3 operation)

在这里插入图片描述

推荐
  • ARMv8/ARMv9架构从入门到精通 --博客专栏
  • 《Armv8/Armv9架构从入门到精通 第二期》 --大课程
  • 8天入门ARM架构 --入门课程

相关文章:

10-ARM gicv3/gicv4的总结-基础篇

目录 1、gic的版本2、GICv3/gicv4的模型图3、gic中断号的划分4、GIC连接方式5、gic的状态6、gic框架7、gic Configuring推荐 本文转自 周贺贺,baron,代码改变世界ctw,Arm精选, armv8/armv9,trustzone/tee,s…...

数据库系统概论(超详解!!!) 第三节 关系数据库

1.基本概念 1. 域(Domain) 域是一组具有相同数据类型的值的集合。 2. 笛卡尔积(Cartesian Product) 给定一组域D1,D2,…,Dn,允许其中某些域是相同的。 D1,D2…...

Springboot 集成kafka 消费者实现ssl方式连接监听消息实现消费

证书准备:springboot集成kafka 消费者实现 如何配置是ssl方式连接的时候需要进行证书的转换。原始的证书是pem, 或者csr方式 和key方式的时候需要转换,因为kafka里面是jks 需要通过openssl进行转换。 证书处理: KeyStore 用于存储客户端的证…...

spark 实验二 RDD编程初级实践

目录 一. pyspark交互式编程示例(学生选课成绩统计) 该系总共有多少学生; 该系DataBase课程共有多少人选修; 各门课程的平均分是多少; 使用累加器计算共有多少人选了DataBase这门课。 二.编写独立应用程序实现数…...

【MySQL】not in遇上null的坑

今天遇到一个问题: 1、当 in 内的字段包含 null 的时候,正常过滤; 2、当 not in 内的字段包含 null 的时候,不能正常过滤,即使满足条件,最终结果也为 空。 测试如下: select * from emp e;当…...

鸿蒙4.0-DevEco Studio界面工程

DevEco Studio界面工程 DevEco Studio 下载与第一个工程新建的第一个工程界面回到Project工程结构来看 DevEco Studio 下载与第一个工程 DevEco Studio 下载地址:点击跳转 https://developer.harmonyos.com/cn/develop/deveco-studio#download 学习课堂以及文档地址…...

前端将html导出pdf文件解决分页问题

这是借鉴了qq_251025116大佬的解决方案并优化升级完成的,原文链接 1.安装依赖 npm install jspdf html2canvas2.使用方法 import htmlToPdffrom ./index.jsconst suc () > {message.success(success);};//记得在需要打印的div上面添加 idlet dom document.que…...

openssl3.2 - exp - 产生随机数

文章目录 openssl3.2 - exp - 产生随机数概述笔记END openssl3.2 - exp - 产生随机数 概述 要用到openssl产生的随机数, 查了资料. 如果用命令行产生随机数, 如下: openssl rand -hex -num 6 48bfd3a64f54单步跟进去, 看到主要就是调用了一个RAND_bytes(), 没其他了. 官方说…...

【三两波折】char *foo[]和char(*foo)[]有何不同?

1、先谈优先级 最高级别 —— 有四个,他们并不像运算符: []数组下标左到右结合()用于(表达式) or 函数名(形参表)左到右结合.读取结构体成员左到右结合->读取结构体成员(通过指针)左到右结合 第二级别…...

k8s(kubernetes)怎么查看pod服务对应哪些docker容器

Kubernetes(k8s)中的Pod是一组共享网络和存储资源的容器集合。每个Pod都包含一个或多个Docker容器,这些容器共享网络命名空间和存储卷,并在同一主机上运行。因此,可以将Pod视为一组紧密相关的Docker容器的逻辑主机&…...

[2023年]-hadoop面试真题(二)

[2023年]-hadoop面试真题(一) (北京) Maptask的个数由什么决定?(北京) 如何判定一个job的map和reduce的数量 ?(北京) MR中Shuffle过程 ?(北京) MR中处理数据流程 ?(…...

蓝桥杯备战刷题-滑动窗口

今天给大家带来的是滑动窗口的类型题,都是十分经典的。 1,无重复字符的最长子串 看例三,我们顺便来说一下子串和子序列的含义 子串是从字符串里面抽出来的一部分,不可以有间隔,顺序也不能打乱。 子序列也是从字符串里…...

LLM(十一)| Claude 3:Anthropic发布最新超越GPT-4大模型

2024年3月4日,Anthropic发布最新多模态大模型:Claude 3系列,共有Haiku、Sonnet和Opus三个版本。 Opus在研究生水平专家推理、基础数学、本科水平专家知识、代码等10个维度,超过OpenAI的GPT-4。 Haiku模型更注重效率,能…...

20-Java备忘录模式 ( Memento Pattern )

Java备忘录模式 摘要实现范例 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象 备忘录模式属于行为型模式 摘要 1. 意图 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对…...

整合生成型AI战略:从宏观思维到小步实践

“整合生成型AI战略:从宏观思维到小步实践” 在这篇文章中,我们探讨了将生成型AI和大型语言模型融入企业核心业务的战略开发方法。我们的方法基于敏捷开发原则,技术专家和数据科学家需要采纳商业思维,而执行官则需理解生成型AI和…...

个人博客系列-后端项目-用户验证(5)

介绍 创建系统管理app,用于管理系统的用户,角色,权限,登录等功能,项目中将使用django-rest_framework进行用户认证和权限解析。这里将完成用户认证 用户验证 rest_framework.authentication模块中的认证类&#xff…...

css3中nth-child属性作用及用法剖析

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 标题:CSS3中nth-child属性作用及用法剖析 摘要:CSS3中的nth-child选择器允许我们根据元素位置来定位特定的元素…...

okHttp MediaType MIME格式详解

一、介绍 我们在做数据上传时,经常会用到Okhttp的开源库,okhttp开源库也遵循html提交的MIME数据格式。 所以我们经常会看到applicaiton/json这样的格式在传。 但是如果涉及到其他文件等就需要详细的数据格式,否则服务端无法解析 二、okHt…...

跨境电商三大趋势

跨境电商有着不断发展的三大趋势: 个性化定制:随着消费者需求的不断变化和个性化定制的潮流,跨境电商平台开始提供更多的定制化服务。消费者可以根据自己的需求选择产品的款式、材料和设计,从而获得更加个性化的产品体验。 无界销…...

【DevOps基础篇之k8s】如何通过Kubernetes CKA认证考试

【DevOps基础篇之k8s】如何通过Kubernetes CKA认证考试 目录 【DevOps基础篇之k8s】如何通过Kubernetes CKA认证考试核心概念资源监控生命周期管理Cluster维护安全认证问题排查其他推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课这些是我在准备CK...

山石网科WAF漏洞深度解析:从captcha页面到服务器沦陷的全过程

山石网科WAF命令注入漏洞的技术深潜与防御实践 在Web应用安全防护领域,WAF(Web Application Firewall)作为企业防御体系的重要屏障,其自身的安全性往往被过度信任。近期曝光的山石网科WAF命令执行漏洞,恰恰揭示了即便是…...

告别压枪烦恼:罗技鼠标宏助你轻松掌控绝地求生后坐力

告别压枪烦恼:罗技鼠标宏助你轻松掌控绝地求生后坐力 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为绝地求生中难以控制的枪械…...

2026年MySQL安装教程(超详细)

MYSQL下载及配置,一遍成功引言第一部分:下载教程第二部分:安装与配置第三部分:验证引言 大家好,我是菜程序,今天聊聊mysql的下载及配置,后端开发一定离不开数据库的支持,所以我便整…...

零基础玩转Pi0具身智能:3步完成部署,可视化生成机器人动作轨迹

零基础玩转Pi0具身智能:3步完成部署,可视化生成机器人动作轨迹 1. 引言:具身智能的平民化时代 想象一下,你正在厨房准备早餐,想让机器人助手帮你从烤面包机里取出吐司。传统方法需要专业的机器人编程知识&#xff0c…...

YOLO12工业场景迁移指南:从COCO预训练到产线缺陷检测的微调路径

YOLO12工业场景迁移指南:从COCO预训练到产线缺陷检测的微调路径 1. 引言:当通用模型遇上工业难题 想象一下,你拿到一个在通用场景下表现优异的“全能选手”——YOLO12,它能轻松识别照片里的人、车、猫、狗。现在,你需…...

实测智码方舟:花100元用AI生成毕设代码,完整记录从注册到答辩的全过程

一、前言:我为什么实测这个工具 2026年了,计算机专业的毕业设计还用纯手写代码吗?这个问题我纠结了很久。 我是普通本科计算机专业的学生,成绩中上,技术基础一般。大三下学期开始准备实习和秋招,完全没把…...

告别统计软件困境:虎贲等考 AI,让数据分析从 “硬核难题” 变 “轻松通关”

在学术研究与论文写作中,数据分析一直是横在学生与研究者面前的 “高门槛”。无论是本科毕业论文的基础统计,还是硕博期刊论文的实证检验,从数据清洗、模型构建到结果输出、图表制作,每一步都考验着专业能力。传统工具如 SPSS、St…...

多变量赋值,解包,split()与eval()

input与split结合运用注意点:...

监督学习(六):LightGBM实战优化技巧

1. LightGBM快速入门:为什么选择它? 第一次接触LightGBM是在处理一个电商用户行为预测项目时,当时数据集有300多万条记录,XGBoost跑一次要6小时,换成LightGBM后训练时间直接缩短到40分钟。这个经历让我彻底被它的效率征…...

MedGemma 1.5惊艳案例:对‘PD-L1表达阳性’检测报告的机制级解读

MedGemma 1.5惊艳案例:对‘PD-L1表达阳性’检测报告的机制级解读 1. 引言:当AI遇见专业医疗报告解读 想象一下,你拿到一份病理检测报告,上面写着"PD-L1表达阳性(TPS≥50%)"。这串专业术语背后到…...