首页 > 其他分享 >GIC入门(一):中断类型,状态转换,中断路由,安全模型

GIC入门(一):中断类型,状态转换,中断路由,安全模型

时间:2023-08-16 19:47:56浏览次数:47  
标签:状态 触发 中断 GIC PE ARM 路由

GIC是ARM的通用中断处理器,和ARM Cortex-A和Cortex-R系列CPU搭配使用,M系列使用NVIC(nested vectored interrupt controller)。 本篇文章介绍GIC V3、V4的一些基本概念:中断类型,状态转换,中断路由,安全模型  

1.Interrupt types

SPI: shared phripheral interrupt,可以设置为被所有PE处理的外设中断 SGI: software generated interrupt PPI: private peripheral interrupt,绑定到固定PE进行处理的外设中断 LPI: locality-specific peripheral interrupt(GIC V3之后增加的feature) GIC根据INTID区分不同类型的中断源: 0   外设发送中断给CPU的通路有两种,一种是通过signal信号线连接到GIC,一种是通过写GIC中的寄存器,这种方式叫做MSI(message-signaled interrupt)。MSI是GIC V3新增feature。   0   0 注1:使用signal信号线的方式,在大型系统有很多中断线的应用场景下造成信号线过多面积很大,使用MSI可以避免这个问题。 注2:SPI可以被设计为信号线或MSI两种方式,LPI总是MSI方式。  

2.一个中断的状态机

GIC为SPI,SGI,PPI的每个中断源维护一个状态机,共有四种状态: Inactive:该中断源处于未激活状态 Pending:中断源触发状态,GIC感知到,但还未被分发到PE Active:中断已经被某个PE认领确认 Active and pending:这个中断源的一次触发已经被PE确认,同时这个中断源的另一次触发正在pending状态   0 中断的生命周期取决于它被配置为电平触发还是沿触发,二者的区别:   0 电平触发 0 沿触发 配置为电平触发时,中断源trigger电平为高,GIC-Core信号随之为高,此时中断状态变为pending。当信号被分发到PE并被PE确认之后,GIC-Core信号变为低,但中断源信号仍为高,因此此时中断状态为active and pending。直到中断源信号变为低,中断状态转为active。中断处理结束之后状态转为inactive。完成一次中断处理的状态周期。 配置为沿触发时,中断源trigger边沿信号之后变为低,检测到沿信号之后GIC-Core置高,此时中断未被分发到PE,状态是pending。PE确认中断之后GIC-Core信号随之置低,中断状态变为active,PE对当前中断源进行对应的处理。若此时再次触发中断,中断状态变为active and pending。当前中断处理完之后,GIC-Core置高,等到PE响应,中断状态变回pending。 结论:沿触发的状态周期相对电平触发短。  

3.中断如何路由到指定PE

ARM架构中为每一个PE都设置特定的标识符,这个标识符存在MPIDR_EL1寄存器中,位域定义如下:

 

ARM不同的处理器有不同的定义和实现,常见的两种实现如下: ARM Cortex-A53/A57中:

 

ARM Cortex-A55/A76中:

 

寄存器的理解参考:ARMv8/ARMv9:深入理解MPIDR_EL1寄存器中的affinity - 极术社区 - 连接开发者与智能计算生态 (aijishu.com) GIC正是根据affinity的值来确定要路由到哪个PE。  

4.安全模型

ARM引入了特权等级概念(参考Learn the architecture - AArch64 Exception Model (arm.com)),相应的,根据处理中断的状态为安全、非安全,中断也被分为了三组: 0 即需要由运行在EL3的runtime firmware处理的中断,需要由运行在S-EL1的T-OS处理的中断,以及需要由运行在NS-EL1/2的OS或虚拟化处理的中断。因此在软件上,中断向量表应该至少存在三份,来处理对应的中断。 此外,当PE运行在不同的状态时,可能会接收到上述三种中断的任意一种,比如运行在非安全状态,但来了需要EL3处理的SGroup0中断,那么就需要切换到对应的EL3状态来对这个中断进行处理。如下图所示: 0 被带到EL3的中断都是FIQ,在当前状态可以处理的中断是IRQ,如下表: 0 0 注:ARM V9中提出的realm,会被GIC视为非安全状态的一个扩展 注:GIC可以通过配置寄存器GICD_CTLR.DS位域设置安全状态有几种,设置为0时支持安全和非安全,设置为1时只支持安全状态。   下一章介绍GIC寄存器组成,配置和中断处理。

