ARM-进入和退出异常中断的过程(六)

news2024/11/26 8:38:26

文章目录

    • 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/701275.html

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

相关文章

走近JDK 17,探索最新Java特性,拥抱未来编程!

大家好,我是小米,一个热爱技术分享的程序员。今天,我将为大家介绍一下JDK 17的新特性。JDK 17是Java开发工具包的一个重要版本,其中包含了许多令人激动的新功能和改进。在这篇文章中,我将详细介绍JDK 17中的各项特性&a…

Mathtype7Mac苹果ios简体中文版

对于很多人来说,每次编辑文字的时候遇到公式简直就是噩梦。像那些复杂的数学、物理还有化学公式,太难编辑出来了。 那么我们该怎么解决这些难题呢?其实很简单,用公式编辑器就行了。 公式编辑器,是一种工具软件&#…

前端开发爬虫首选puppeteer

很多前端同学可能对于爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 python 、php 等。当然这是在 nodejs 前了,nodejs 的出现,使得 Javascript 也可以用来写爬虫了。但这是大数据时代,数据的需求是不分前端还是后端…

基于Java会议管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

DSP f32 q15 q31 数据格式

+ V hezkz17进数字音频系统研究开发交流答疑 f32 q15 q31 分别代表什么数据格式? 2023/6/29 17:38:47 "f32"、"q15"和"q31"是不同的数据格式表示法: f32:它代表32位浮点数。在这种表示法中,32位被用来表示带有小数点的实数。其中,1位用于…

MySQL阿里巴巴规约

MySQL阿里巴巴规约 1.MySQL阿里巴巴规约【转载】 1.MySQL阿里巴巴规约【转载】

一步一步学OAK之十一:实现在RGB相机上进行对象跟踪

目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4:定义和加载模型相关的路径和标签Setup 5: 创建pipelineSetup 6: 创建节点Setup 7: 设置属性设置相机属性设置神经网络节点属性设置物体跟踪对象属性 Setup 8: 建立链接Setup 9: 连接设备并启动管道Setup …

剑指 Offer 33: 二叉搜索树的后序遍历序列

这道题运用的后序遍历一个很重要的性质:最后一个值是根节点,并且二叉搜索树的性质使得右子树的数全都大于左子树。 这里有三个重要的地方, 第一个是当Start值大于等于End(即为只有一个节点时,此时已经满足条件&#xf…

Revit中用自适应创建简单的瓦片族和切换构件的材质?

一、Revit中使用自适应创建瓦片族 在我们的日常生活中,屋顶的瓦片是我们经常都能够见到的,瓦片能够挡风遮雨也能够使建筑物带来古香古色的气息,那我们今天来学习如何使用自适应创建简单的瓦片族。 1.首先:我们打开自适应公制常规模…

usb转rs232全隔离设计参考

参考 CN-0373 特此记录 anlog 2023年6月29日

css基础(四)

目录 一、CSS 定位 1.1 为什么需要定位 1.2 定位组成 1.3 静态定位static(了解) 1.4 相对定位relative(重要) 1.5 绝对定位absolute(重要) 1.6 子绝父相的由来 1.7 固定定位fixed(重要&#xff…

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 异常解决

目录 问题 原因 解决 今天在开发一个DB同步工具的时候,因为采用的是原生的jdbcDriver链接数据库的,代码如下“ Class.forName(this.jdbcDriver); ”,我这边的配置是“ "jdbcDriver":"com.mysql.cj.jdbc.Driver" ”&am…

红帽限制 RHEL 代码访问,瞄准 Rocky Linux 和 AlmaLinux

CentOS Stream 是由 Red Hat 公司推出的一个开源操作系统,它与 Red Hat Enterprise Linux(RHEL)密切相关。事实上,CentOS Stream 是 RHEL 开发过程中的一个中间流程(在发布新的 RHEL 版本之前,Red Hat 会在…

基于最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇系统性实践技能提升

查看原文>>>基于最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇系统性实践技能提升 根据生态环评内容庞杂、综合性强的特点,依据生态环评最新导则,将内容分为4大篇章(报告篇、制图篇、指数篇、综合篇)、10大专题(生态环…

【TOOL】 提升ROS配置主从机效率的小工具

一、简介 因经常需要对不同机器配置主从机(不同机器的主机名一致,IP地址为 “192.168.101.*** ”格式),故整理此脚本来提高自己频繁切换机器和主从机/单机模式的切换效率,进行一个命令行配置/取消主从机模式。 二、配置步骤 1.编辑脚本文件…

QTableWidget篇章学习

QTableWidget篇章学习 【1】UI设计【2】效果演示【3】QTableWidget简介【4】QTableWidget常用方法【5】QTableWidget设置样式表【6】源码头文件源文件 【1】UI设计 【2】效果演示 【3】QTableWidget简介 QTableWidget是Qt框架中提供的用于显示表格内容的小部件之一。它是基于Q…

大佬总结入职阿里,软件测试常见基础题绝不能忘

什么是软件测试? 正向思维:验证程序是否正常运行,以及是否达到了用户预期的需求。 逆向思维:通过执行测试用例发现程序的错误和缺陷。 关键字:正常运行、用户需求、发现错误。 软件测试的目的是什么? 找出软…

Vue数据代理

数据代理: 1.Vue中的数据代理: 通过vm对象来代理data对象中属性的操作(读/写) 2.Vue中数据代理的好处: 更加方便的操作data中的数据 3.基本原理: 通过Object.defineProperty()把data对象中所有属性添加到vm…

MySQL数据库总结 之 函数命令总结

MySQL命令语句中的函数包含四种: 字符串函数数值函数日期函数流程函数 前两篇关于MySQL的博客,地址如下: MySQL数据库 && SQL语言命令总结 && 数据类型、运算符和聚合函数汇总_Flying Bulldog的博客-CSDN博客https://blog.…

Flink 源算子之 DataGeneratorSource DataGenerator

目录 1、功能说明 2、API使用说明 3、代码示例 1、功能说明 从Flink1.1开始提供了DataGen连接器,它提供了Source类的实现(可并行的源算子),用来生成测试数据,在本地开发或者无法访问外部系统(如kafka)时&#xff0c…