【ARM】-进入和退出异常中断的过程

news2024/11/18 12:31:50

文章目录

    • ARM 处理器对异常中断的响应过程
    • 从异常中断处理程序中返回

ARM 处理器对异常中断的响应过程

ARM 指令为三级流水线:取地,译码和执行

进入中断的时候 LR = PC -4
在这里插入图片描述
当出现异常时,ARM 内核自动执行以下操作

  • 将 cpsr 寄存器的值保存到 spsr_mode 寄存器中,备份寄存器指明了当前处理器的操作模式
  • 将程序返回地址存放在 lr_mode 寄存器中
  • 将CPSR模式位修改为与异常类型相关联的模式
    • CPSR 寄存器的其他位取决于 CP115 控制寄存器设置的值
    • T bit 位被设置为 CP15 TE bit
    • J bit 被清零,E bit 被设置为 EE bit
  • 将 PC 指向异常向量表对应的地址
    在这里插入图片描述

从异常中断处理程序中返回

中断向量表
在这里插入图片描述
链接寄存器(LR)用于在异常处理后存储适当的PC 地址,当程序返回时,LR 应该做出相应的调整。
从表中可以看到 ARM 共有 7 中异常,其中断向量表如下:

    ldr     pc, =Reset_Handler           /* Reset                  */
    ldr     pc, =Undefined_Handler       /* Undefined instructions */
    ldr     pc, =SVC_Handler             /* Supervisor Call        */
    ldr     pc, =PrefAbort_Handler       /* Prefetch abort         */
    ldr     pc, =DataAbort_Handler       /* Data abort             */
    .word   0                            /* RESERVED               */
    ldr     pc, =IRQ_Handler             /* IRQ interrupt          */
    ldr     pc, =FIQ_Handler             /* FIQ interrupt          */

在这里插入图片描述
异常程序返回有两个事情要做:

  • 从 spsr_mode 寄存器中恢复 cpsr 寄存器
  • 将程序返回地址写到 pc 寄存器

在这里插入图片描述

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

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

相关文章

Python高光谱遥感数据处理与高光谱遥感机器学习方法教程

详情点击链接:Python高光谱遥感数据处理与高光谱遥感机器学习方法 第一:高光谱 一:高光谱遥感 01)高光谱遥感 02)光的波长 03)光谱分辨率 04)高光谱遥感的历史和发展 二:高光谱传感器与数据获取 01)高光谱遥感成像原理与传…

C语言---判断当前计算机大小端问题

C语言—判断当前计算机大小端问题 文章目录 C语言---判断当前计算机大小端问题一、方法一二、方法二&#xff1a;使用联合体三、方法二的理解 一、方法一 代码如下 #include<stdio.h> //判断当前机器的大小端问题 int main() {int a 1;//0x 00 00 00 01//低----------…

管理类联考——数学——技巧篇——四大招——第一招 拿下应用题,稳江山

第一招 拿下应用题&#xff0c;稳江山 应用题占 6 个题&#xff0c;计 18 分&#xff0c;拿分策略 【2 易&#xff0c;2 中&#xff0c;2 难】&#xff0c;【4 必考&#xff0c;2 可选】&#xff0c;【4 固定&#xff0c;2 灵活】核心&#xff1a;等量关系 等量关系 类型 设未…

【C++】-多态的底层原理

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

电机故障诊断(python程序)

代码运行环境要求&#xff1a;TensorFlow版本>2.4.0&#xff0c;python版本>3.6.0 运行效果视频&#xff1a;电机故障诊断&#xff08;python代码&#xff09;_哔哩哔哩_bilibili 1.电机常见的故障类型有以下几种&#xff1a; 轴承故障&#xff1a;轴承是电机运转时最容…

文心一言大模型测评

访问地址 文心一言服务请求地址&#xff1a;文心千帆大模型 (baidu.com) 新手可以先实名认证后再申请使用 测评 普通对话 这里先和他进行简单的问题讨论 编程相关 询问他有关代码的内容 确实可以生成代码&#xff0c;但不像chatgpt那样提供复制按钮 我们接下来让他生成…

小狐狸AI付费创作系统chatgpt管理后台-前端界面vue源码增加新的登录方式配置

前面我们已经搭建好了小狐狸AI付费创作系统chatgpt管理后台vue前端环境 现在&#xff0c;就修改一下设置地方&#xff0c;使其可以配置使用哪种登录方式 查看路由找界面 一般我们找界面源码&#xff0c;先看一下路由部分&#xff0c;就能知道在哪个界面里 /src/router/index.js…

电赛学习2 使用qtdesigner

