ARM 异常处理(21)

news2024/11/13 18:48:20

异常的流程:

首先: 在硬件上阶段: 这里是4大步3小步

然后是      异常处理: 这里主要是保存现场,进行异常处理

然后是      异常返回:  主要指 恢复现场, 再跳转回去。

首先硬件上:

4大步3小步。

第一大步: 当异常发生时,会将 CPSR的内容保存到目前模式的SPSR中,不知道需不需要手动执行。

第二大步: 第一小步,硬件会自动的设置 异常的类型,主要是设置 CPSR的 0-4 位,第二小步, 然后切换到arm 状态下,就是硬件自动设置 CPSR的 第5位 为0 , 第三小步,同时cpu 会自动的关闭CPSR的 中断, 也就是设置I位。

第三大步: 在进入异常处理之前,硬件会自动的将当前的PC的值减4 放到LR中。(它的作用是,将来会将LR的值,赋值到PC中,这里在赋值到PC中,LR的值, 会由于异常的类型的不同,计算的方法也不同)。

第四大步: 硬件会自动的跳到 中断向量表,中断向量表只是保存了一个 跳转的地址。cpu 根据异常的类型跳转到 固定的内存地址。

异常向量表如图

异常处理:

保存现场,进行处理。

在异常处理的最开始, 需要先要保存现场,

STMFD  SP_excep!,  {R0 – R12,  LR_excep}

这是将所有的寄存器全都保存到了栈中 。

包括 LR的值。

然后就开始进行 中断处理了。

注意: 这里的栈 , 是对应的异常模式的栈。

然后是异常的返回

首先是将 保存在栈中的 现场 全部恢复到 寄存器中

然后将SPSR 恢复到 CPSR中。

然后将 LR的值, 赋值到PC中,这里 有一个如何计算的问题。这里就是在 返回地址的修正。

对于 中断的话,是这样的。

SUBS    PC,LR_irq,#4  ; 一般中断
SUBS    PC,LR_fiq,#4  ; 快速中断

 这是因为,当中断处理时, PC的值已经更新了,所以PC指向的是, 当前指令,往下数3条指令,硬件会自动的 将PC-4的值,保存到LR中,我们之前已经将LR保存到栈中,现在又从栈中取出了LR的值, 现在还要再-4 才能赋值到PC中。

对于SWI 异常来说,当异常发生时,PC的值还未更新,它指向的是,当前指令的向下两条指令,由于硬件自动的将PC-4 保存到LR中了,所以这里就不用动了。指令如图:

MOV  PC,  LR_svc

其他的异常就可以先不看了。

在进行 寄存器恢复的时候,使用的命令。

LDMFD  SP_excp!,  {r0-r12,  pc}^

注:SP_excep为对应异常模式下SP,^符号表示恢复SPSR_excep到CPSR。

中断向量表 可以通过协处理器, 定位到 0xFFFF0000 处。

至于 中断做什么 可以由我们指定了。

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

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

相关文章

Scalefit为外骨骼辅助设备提供直观的损伤减轻测量方案

外骨骼辅助设备是有效减轻工厂中工人遭受肌肉骨骼类疾病损伤的有效工具,但想要更加精确直观的看到外骨骼设备能够为工人提供多少精确到数字的帮助,则需要专业的测量工具来实现。 Scalefit人体工程学分析软件 scalefit人体工程学分析软件让作业环境更安全…

北斗GPS车载定位终端,物流货运数智化效率助手

物流行业,作为国民经济的动脉,其效率与成本控制是企业竞争力的关键。随着科技的不断进步,北斗GPS车载定位终端的出现,正成为物流行业数智化转型的加速器,极大地提升了物流货运的效率与安全性。 北斗GPS车载定位终端&a…

计算机毕业设计python停车场车位推荐管理系统y4uzk

目录 博主介绍技术栈🌟文末获取源码数据库🌟详细视频演示具体实现截图系统设计数据库设计解决的思路python-flask核心代码部分展示可行性论证个人心得操作可行性源码获取 博主介绍 👇🏻 博主介绍:👇&#…

【软件测试专栏】软件测试 — 用例篇

博客主页:Duck Bro 博客主页系列专栏:软件测试专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 软件测试 — 用例篇 关键词:测试用例概念、测试用例的…

【基础】Three.js加载纹理贴图、加载外部gltf格式文件

1. 模型使用纹理贴图 const geometry new THREE.BoxGeometry(10, 10, 10);const textureLoader new THREE.TextureLoader(); // 创建纹理贴图加载器const texture textureLoader.load("/crate.gif"); // 加载纹理贴图const material new THREE.MeshLambertMater…

运维问题0001:MM模块-MIGO收货报错“消息号 M7036 对于采购订单********无收货可能”

