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

《learn_the_architecture_-_generic_interrupt_controller_v3_and_v4__lpisn》学习笔记

1.LPI(Locality-specific Peripheral Interrupts)是一种基于消息的中断(Message Signaled Interrupt,MSI),由中断翻译服务(ITS)提供翻译。这是因为LPI的设计目标是为系统中大量的设备提供高效的中断管理,而消息信号中断(MSI)是一种通过消息机制触发的中断类型,不需要传统的硬件线来触发中断。LPI的配置和管理与其他中断类型不同,它们的状态保存在内存中而不是寄存器中。对LPI的支持是可选的,可以通过寄存器GICD_TYPER.LPIS位设置,该位置1时表示支持LPI,为0不支持。

2.Redistributors使用内存中保存的表来存储LPI配置信息和每个物理LPI的状态,LPI的配置信息存储在LPI配置表中,寄存器GICR_PROPBASER提供该表的起始地址。LPI配置是全局的,即所有Redistributor必须看到相同的配置。LPI 的状态信息也存储在内存中的表中,即LPI 待处理表,寄存器 GICR_PENDBASER 提供该表的起始地址。每个Redistributor服务器都有自己的 LPI Pending 表,并且这些表不在Redistributor服务器之间共享。如下图所示:

3.当要使用LPI时,Redistributor的初始配置过程为:为LPI Configutation表分配内存,并使用每个LPI的适当配置初始化该表;在每个Redistributor中设置寄存器GICR_PROPBASER以指向LPI Configutation表;为每个Redistributor的LPI Pending表分配内存并初始化每个表的内容,在系统启动时,这通常意味着将内存清零,这意味着所有LPI INTID都处于非活动状态;在每个Redistributor中设置寄存器GICR_PENDBASER以指向与该再分发器关联的LPI挂起表;在每个Redistributor中将寄存器GICR_CTLR.EnableLPIs位设置为1以启用LPI。

4.每个LPI INTR在LPI Configutation表中占据一个字节,如下图:

虽然SPI、PPI和SGI的优先级值为8位,但表中只有6位来记录LPI的优先级,LPI优先级的低两位始终被视为0b00。没有用于记录组配置的字段,LPI始终被视为非安全组1中断。LPI Configutation表的大小取决于LPI的数量,GIC支持的INTID(SPI、PPI、SGI和LPI)的最大数量由寄存器GICD_TYPER.IDbits位指示,LPI配置表仅处理使用大于8191的INTID的LPI。因此,为了支持所有可能的LPI,LPI配置表大小计算如下:大小(以字节为单位) = 2GICD_TYPER.IDbits+1 – 8192。但寄存器GICR_PROPBASER还包括一个IDbits字段,该字段指示LPI配置表支持的INTID数量,该数字必须等于或小于GICD_TYPER.IDbits中的值。所以LPI配置表所需的大小变为:大小(以字节为单位) = 2GICR_PROPBASER.IDbits+1 – 8192。中断控制器必须能够读取为LPI配置表分配的内存,但它永远不会写入该内存。

5.LPI 的状态信息存储在内存中,LPI只有两种状态:非活动或待处理。当中断被确认时,中断会从挂起状态转换为非活动状态。如下图:

因为只有两种状态,所以LPI Pending表中每个LPI只有1位。因此,为了支持实现中所有可能的INTID,LPI待处理表的大小必须为:大小(以字节为单位)=2GICR_PROPBASER.IDbits+1/8。与LPI配置表不同,LPI挂起表的大小不会调整以考虑从INTID8192开始的LPI。表的前1KB(对应于INTID 0到8291的条目)存储实现定义状态。

