中断子系统 --- 硬件相关层

news2024/11/25 0:29:52

中断控制器驱动

由于linux支持中断控制器的级联,因此多个中断控制器就可能包含相同的硬件中断号。为了可以通过中断号唯一地标识一个中断,linux引入了irq domain机制以实现将硬件中断号映射为全局唯一的逻辑中断号。

Hwirq映射到irq

  • 每个中断控制器都对应一个IRQ Domain;
  • 中断控制器驱动通过irq_domain_add_*()接口来创建IRQ Domain;
  • IRQ Domain支持三种映射方式:linear map(线性映射),tree map(树映射),no map(不映射);
    1. linear map:维护固定大小的表,索引是硬件中断号,如果硬件中断最大数量固定,并且数值不大,可以选择线性映射;
    2. tree map:硬件中断号很大时,可以选择树映射;
    3. no map:硬件中断号直接就是Linux的中断号;

说明:

  1. 每个中断控制器对应一个irq_domain,使用链表将多个irq域组织起来。
  2. 每个irq对应一个irq_desc结构体
  3. hwirq_max:该 irq_domain 支持的中断最大数量
  4. revmap_size:映射表的大小
  5. revmap_direct_max_irq:此中断控制器支持的直接映射的最大中断数量
  6. revmap_tree:树映射的映射表
  7. linear_revmap[]:hwirq->virq 映射的线性表。索引是硬件中断号

通过这三种方式将硬件中断号映射成全局唯一的中断号。

但目前hwirqirq直接的关系还没有完全建立起来,因此我们还不能用irq来注册中断

建立双向联系irq  < --- >  hwirq

说明:

  1. irq_data:包含中断控制器的硬件数据。domain里面利用linear_revmap(线性)或者revmap_treeradix tree)来保存irq_data结构。因此可以以hwirqkey值从revmap_tree或者linear_revmap当中获取到irq_data数据结构

irq_desc是一个irq对应的描述结构体,每个irq对应一个该结构,在irq_desc结构体里面有irq_data

Arch-specific code

这部分与具体的CPU架构相关,不同的架构有不同的执行方式。以ARMv8为例,具体见下面的Arch-specific中断处理流程源码分析。大概流程是:

enable_da_f:开启PSTATE的A/D/S(SError中断/调试异常/FIQ),保持irq关闭,防止中断嵌套

diable_daif: 关闭中断

恢复中断:

第一个关中断是硬件自动实现的,然后保存现场后将高优先级的中断打开,之后恢复现场前再次关中断,恢复之后才开中断。三次开关操作,如上所示

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

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

相关文章

hive创建hbase表映射

将hbase中的表映射至hive中&#xff0c;便于表的操作 create external table student_info(id string,student_name string,gender string,pwd string,school_name string,location string ) stored by org.apache.hadoop.hive.hbase.HBaseStorageHandler withserdeproperties…

Python二级 每周练习题18

练习一: 从键盘输入任意字符串&#xff0c;按照下面要求分离字符串中的字符: 1、分别取出该字符串的第偶数位的元素(提醒注意:是按照从左往右数的方式确定字符串的位置) 2、并依次存储到一个列表中; 3、输出这个列表。 答案: ninput(请输入任意字符串:) #创建变量n存放用户…

【深度学习】卷积神经网络(LeNet)

卷积神经网络 LeNet #前言LeNet 模型代码实现MINST代码分块解析1 构建 LeNet 网络结构2 加载数据集3 初始化模型和优化器4 训练模型5 训练完成 完整代码 Fashion-MINST代码分块解析1 构建 LeNet 网络结构2 初始化模型参数3 加载数据集4 定义损失函数和优化器5 训练模型 完整代码…

6种最流行的API架构风格

作为一名 Java程序员&#xff0c;编写业务 API是非常日常的开发工作&#xff0c;那么&#xff0c;如何选择合适的 API框架&#xff1f;今天我们就来一起聊聊当下最流行的 6种API架构风格。 一、SOAP 定义 SOAP&#xff0c;Simple Object Access Protocol&#xff0c;中文翻译…

Android端Base64解码表情emoj乱码

一、背景&#xff1a;H5端用户评论中包含表情包&#xff0c;通过JSBridge 传递给客户端&#xff0c;Android Base64解码之后&#xff0c;显示乱码&#xff08;是菱形问号&#xff09;。小程序和iOS可以正常解码出表情。用Base64在线编码解码&#xff08;Base64 在线编码解码 | …

中项系统集成项目管理2023上半年真题及解析

中项系统集成项目管理2023上半年真题及解析 上午题1. 在 (1) 领域&#xff0c;我国还远未达到世界先进水平&#xff0c;需要发挥新型举国体制优势&#xff0c;集中政府和市场两方面的力量全力发展2. ChatGPT于 2022年 11 月 30 日发布&#xff0c;它是人工智能驱动的 (2) 工具3…

Pandas数据分析一览-短期内快速学会数据分析指南(文末送书)

前言 三年耕耘大厂数据分析师&#xff0c;有些工具是必须要掌握的&#xff0c;尤其是Python中的数据分析三剑客&#xff1a;Pandas&#xff0c;Numpy和Matplotlib。就以个人经验而已&#xff0c;Pandas是必须要掌握的&#xff0c;它提供了易于使用的数据结构和数据操作工具&am…