1、问题解析: 该报错为SAP标准报错类型,针对公司不同配置/业务设计/校验逻辑,导致该问题原因比较多。 常见的问题总结如下: 1)输入的PO信息有问题(例如:PO输入错误/PO删除状态/PO冻结状态/PO已完成收货等…

HCIE认证要学多久?3个方面决定HCIE学习时长

HCIE认证作为华为公司推出的顶级专业认证,已经成为网络技术领域内的一个标杆。 它不仅象征着专业技能的高峰,也是许多IT专业人士职业发展的重要里程碑。 HCIE作为华为高级认证虽然可以不需要满足任何条件直接报考,但掌握必要的知识内容必不可…

MySQL复习2

高级查询 准备 create database greatselect; use greatselect;drop table if exists class; create table class (cid int(11) not null auto_increment,caption varchar(32) not null,primary key (cid) )engine innoDB AUTO_INCREMENT5 default charset utf8;create tab…

报考条件、材料、流程?关于CISP认证,你必须要了解这些

信息安全一直是一个火热的话题,在近两年又被推上了高峰。对此,相关认证也不例外。 很多朋友都想get一本安全方向的证书,在广大安全方向的认证中,CISP可谓是发展迅猛,并越来越广为人知,也越来越受到IT从业者…

python Bokeh库学习记录

First steps 2: 添加和自定义渲染器 在之前的入门指南中,你使用了Bokeh的figure()函数来绘制折线图。 在本节中,你将使用不同的渲染函数来创建各种其他类型的图表。你还将自定义你的图像外观。 渲染不同的图形符号 Bokeh的绘图界面支持多种不同的图形…

古典显示格式解一偏微分方程并绘制结果的彩色图

解如下偏微分方程 以上公式的Latex代码 \begin{cases}\frac{\partial u}{\partial t}a\frac{\partial ^2u}{\partial x^2}\,\,,0<x<1,t>0\\u\left( x,0 \right) 4x\left( 1-x \right) \,\,,0\leqslant x\leqslant 1\\u\left( 0,t \right) u\left( 1,t \right) 0 ,t\g…

补题篇--codeforces

传送门&#xff1a;Problem - G - Codeforces 题意&#xff1a; 思路&#xff1a; 注意&#xff1a; n 的范围很小&#xff0c;大概率考察状态压缩 因此这个题可以考虑用 状压dp f[i][j] 表示状态为 i 的选法&#xff0c;以第 j 首歌为结尾的播放列表中的歌曲总数 f[ i | …

生活方式对人健康影响非常大 第三篇

身体健康因素中 生活方式占到60% 赶紧去调整自己哪错了 上游的生活方式管理 是药三分毒 药物会影响身体肝肾功能,代谢 所以你要去找上游到底是我哪错了 短板越多 个健康状态越差 饮食管理是生活方式管理中难度最大的 原则1:与基因相对应相平衡 只吃素 会导致大脑萎…

【书生大模型实战营】进阶岛 第6关 MindSearch 快速部署

文章目录 【书生大模型实战营】进阶岛 第6关 MindSearch 快速部署MindSearch 部署到Github Codespace 和 Hugging Face Space创建开发机 & 环境配置MindSearch下载及环境配置获取硅基流动API Key作业 - 基础任务在Github codespaces 启动 MindSearch通过 Github Codespace …

spring框架4 - bean加载

本节内容&#xff1a;beanFactory.getBean("user"); Testvoid testGetBean() {Gun gun beanFactory.getBean("m416", Gun.class);log.info("gun{}", gun);} public <T> T getBean(String name, Class<T> requiredType) throws Bea…

2024年威胁暴露管理两大新趋势

文章目录 前言一、威胁暴露管理的两大新类别二、EAP:减少对CVSS的依赖三、AEV:锁定现实威胁四、CTEM实施面临的挑战与应对策略五、主动风险管理的新时代前言 2024年,安全运营(SecOps)领域迎来重大变革。根据Gartner最新发布的《安全运营技术成熟度曲线》报告,持续威胁暴…

一款人脸识别的芯片内部

三年前在一家3D人脸识别的芯片公司&#xff0c;先后做过两个稍具规模的芯片项目&#xff0c;因为各种原因&#xff0c;这些最终都没有上市&#xff0c;成为沉寂在实验室的产物。但是这些芯片的总体设计都颇具匠心&#xff0c;自己在当时也很有触动&#xff0c;现在拿出一点来供…

揭秘难以复现Bug的解决之道:堆栈分析实战

目录 引言 友情提示难以复现的Bug之痛 寄存器(SP、LR)详解 SP寄存器&#xff1a;堆栈的指路明灯LR寄存器&#xff1a;函数调用与异常处理的桥梁 问题分析与解决流程揭秘 保存现场分析堆栈数据 堆栈结构入栈顺序 案例 J-Link工具 常用命令保存RAM数据到本地 分析栈基本信息 分…

【最新华为OD机试E卷】最大报酬(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

【Python】企业排名、地域分布与词云分析可视化

目录 数据处理 Pyecharts 各国数量 分布地图 数量占比 城市分布 营业收入 利润转化 数据处理 2021世界五百强企业数据&#xff0c;包含公司名称、公司链接、营业收入(百万美元)、利润(百万美元)、国家等信息。数据集下载&#xff1a;Python企业排名、地域分布与词云分…