6.LPI配置信息存储在内存中的表中,而不是寄存器中。出于性能原因,再分发器会缓存LPI配置信息。这意味着要重新配置LPI,软件必须:更新LPI配置表中的条目、确保更新的全局可见性、使再分发器中的任何配置缓存无效。通过发出ITS的INV或INVALL命令来使再分发器中的高速缓存失效,INV命令使特定中断的条目无效,因此该命令通常在重新配置少量LPI时使用,INVALL命令使指定集合中所有中断的条目无效。如果未实现ITS,软件必须写入GICR_INVLPIR(针对特定中断条目)或GICR_INVALLR(针对所有中断条目)寄存器,以使重新分配器重新加载中断配置。

7.ITS:即Interrupt Translation Service,外设通过向ITS中的GITS_TRANSLATER写入消息来生成LPI。这为ITS提供了以下信息:事件ID:这是写入GITS_TRANSLATER的值,EventID标识外设正在发送哪个中断,EventID可能与INTID相同,或者它可能由ITS转换为INTID;设备ID:DeviceID用来标识外设,DeviceID的生成机制是由具体实施定义的。ITS负责将消息转换为可传递至连接核心的INTID。物理LPI被分组到集合中。集合中的所有LPI都路由到同一个再分发器。软件将LPI分配给集合,从而使其能够有效地将中断从一个处理元素移动到另一个处理元素。

相关文章:

《learn_the_architecture_-_generic_interrupt_controller_v3_and_v4__lpisn》学习笔记

1.LPI(Locality-specific Peripheral Interrupts)是一种基于消息的中断(Message Signaled Interrupt,MSI),由中断翻译服务(ITS)提供翻译。这是因为LPI的设计目标是为系统中大量的设备提供高效的中断管理&am…...

java 常量池详解