标签:状态,触发,中断,GIC,PE,ARM,路由
From: https://www.cnblogs.com/ski-zai/p/17636020.html

相关文章

  • Weblogic集群部署
    Weblogic集群部署Weblogic包官方下载地址:https://www.oracle.com/cn/middleware/technologies/weblogic-server-downloads.html服务规划:我们使用2台设备进行搭建,其中一台设备上部署控制台管理节点和受管理节点,一台设备上只部署受管理节点该部署以RedHat7为例安装前准备(所......
  • 什么是 SAP ABAP 系统的 LUW (Logical Unit of Work)概念
    在SAPABAP系统中,数据库LUW是一个关键概念,用于管理数据库操作的一致性和隔离性。数据库LUW(LogicalUnitofWork)的概念:在SAPABAP系统中,数据库LUW是一组数据库操作的逻辑集合,这些操作要么全部成功地提交到数据库,要么全部回滚。它确保了数据库操作的一致性和隔离性。在SAPABAP中......
  • 静态路由
    1.路由是什么?从源主机到目标主机的转发过程2.路由的工作原理是什么?可以说路由器就是互联网的中转站,网络中的数据包就是通过一个一个的路由器转发到目的网络的。那么路由器是如何进行数据包的转发的呢?就像一个人如果要去某个地方,他的脑海里一定要有一张地图一样,在每个路由器的内部......
  • 服务器数据恢复-EqualLogic存储RAID5硬盘坏道导致存储崩溃的数据恢复案例
    服务器数据恢复环境:一台DELLEqualLogic存储中有一组由16块SAS硬盘组建的RAID5阵列。存储存放虚拟机文件,采用VMFS文件系统,划分了4个lun。服务器故障&检测&分析:存储设备上有两个硬盘指示灯显示黄色,存储不可用。存储设备已经过保。对故障存储中的16块硬盘做硬件故障检测,发现其中......
  • 关于Angular路由中CanActivateChild钩子的用法
    CanActivateChild和CanActivate的用法如出一辙,使用对象可能有所不同,例如说CanActivate一般的使用对象要么是兄弟平级关系,要么就是嵌套在CanActivateChild父级下的子路由。具体使用实例:constroutes:Routes=[{path:'home',component:HomeComponent,canActivateChild:[......
  • 在树莓派上使用Dockers运行Openwrt并作为主路由器的旁路由
    开启网卡混杂模式sudoiplinkseteth0promiscon首先需要新建一个/etc/rc.local并添加可执行权限sudotouch/etc/rc.localsudochmod+x/etc/rc.local内容如下:#!/bin/sh-e#/etc/rc.local##rc.local##Thisscriptisexecutedattheendofeachmultiuserrunlevel......
  • vue-router动态路由无限循环
    //isLogined用来判断用户是否已登录router.beforeEach((to,from,next)=>{if(isLogined){next()}else{console.log('测试')next('login')}})next()表示放行,直接进入to路由,不会再次调用router.beforeEach()next(path:...to,replace:true)拦截......
  • ASP.NET Core中路由规则匹配
    RESTful约束,如果在一个控制器里面有多个Get、Post...的操作1、在一个控制器里面可以定义多个API方法2、通过路由规则来区分///<summary>///获取用户信息///</summary>///<paramname="user"></param>///<returns></returns>[HttpGet]publicUserGetUser(){//...}GetUs......
  • 王道408---中断等级排行
    参考: https://blog.csdn.net/yuanren201/article/details/109624922http://www.cskaoyan.com/thread-148325-1-1.html1.机器校验中断:高速程序发生了设备故障,比如电源故障,主存出错等2.访馆中断:用户程序需要操作系统接入,调用操作系统服务等3.程序性中断:包括指令和数据的格式错......
  • Angular如何创建路由以及如何配置路由导航
    废话不多说直接进入正题,首先要创建好项目。第一步:安装Angular路由输入以下指令npminstall@angular/router第二部:通过指令创建Angular路由守卫nggguardguards/auth(自定义名字)第二部:在module文件里面导入①路由导航组件②其他类组件,之后再NgModule({declarations:......