基于IMX6ULLmini的linux裸机开发系列七:中断处理流程
中断上下文
cpu通过内核寄存器来运行指令并进行数据的读写处理的,它在进入中断前一个时刻的具体值,称为中断上下文
中断上下文是指CPU在进入中断之前保存的寄存器状态和其他相关信息。当CPU接收到中断请求时,它会保存当前正在执行的指令的状态,并将寄存器的值切换到一个特定的上下文中,以便处理中断。(保护现场)
中断上下文包括了CPU寄存器的值、程序计数器(PC)的值、堆栈指针(SP)的值,以及其他与中断处理相关的状态信息。这些信息被保存在内存中的特定位置,通常称为中断向量表或中断描述符表。
当中断处理程序完成后,CPU会从中断上下文中恢复之前的寄存器状态,继续执行被中断的程序或任务。这种上下文切换的过程称为中断处理过程
具体流程
-
初始化 IRQ 模式栈指针:在进入中断之前,需要为 IRQ 模式分配一个栈空间,并将栈指针初始化到该空间。
-
进入 IRQ 模式:CPU 切换到 IRQ 模式,以便执行中断处理程序。
-
CPSR 寄存器:保存当前运行状态的 CPSR 寄存器的值,以便在中断处理完成后恢复。
-
保存现场:将当前正在执行的指令的上下文保存到栈中。这包括保存通用寄存器、保存 LR(链接寄存器,保存返回地址)、保存 SPSR(保存当前程序状态寄存器)等。
-
获取中断编号:读取中断控制器(GIC)相关寄存器中的值,以获取触发中断的编号。
-
读取 GIC 基地址和 GICC 基地址:从系统配置中获取 GIC(中断控制器)的基地址和 GICC(GIC CPU Interface)的基地址。
-
GICC_IAR 寄存器:读取 GICC_IAR 寄存器,该寄存器保存着最高优先级中断的编号。
-
执行中断处理函数:根据中断编号,在 IRQ 中断服务表中找到对应的中断处理函数,并执行该函数。
-
还原现场:从栈中恢复之前保存的现场信息,包括恢复通用寄存器、恢复 LR、恢复 SPSR 等。
-
返回原程序:根据之前保存的返回地址,从中断处理程序返回到原来被中断的程序继续执行。
cpsr寄存器
![]()
-
bit31:负数标记位
-
bit30:零标志位
-
...
-
M[4:0]:运行模式控制位
-
10000:User 模式
-
10001:FIQ 模式
-
10010:IRQ 模式
-
10011:SVC模式
-
10111:Abort模式
-
11011:Undef模式
-
11111:System模式
-
10110:Monitor模式
-
11010:Hyp模式
-
mrs <Rt>,cpsr //读cpsr msr cpsr,<Rt> //写cpsr cps #xx //写立即数到cpsr中的M[4:0]
GICC基地址
4.1.3 CPU interface register ma (GIC官方手册)
三级流水线
-
取指令(pc)
-
译指令
-
执行指令
-

lr = pc = 当前执行指令+8 当前执行指令的下一条:lr-4


