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

ARM通用中断控制器GIC之中断处理

在阅读本章之前,可以参考笔者之前关于GIC的一些描述:
ARM通用中断控制器GIC(generic Interrupt Controller)简介
ARM架构Generic Interrupt Controller(GIC)之Distributor和CPU interface功能介绍
ARM架构Generic Interrupt Controller(GIC)详解之术语介绍

一,中断处理简述

中断处理过程包括了:

  • 如何识别辨认中断
  • 软件层如何配置GIC,从而控制中断
  • GIC在每个CPU interface上为每个中断维护的状态机
  • 处理器的异常模型如何与GIC交互
    GIC架构支持单处理器和多处理器系统,无论是单处理器还是多处理器系统,GIC架构都可以包含GIC安全扩展:
  • 能够识别一个与之相连的,已经实现了ARM安全扩展的处理器,对GIC寄存器是安全访问还是非安全访问。
  • 实现了判断对GIC寄存器是安全访问还是非安全访问,以至于:
    – 可以复用(bank)一些寄存器,使同一个寄存器能够分为安全和非安全的拷贝。
    – 一些寄存器是安全的(secure),这意味着只能在安全模式下访问。
    – 剩下的寄存器是公共的(common),这意味着它们可以在安全和非安全模式下被访问。
  • 可以使用中断分组(interrupt grouping)特性来处理安全中断和非安全中断,比如:
    • Group 0 中断为安全中断
    • Group 1 中断为非安全中断
  • 在多处理器系统中,可能只在它的一些CPU interface中实现了GIC的安全扩展。
    除了GIC v1版本不支持GIC安全扩展,在其他GIC架构中都支持中断分组(interrupt grouping):
  • 默认情况下,所有中断都是Group 0中断,并且使用 IRQ中断请求被发送给与之相连的处理器。
  • 每个中断可以被配置成 Group 0 或者 Group 1 中断。
  • 一个CPU interface也可以被配置成使用FIQ中断请求,对一个已连接的处理器发送 Group 0 中断信号。

在多处理器系统中处理不同类型的中断

GIC支持外设中断( peripheral interrupts)和软件产生的中断(software-generated interrupts):

  • 软件产生的中断(SGI)使用GIC的 N-N 模型。
  • 外设(硬件)中断使用 1-N 模型。

如何识别所支持的中断

GIC架构通过中断ID来识别不同类型的中断,为了能够正确地处理中断,软件层必须知道GIC所支持的中断ID。

相关文章:

  • Vector简介说明
  • 图像处理黑科技——弯曲矫正、去摩尔纹、切边增强、PS检测
  • 大学网课查题接口
  • 【C语言】扫雷小游戏
  • 『Halcon与C#混合编程』011_工业相机的SDK介绍
  • 卷积核flip+transpose+cv.imread+enumerate+np.pad+tqdm
  • 【第一阶段:java基础】第1章:java概述
  • MySQL进阶之触发器、锁、InnoDB引擎和MySQL管理
  • 【Linux】虚拟机安装Ubuntu后的一些通用设置
  • [Android]使用Android打包Unity工程
  • 【STM32】PWM输出
  • 神经网络每次结果不一样,神经网络预测问题
  • Python常用命令总结【持续更新】
  • 什么样的人适合学习网络安全?
  • python作业8
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • canvas 高仿 Apple Watch 表盘
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • laravel5.5 视图共享数据
  • MQ框架的比较
  • Yeoman_Bower_Grunt
  • 分类模型——Logistics Regression
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于webpack 的 vue 多页架构
  • 深入浏览器事件循环的本质
  • 使用Gradle第一次构建Java程序
  • 数据结构java版之冒泡排序及优化
  • 小李飞刀:SQL题目刷起来!
  • 一些关于Rust在2019年的思考
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 选择阿里云数据库HBase版十大理由
  • (11)MSP430F5529 定时器B
  • (23)Linux的软硬连接
  • (4)Elastix图像配准:3D图像
  • (一)基于IDEA的JAVA基础10
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)我也是一只IT小小鸟
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net 调用php,php 调用.net com组件 --
  • .NET/C# 使用反射注册事件
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET企业级应用架构设计系列之应用服务器
  • .net项目IIS、VS 附加进程调试
  • .so文件(linux系统)
  • ?php echo ?,?php echo Hello world!;?
  • [100天算法】-不同路径 III(day 73)
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [Android]使用Android打包Unity工程
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [Angular] 笔记 7:模块
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现