1.下载qtdesigner与PyUIC (7条消息) 如何在Pycharm中安装QT DesignerPyUIC_pycharm qt_Trouble..的博客-CSDN博客 2.使用qtdesigner设计界面 &#xff08;1&#xff09;点击创建&#xff0c;生成的这个Form窗口就是我们最后生成的窗口 &#xff08;2&#xff09;预览设计的结…

字节跳动软件测试岗,前两面过了,第三面HR天坑竟然跟我说……

阎王易见&#xff0c;小鬼难缠。我一直相信这个世界上好人居多&#xff0c;但是也没想到自己也会在阴沟里翻船。我感觉自己被字节跳动的HR坑了。 在这里&#xff0c;我只想告诫大家&#xff0c;offer一定要拿到自己的手里才是真的&#xff0c;口头offer都是不牢靠的&#xff0…

【全面的数据科学教程——《Python数据科学项目实战》】

数据科学项目有很多灵活的部分&#xff0c;需要练习和技巧才能让所有代码、算法、数据集、格式和可视化协调工作。本书将引导你完成5个真实项目&#xff0c;包括根据新闻标题跟踪疾病暴发、分析社交网络以及在广告点击数据中寻找相关模式。 《Python数据科学项目实战》并不止于…

abp(net core)+easyui+efcore实现仓储管理系统——ABP升级7.3

第四个问题 升级过程中碰到的第四个问题&#xff1a;Value cannot be null. (Parameter unitOfWork) 在Visual Studio 2022 的解决方案资源管理器中&#xff0c;找到ABP.TPLMS.Application项目中的Modules文件夹中的ModuleAppService.cs文件&#xff0c;是这个文件中的GetAll()…

临时文档4

Redis有哪些数据类型 Redis主要有5种数据类型&#xff0c;包括String&#xff0c;List&#xff0c;Set&#xff0c;Zset&#xff0c;Hash&#xff0c;满足大部分的使用要求 Redis的应用场景 总结一 计数器 可以对 String 进行自增自减运算&#xff0c;从而实现计数器功能。…

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测 目录 区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRLSTM长短期记忆神经网络分位数回…

Rancher 安装部署

1、执行如下docker 命令 rootubuntu:~# docker run --namerancher -d --privileged --restartunless-stopped -p 30040:80 -p 30050:443 rancher/rancher:latest 这里将80端口映射成了30040端口&#xff0c;将443端口映射成了30050端口&#xff0c;所以在执行上面的名字之前&…

VSPD虚拟串口软件安装及使用

文章目录 前言一、软件安装1、Configure Virtual Serial Port Driver(VSPD)2、串口调试助手 二、使用步骤1、模拟串口2、配置串口3、收发测试①、COM8&#xff08;发&#xff09; ---> COM9&#xff08;收&#xff09;②、COM9&#xff08;发&#xff09; ---> COM8&…

DevExpress WPF Tree List组件,让数据可视化程度更高!(一)

DevExpress WPF Tree List组件是一个功能齐全、数据感知的TreeView-ListView混合体&#xff0c;可以把数据信息显示为REE、GRID或两者的组合&#xff0c;在数据绑定或非绑定模式下&#xff0c;具有完整的数据编辑支持。 DevExpress WPF 拥有120个控件和库&#xff0c;将帮助您…

XCP详解「3.3·A2L信号添加和更新」

返回 XCP详解「总目录」 目录 1、ELF/MAP文件发生变更 2、添加新信号 1、ELF/MAP文件发生变更 elf文件更新后&#xff0c;状态栏会有图标闪烁提示 ​ 选个要更新的map文件即可 ​ 2、添加新信号 在Offlin的状态下进入编辑A2L文件&#xff0c;编辑过程参照3.1 ​ AS…

华为数通HCIA-网络模型

TCP 网络通信模式 作用&#xff1a;指导网络设备的通信&#xff1b; OSI七层模型&#xff1a; 7.应用层&#xff1a;由应用层协议&#xff08;http、FTP、Telnet.&#xff09;为应用程序产生对应的数据&#xff1b; 6.表示层&#xff1a;将应用层产生的数据转换成网络设备看…

Java毕业设计—爱宠医院管理系统设计与实现【含源码、论文】

爱宠医院管理系统 获取数论文、代码、答辩PPT、安装包&#xff0c;可以查看文章底部 一、 如何安装及配置环境 要运行整个爱宠医院管理系统需要安装数据库&#xff1a;MySQL 5.5&#xff0c;开发工具&#xff1a;JDK 1.8&#xff0c;开发语开发平台&#xff1a;Eclipse&…

使用mydumper进行数据库备份还原

1.使用school数据库 create database school; use school;2.创建student&#xff0c;score表 student表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VAR…