arm:PC=当前执行指令地址+8_armpc+8_aoXiaMi的博客-CSDN博客
这里还看不太懂,先继续学算了
相关文章:
基于IMX6ULLmini的linux裸机开发系列七:中断处理流程
中断上下文 cpu通过内核寄存器来运行指令并进行数据的读写处理的,它在进入中断前一个时刻的具体值,称为中断上下文 中断上下文是指CPU在进入中断之前保存的寄存器状态和其他相关信息。当CPU接收到中断请求时,它会保存当前正在执行的指令的状…...
Postman软件基本用法:浏览器复制请求信息并导入到软件从而测试、发送请求
本文介绍在浏览器中,获取网页中的某一个请求信息,并将其导入到Postman软件,并进行API请求测试的方法。 Postman是一款流行的API开发和测试工具,它提供了一个用户友好的界面,用于创建、测试、调试和文档化API。本文就介…...
react go实现用户历史登录列表页面
refer: http://ip-api.com/ 1.首先需要创建一个保存用户历史的登录的表,然后连接go 2.在用户登录的时候,获取用户的IP IP位置,在后端直接处理数据即可(不需要在前端传递数据) (1)增加路由&am…...
如何做好服务性能测试
一、什么是性能测试 新功能上线或切换底层数据库或扩容调优,根据实际业务场景的需要,做必要的性能压测,收集性能数据,作为上线的基准报告。 性能测试一般分一下几个阶段: 1. 性能测试 并发量小(jmeter 并…...
速通蓝桥杯嵌入式省一教程:(五)用按键和屏幕实现嵌入式交互系统
一个完整的嵌入式系统,包括任务执行部分和人机交互部分。在前四节中,我们已经讲解了LED、LCD和按键,用这三者就能够实现一个人机交互系统,也即搭建整个嵌入式系统的框架。在后续,只要将各个功能加入到这个交互系统中&a…...
虚拟拍摄,如何用stable diffusion制作自己的形象照?
最近收到了某活动的嘉宾邀请,我将分享: 主题:生成式人工智能的创新实践 简要描述:从品牌营销、智能体、数字内容创作、下一代社区范式等方面,分享LLM与图像等生成式模型的落地应用与实践经验。 领域/研究方向ÿ…...
开启AI创新之旅!“华为云杯”2023人工智能应用创新大赛等你来挑战
简介 近年来,人工智能技术的发展如日中天,深刻地改变着我们的生活方式和产业格局。 为了培养AI人才,持续赋能AI企业,推进国家新一代人工智能开放创新平台建设,打造更加完善的AI技术创新生态,华为…...
npm和node版本升级教程
cmd中查看本地安装的node版本 node -v //查询node的位置 where node2.官网下载所需要的node版本,安装在刚查出来的文件夹下,即覆盖掉原来的版本 3.查看node版本是否已经更新 4.查看npm版本是否和node版本相匹配 cnpm install -g npm...
C++入门篇9---list
list是带头双向循环链表 一、list的相关接口及其功能 1. 构造函数 函数声明功能说明list(size_type n,const value_type& valvalue_type())构造的list中包含n个值为val的元素list()构造空的listlist(const list& x)拷贝构造list(InputIterator first, InputIterator…...
STM32基于CubeIDE和HAL库 基础入门学习笔记:物联网项目开发流程和思路
文章目录: 第一部分:项目开始前的计划与准备 1.项目策划和开发规范 1.1 项目要求文档 1.2 技术实现文档 1.3 开发规范 2.创建项目工程与日志 第二部分:调通硬件电路与驱动程序 第三部分:编写最基础的应用程序 第四部分&…...
Hive on Spark (1)
spark中executor和driver分别有什么作用? Spark中Executor 在 Apache Spark 中,Executor 是分布式计算框架中的一个关键组件,用于在集群中执行具体的计算任务。每个 Executor 都在独立的 JVM 进程中运行,可以在集群的多台机器上…...
PostgreSQL基本操作总结
安装按PostgreSQL数据库后,会默认创建用户postgres和数据库postgres,这个用户是超级用户,权限最高,可以创建其他用户和权限,在实际开发过程中,会新创建用户和业务数据库,本文主要介绍用户权限和…...
Jakarta 的 Servlet 下BeanUtils的日期处理 和JSTL 的使用
jsp优于性能等问题已经不被spring boot等支持,如果想使用jsp和jstl标签库需要引入一下依赖。 <!-- 用jakarta.servlet.jsp.jstl,用org.glassfish.web--><dependency><groupId>jakarta.servlet.jsp.jstl</groupId><art…...
聚焦电力行业CentOS迁移,麒麟信安受邀参加第六届电力信息通信新技术大会暨数字化发展论坛并发表主题演讲
为加快推进“双碳”目标下的新型能源体系和新型电力系统建设,深化新一代数字技术与电力业务的融合发展,促进电力行业关键技术自主创新、安全可控,助力电力企业数字化转型升级和高质量发展,2023年8月9-11日,第六届电力信…...
华为OD真题--分月饼--带答案
1. 华为OD机考题 答案 2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 2023年华为OD真题机考题库大全-带答案(持续更新) 2. 面试题 一手真实java面试题:2023年各大公司java面试真题汇总--…...
帆软大屏2.0企业制作
 数字化观点中心 / 当前页 如何从0-1制作数据大屏,我用大白话给你解释清楚了 文 | 商业智能BI相关文章 阅读次数:18,192 次浏览 2023-06-08 11:51:49 好莱坞大片《摩天营救》中有这么一个场景:  你可以看见反派大b…...
【学习笔记之opcua】使用Python获取opcua数据
Python与OPC UA的应用 示例代码 将代码放入spyder中运行后,出现下面这个错误 没有‘opcua’,那我们就下载pip install opcua 之后出现下面这个错误 问问题大不,安装语句写错了 正经安装语句是 !pip install opcua 读取opcua协议数据测试 …...
apache doris和StarRocks的区别
记录一下最新要用到2个新数据库的区别 Apache Doris是一个分布式的列式存储系统,它的设计目标是提供大规模数据处理的可靠性和高性能。Doris采用了集群方式,通过将数据分布在多个机器上进行处理来提高性能,并提供了SQL查询接口方便用户使用。…...
文心一言最新重磅发布!
8月16日,由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023举办。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰以《大语言模型为通用人工智能带来曙光》为题,阐述了大语言模型具备理解、生成、逻辑、记忆…...
css整体使用
文章目录 html与csshtml、css与排版响应式与自适应布局自适应布局响应式布局 css规则class、id、以及默认的标签名的优先级 css书写位置flex整体逻辑 bootstrap资源 html与css html负责网页功能,css负责网页美化;浏览器本身有一套默认的css样式…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
大数据驱动企业决策智能化的路径与实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:数据驱动的企业竞争力重构 在这个瞬息万变的商业时代,“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