写作业用白光还是暖光?分享专业的读写台灯

现在学生的学习状态用四个字形容“学业繁重”&#xff0c;从上小学开始晚上完成功课到八九点都是再正常不过的事情了&#xff0c;因此学习时的光线环境就很重要&#xff0c;直接影响了视力健康&#xff0c;有一个好的台灯&#xff0c;能很好保护我们的眼睛&#xff0c;还能提高…

快速导入mysql较大的SQL文件

一般情况下&#xff0c;我们的网站或者小项目的数据库文件也就几十兆的大小&#xff0c;使用navicat等可视化工具快速就可以导入成功&#xff0c;但是当我们遇到几百兆或者更大的数据库文件时候&#xff0c;使用这些可视化工具去操作肯定是不可以的&#xff0c;亲测导入时间会特…

分享三款免费好用的远程控制软件!

一、AnyViewer远程桌面软件 AnyViewer是一款免费的远程桌面软件&#xff0c;您可以使用它在家远程控制公司电脑办公&#xff0c;同时您还可以使用它远程传输文件、远程游戏、远程关闭电脑等&#xff0c;并且AnyViewer还具有以下优点&#xff1a; 易于使用&#xf…

大数据安全 | 【实验】凯撒加密与解密

文章目录 &#x1f4da;实验目的&#x1f4da;关于凯撒加密&#x1f525;输入任意明文和密钥K10&#xff0c;对其进行凯撒加密&#xff1b;&#x1f525;输入密文和密钥K10&#xff0c;对其进行凯撒解密。&#x1f525;&#xff08;暴力&#xff09;破译密文 &#x1f4da;分析…

GNSS(二):融合策略

文章目录 一、背景二、松耦合融合策略1. 信息有效性判断2. 坐标系对齐3. 观测方程a.杆臂补偿b.速度融合c.位置融合1) 置信度设置 d. 航向yaw融合 4.观测性分析1&#xff09;状态表示在VIO坐标系下的观测性分析2&#xff09;状态表示在GPS ENU坐标系下的观测性分析 三、紧耦合融…

linux log日志文件切割 提取时间段 某天 日志

# 将service-23082202.log文件中 2023-09-05 08:00:00 到 2023-09-05 10:00:00 时段内的日志内容提取到20230905.log文件中 sed -n /2023-09-05 08:00:00/,/2023-09-05 10:00:00/p service-23082202.log >> 20230905.log

盘点中国光博会CIOE2023上的国货

一、中国光博会历史地位 CIOE中国光博会首次举办于1999年&#xff0c;经历24年在行业的深耕及拓展&#xff0c;是全球极具规模及影响力的综合型展会&#xff0c;见证了中国光电行业的变化及蓬勃发展。无论是超高清视频领域还是AI应用领域&#xff0c;均属于近年来的热门赛道&a…

软件设计师-UML基础教程

场景 针对UML1.5各种模型图的构成和功能进行说明。 UML概述 UML简介 UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。 适用于描述以用例为驱动&#xff0c;以体系结构为中心的软件设计的全过程。 UML的定义包括UML语义和UML表…

C++(day2)

封装一个结构体&#xff0c;结构体中包含一个私有数组&#xff0c;用来存放学生的成绩&#xff0c;包含一个私有变量&#xff0c;用来记录学生个数&#xff0c; 提供一个公有成员函数&#xff0c;void setNum(int num)用于设置学生个数 提供一个公有成员函数&#xff1a;void…

【PHP】麻醉临床信息系统

麻醉临床信息系统以服务围术期临床业务工作的开展为核心&#xff0c;为医护人员、业务管理人员、院级领导提供流程化、信息化、自动化、智能化的临床业务综合管理平台。 麻醉信息系统处理的数据包含病人的手术信息、麻醉信息、病人手术过程中从监护仪上采集到的数据和病人情况等…

互联网医院系统|互联网医院探索未来医疗的新蓝海

随着互联网技术的飞速发展&#xff0c;互联网医院应运而生&#xff0c;为人们带来全新的医疗体验。本文将深入探讨互联网医院的开发流程、系统优势以及未来发展方向&#xff0c;带您领略医疗领域的新蓝海。互联网医院的开发流程是一个结合技术、医疗和用户需求的复杂过程。首先…

python可视化记录训练过程

可视化训练曲线 wandb基本流程离线运行wandb保存最佳结果及模型界面 tensorboard基本流程SummaryWriter 所提供的其他方法 wandb 基本流程 安装wandb pip install wandb注册wandb账号 然后在wandb官网注册一个账号&#xff0c;然后获取该账号的私钥。然后在命令行执行&#xf…

无涯教程-JavaScript - AND函数

描述 如果AND函数的所有参数都为TRUE,则返回TRUE&#xff1b;如果一个或多个参数为FALSE,则返回FALSE。 AND功能的一种常见用法是扩展执行逻辑测试的其他功能的用途。如,IF函数执行逻辑测试,如果测试判断为TRUE,则返回一个值,如果测试判断为FALSE,则返回另一个值。通过将AND函…