目录 java 常量池详解一 静态常量池(Static Constant Pool)1.1 概述1.2 存储内容1.3 特点1.4 示例 二 运行时常量池(Runtime Constant Pool)2.1 概述2.2 存储内容2.3 特点2.4 示例 三 基础类型常量池(Primitive Type C…...

aardio —— 虚表 —— 模拟属性框

写了个简单的属性框例程,抛砖引玉,期待你做出更丰富强大的功能。 可折叠行、可输入文本、可下拉选择、支持下拉选择图片、颜色等功能。 只有想不到,没有做不到,发挥你的想象力吧。 import win.ui; import godking.comboboxEx im…...

企业微信——智能表格学习

智能表格 应用限制条件 获取 token https://developer.work.weixin.qq.com/document/10013#%E5%BC%80%E5%8F%91%E6%AD%A5%E9%AA%A4 开发步骤 你可以通过以下步骤,使用access_token来访问企业微信的接口。需要注意的是,所有的接口需使用Https协议、Js…...

2501d,jingo优化

原文 大家好,我重构和优化了一下jin.go这里: 我去掉了vibe.d依赖,因为它又慢又大,而且我无法与2版本交朋友.当仅运行1000个vibe纤程时,不仅应用崩溃,甚至图形系统驱动也崩溃一次,这需要重启笔记本电脑. 当前,我用小栈大小的本地流(4kb)解决. 我真很期待photon的稳定性,以恢复支…...

实景三维点云处理专业软件ArcGIS根据DSM生成地表点云集

常见的实景三维处理软件及其特色功能如下: 一、专业实景三维建模软件 Agisoft Metashape 高精度建模:能够生成高精度的三维模型,精度可以达到厘米级甚至毫米级,适用于需要详细测量和分析的项目,如文物保护和建筑测量。…...

山东大学人工智能导论期末复习概念汇总

人工智能概念汇总V2 —Nevertheless 简介 [!NOTE] 本文是在原版的基础上,面向期末而进行的删减版本 建议使用pdf版本,排版和图片显示完全。如有需要,可私信发送邮箱地址 PDF版本: 山东大学人工智能导论概念汇总pdf版 山东大学软…...

Ubuntu下安装Android Sdk

下载android sdk命令行工具 https://developer.android.com/studio?hlzh-cn#command-tools mkdir android-sdk cd android-sdk unzip commandlinetools-linux-11076708_latest.zip 添加环境变量到~/.bashrc export ANDROID_HOME$HOME/android-sdk export PATH$PATH:$ANDRO…...

c语言中GHashTable的使用

前言:最近在c代码中需要用到键值对的存储,由于没有map,需要自己实现或者使用库函数,g_hash_table_new是GLib中的库函数,但使用起来会有很多坑,记录一下 构建hash表g_hash_table_new GHashTable* g_hash_table_new(GH…...

Conda清理缓存

参考:1、2...

【每日学点鸿蒙知识】导入cardEmulation、自定义装饰器、CallState状态码顺序、kv配置、签名文件配置

1、HarmonyOS 无法导入cardEmulation? 在工程entry mudule里的index.ets文件里导入cardEmulation失败 可以按照下面方式添加SystemCapability;在src/main/syscap.json(此文件需要手动创建)中添加如下内容 {"devices": {"gen…...

【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写

文章目录 一、随机数1、Random.Next()生成随机整数示例:生成一个随机整数生成指定范围内的随机整数 2、Random.NextSingle生成随机浮点数示例:生成随机浮点数 3、 生成随机字母或字符示例:生成随机字母示例:生成随机小写字母 二、…...

深入解析 Conda 安装的默认依赖包及其作用:conda create安装了哪些包(中英双语)

深入解析 Conda 安装的默认依赖包及其作用 当我们使用 Conda 创建新环境时,例如执行命令: conda create -n olmes python3.10Conda 会自动为我们安装一系列基础依赖包,保证 Python 环境能够正常运行。这些包不仅是我们开发的基础工具&#…...

《Vue3实战教程》35:Vue3测试

如果您有疑问,请观看视频教程《Vue3实战教程》 测试​ 为什么需要测试​ 自动化测试能够预防无意引入的 bug,并鼓励开发者将应用分解为可测试、可维护的函数、模块、类和组件。这能够帮助你和你的团队更快速、自信地构建复杂的 Vue 应用。与任何应用一…...

Mysql监视器搭建

Mysql监视器搭建 资源下载在:Mysql监视器资源包 查询问题:CPU、连接数、慢查询 --> 暴增 1、exporter进行Mysql信息采集 修改my.cnf [client] userroot password数据库密码 host:数据库URL port3306启动命令 mysqld_exporter.exe --config.my-c…...

Linux(centos)安装 MySQL 8 数据库(图文详细教程)

前言 前几天写了个window系统下安装Mysql的博客,收到很多小伙伴私信需要Linux下安装Mysql的教程,今天这边和大家分享一下,话不多说,看教程。 一、删除以前安装的MySQL服务 一般安装程序第一步都需要清除之前的安装痕迹&#xff…...

软件工程大作业——图书管理系统/图书个性化推荐与实现系统

目录 1 绪论 1.1研究背景 1.2研究现状 1.3研究内容 2 系统关键技术 2.1 Spring Boot框架 2.2 JAVA技术 2.3 MYSQL数据库 2.4 B/S结构 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2 系统性能分析 3.3 系统功能分析 3.4系统流程分析 3.4.1登…...

Linux下编译安装PETSc

本文记录在Linux下编译安装PETSc的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1oneAPI2024.2.1 一、安装依赖 1.1 安装oneAPI 参见:Get the Intel oneAPI Base Toolkit , Get the Intel oneAPI HPC Toolkit 1.2 安…...

检索增强生成

概述 检索增强生成(Retrieval-Augmented Generation,RAG)是一种将信息检索与语言模型相结合的技术。由Facebook AI Research于2020年提出,它把数据库的优势与语言模型的优势相结合。它能让模型从外部知识库中检索信息&#xff0c…...

九、Vue 事件处理器

文章目录 前言一、基础事件绑定:v-on 指令二、方法调用:组织有序的交互逻辑三、事件修饰符阻止冒泡与默认事件捕获与自身触发单次触发与鼠标按键区分四、按键修饰符前言 在 Vue.js 的交互世界里,事件处理器起着举足轻重的作用,它让页面从静态展示迈向动态交互,精准捕捉用户…...

stm32内部flash在线读写操作

stm32内部flash在线读写操作 📍相关开源库文章介绍《STM32 利用FlashDB库实现在线扇区数据管理不丢失》 ✨不同系列,内部flash编程有所区别。例如stm32f1是按照页擦除,半字(16bit)或全字(32bit)数据写入;st…...

DuckDB:密钥管理器及其应用

密钥管理器(Secrets Manager)为所有使用密钥的后端提供了统一的用户界面。密钥信息可以被限定范围,因此不同的存储前缀可以有不同的密钥信息,例如允许在单个查询中连接跨组织的数据。密钥也可以持久化,这样就不需要在每次启动DuckDB时都指定它…...

每日一学——自动化工具(Ansible)

3.1 Ansible 3.1.1 Playbook编写指南 嘿,小伙伴们!你们知道吗,运维工作其实也可以变得像搭积木一样简单!今天我们要介绍的就是Ansible,一款非常流行的自动化运维工具。通过Ansible,我们可以用Playbook来描…...

typescripts语法笔记

游戏引擎:图形渲染系统,特效系统,物理系统,各个功能集合。 cocoscreator是将cocos2d-x封装成了可视化编辑。面向对象转变成面向组件开发。 ts编程是js编程语言的超集。 基础类型""可以转换成字符串类型,适用…...

TypyScript从入门到精通

TypyScript从入门到精通 TypyScript 是什么?增加了什么环境搭建二、为何需要 TypeScript三、编译 TypeScript四、类型声明五、类型推断基本类型六、类型总览JavaScript 中的数据类型TypeScript 中的数据类型1. 上述所有 JavaScript 类型2. 六个新类型:3.…...

vscode代码AI插件Continue 安装与使用

“Continue” 是一款强大的插件,它主要用于在开发过程中提供智能的代码延续功能。例如,当你在编写代码并且需要进行下一步操作或者完成一个代码块时,它能够根据代码的上下文、语法规则以及相关的库和框架知识,为你提供可能的代码续…...

STM32-笔记20-测量按键按下时间

1、按键按下的时间-思路 我们先检测下降沿信号,检测到以后,在回调函数里切换成检测上升沿信号,当两个信号都检测到的时候,这段时间就是按键按下的时间,如图所示:>N*(ARR1)CCRx的值 N是在这段时间内&…...

继承与多态 - 继承机制、虚函数、纯虚函数

引言 C 是一种支持面向对象编程(OOP)的编程语言,继承和多态是 OOP 的两个核心概念。通过继承,我们可以创建新的类,这些新类可以重用现有类的代码,并且可以根据需要进行扩展或修改。多态则允许我们编写更加…...

微信小程序:正确输出<小于,大于>符号

错误写法 1、如果直接输入<符号会直接报错&#xff0c;>能正常使用&#xff0c;如图标红的是错误写法 2、输入html的<&gt的写法&#xff0c;会原样输入符号 解决方法 采用变量的方式输出 1、js写入变量 2、wxml直接写...

uni-app tab 双击事件监听

1、data中定义属性&#xff0c;用于临时记录点击次数 tabClick: {touchNum: 0 },2、添加页面事件监听方法 onTabItemTap(e) {this.tabClick.touchNumsetTimeout(()>{if(this.tabClick.touchNum > 2){// 双击执行代码区}this.tabClick.touchNum 0}, 250) },个人博客&am…...

GIT 企业级开发学习 1_基本操作

本节主要命令&#xff1a; git init ls 不能列出 .git ls -a 列出 .git 创建本地仓库 1. 初始化 Git 仓库 git init • 初始化一个新的 Git 仓库&#xff0c;在当前目录下生成一个 .git 隐藏文件夹&#xff0c;用于存储版本控制信息。 2. 查看隐藏文件 ls -a • 使用 ls …...

Computed在Vue2、Vue3写法的不同

在 Vue 2 和 Vue 3 中&#xff0c;computed 的写法有一些区别&#xff0c;特别是在 Vue 3 中新增了组合式 API 和 setup 语法糖。以下是不同写法的详细比较&#xff1a; 1. Vue 2 选项式 API 写法 在 Vue 2 中&#xff0c;computed 是一个选项&#xff0c;直接在 computed 对…...

Hive集群安装部署

上传安装包并解压 cd /ddhome/tools tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /ddhome/bin/ cd /ddhome/bin/ mv apache-hive-3.1.2-bin hive注意&#xff1a;如果Hive要使用Spark计算引擎&#xff0c;需要重新编译Hive&#xff0c; 这里已经编译完毕 修改配置文件 cd …...

卸载干净 IDEA(图文讲解)

目录 1、卸载 IDEA 程序 2、注册表清理 3、残留清理 1、卸载 IDEA 程序 点击屏幕左下角 Windows 图标 -> 设置-控制面板->intellij idea 勾选第一栏 Delete IntelliJ IDEA 2022.2 caches and local history&#xff0c;表示同时删除 IDEA 本地缓存以及历史。 Delete I…...

Gitea代码仓服务搭建

特点与优势 轻量级:Gitea是一个轻量级的Git服务,提供了快速、稳定的代码托管和协作开发环境。它资源占用低,适合在资源受限的环境中运行。易于安装和部署:Gitea提供了简单易用的安装和部署方式,支持多种安装方式,包括二进制文件、Docker容器等,并提供了详细的文档和配置…...

什么情况会导致JVM退出?

大家好&#xff0c;我是锋哥。今天分享关于【什么情况会导致JVM退出&#xff1f;】面试题。希望对大家有帮助&#xff1b; 什么情况会导致JVM退出&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 JVM&#xff08;Java Virtual Machine&#xff0c;Java虚…...

docker 安装influxdb

docker pull influxdb mkdir -p /root/influxdb/data docker run -d --name influxdb -p 8086:8086 -v /root/influxdb/data:/var/lib/influxdb influxdb:latest#浏览器登录&#xff1a;http://192.168.31.135:8086&#xff0c;首次登录设置用户名密码&#xff1a;admin/admin1…...

TLS: WebRTC中ThreadManager的线程局部存储

1. 什么是线程局部存储&#xff1a; 线程局部存储&#xff08;TLS&#xff0c;Thread-Local Storage&#xff09;&#xff1a; 线程局部存储&#xff08;TLS&#xff09;允许每个线程保存一份独立的数据副本&#xff0c;避免多个线程共享数据导致的竞争问题。 每个线程可以根…...

[Qt] 万字详解 | 常用控件 | Button | Label | LCD | ProgressBar

目录 按钮类控件 1、Push Button 按钮 2、Radio Buttion 单选 click、press、release、toggled 的区别 3、Check Box 复选 4、Tool Button 显示类控件 1、Label 2、LCD Number 3、ProgressBar 4、Calendar Widget 按钮类控件 1、Push Button 按钮 概述&#xff1a…...

【数据仓库】hadoop3.3.6 安装配置

文章目录 概述下载解压安装伪分布式模式配置hdfs配置hadoop-env.shssh免密登录模式设置初始化HDFS启动hdfs配置yarn启动yarn 概述 该文档是基于hadoop3.2.2版本升级到hadoop3.3.6版本&#xff0c;所以有些配置&#xff0c;是可以不用做的&#xff0c;下面仅记录新增操作&#…...

ffmpeg八大开发库

‌FFmpeg八大库‌是指FFmpeg项目中最重要的八个库&#xff0c;它们各自承担不同的功能&#xff0c;共同构成了FFmpeg的强大功能。以下是这八大库的详细介绍&#xff1a; ‌libavcodec‌&#xff1a;负责音频和视频的编解码。它支持多种编解码器&#xff0c;如H.264、AAC、MP3、…...

Uniapp中使用`wxml-to-canvas`开发DOM生成图片功能

Uniapp中使用wxml-to-canvas开发DOM生成图片功能 在移动端开发中&#xff0c;生成图片是一个常见需求&#xff0c;例如用于分享海报、生成动态二维码等。在Uniapp框架中&#xff0c;我们可以通过wxml-to-canvas插件轻松实现将DOM转化为图片的功能。本文将详细介绍如何在Uniapp…...

【09】深入解析 Three.js 官网示例:下雪粒子特效与场景渲染的实现(webgpu_compute_particles_snow.html)

引言 Three.js 是一个强大的 JavaScript 库&#xff0c;用于在网页上创建和渲染 3D 场景。本文将深入分析一段 Three.js 官网示例代码&#xff0c;详细解释其实现思路和主要功能代码&#xff0c;帮助读者更好地理解和掌握 Three.js 的应用。官网代码地址&#xff1a;https://g…...

电子价签会是零售界的下一个主流?【新立电子】

电子价签&#xff0c;作为一种能够替代传统纸质标签的数字显示屏&#xff0c;已经在零售行业中展现出其巨大的潜力。它具有实时更新、集中管理、高效节能的特点&#xff0c;实现价格的实时更新&#xff0c;大大减少更新价格的工作量和时间。为消费者带来更加便捷、准确的购物体…...

uniapp——App下载文件,保存、打开文件(二)

uniapp如何下载文件、保存、打开文件 时光荏苒&#xff0c;2024即将过去&#xff01; 迈向2025&#xff0c;祝大家新的一年工作顺利、万事如意&#xff0c;少一点BUG&#xff0c;涨一点工资…↖(ω)↗ 文章目录 uniapp如何下载文件、保存、打开文件下载文件保存并打开文件处理 …...

如何轻松关闭 iPhone 上的 HEIC [HEIC 图像技巧]

您是否正在为关闭 iPhone 上的 HEIC 而烦恼&#xff1f;你不是一个人; Apple 的首选图像文件格式仍可能存在一些兼容性问题。当您与某人共享照片或尝试在Windows计算机上打开图像时&#xff0c;就会出现此问题。幸运的是&#xff0c;Apple 使关闭 HEIC iPhone 变得更加容易。 …...

库伦值自动化功耗测试工具

1. 功能介绍 PlatformPower工具可以自动化测试不同场景的功耗电流&#xff0c;并可导出为excel文件便于测试结果分析查看。测试同时便于后续根据需求拓展其他自动化测试用例。 主要原理&#xff1a;基于文件节点 coulomb_count 实现&#xff0c;计算公式&#xff1a;电流&…...

[paddle] 非线性拟合问题的训练

利用paddlepaddle建立神经网络&#xff0c;模拟有限个数据的非线性拟合 本文仍然考虑 f ( x ) sin ⁡ ( x ) x f(x)\frac{\sin(x)}{x} f(x)xsin(x)​ 函数在区间 [-10,10] 上固定数据的拟合。 import paddle import paddle.nn as nn import numpy as np import matplotlib.…...

Vue2: table加载树形数据的踩坑记录

table中需要加载树形数据,如图: 官网给了两个例子,且每个例子中的tree-props都是这么写的: :tree-props="{children: children, hasChildren: hasChildren}" 给我一种错觉,以为数据结构中要同时指定children和hasChildren字段,然而,在非懒加载模式下,数据结…...

全国计算机设计大赛大数据主题赛(和鲸赛道)经验分享

全国计算机设计大赛大数据主题赛&#xff08;和鲸赛道&#xff09;经验分享 这是“和鲸杯”辽宁省普通高等学校本科大学生计算机设计竞赛启动会汇报—大数据主题赛的文档总结。想要参加2025年此比赛的可以借鉴。 一、关于我 人工智能专业 计赛相关奖项&#xff1a; 2022年计…...