arm中断保护和恢复_浅谈ARM处理器的七种异常处理

昨天的文章,我们谈了ARM处理器的七种运行模式,分别是:用户模式User(usr),系统模式System(sys),快速中断模式(fiq),管理模式Supervisor(svc),外部中断模式(irq),数据访问中止模式Abort(abt),未定义指令中止模式Undfined(und)。

今天我们来谈谈ARM处理器所支持的七种异常处理。

ab4868a3e163515f1da8fabc97df697b.png

ARM处理器的异常

当程序在正常执行过程中,出现暂时停止时,我们称之为发生了异常。比如说,在程序执行过程中,接到一个外部的中断申请。

处理器在接到中断申请之后,一般要经过下面的步骤:

  1. 保留当前处理器状态;
  2. 处理中断;
  3. 返回中断前状态,继续执行中断前程序。

当有多个中断同时申请时,处理器将按照优先级,顺次进行处理。

需要指出的是,异常并不完全等同与中断,中断只是ARM所支持异常类型的一种。

d28aaba727ec73b60c885ace7662ba10.png

ARM所支持的异常类型

ARM体系处理器支持的异常处理有7种,下表列出了ARM体系处理器支持的异常及各异常的含义。

  • 复位

在复位电平有效时,就会产生复位异常,程序跳转到复位处理程序处执行。复位向量地址是0x00000000开始连续四个字节。复位异常通常用在:系统加电时,系统复位时,跳转到复位向量地址。

  • 未定义指令

当遇到不能处理的指令时,产生未定义指令异常。向量地址为:0x00000004开始连续四个字节。

  • 软件中断

执行SWI指令产生,用于用户模式下的程序调用特权操作指令。在实时操作系统(RTOS)中可以通过该机制实现系统功能调用。向量地址为:0x00000008开始连续四个字节。

  • 指令预取中止

处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生此类异常。向量地址为:0x0000000C开始连续四个字节。

  • 数据中止

处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。向量地址为:0x00000010开始连续四个字节。

  • IRQ

外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常。向量地址为:0x00000018开始连续四个字节。

  • FIQ

快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。向量地址为:0x0000001C开始连续四个字节。

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

如果一个异常出现,复位异常会立即中止当前指令执行,除此之外的其他异常,处理器会尽可能完成当前指令,然后再去处理异常。对异常的响应一般分为以下几步:

  1. 保存下一条指令的地址(PC)到相应连接寄存器LR_mode中,当处理完异常返回时,从异常发生前的地址处,重新开始执行。
  2. 将CPSR的内容复制到,将要执行的异常模式对应的SPSR_中。
  3. 设置当前状态寄存器CPSR的相关位。
  4. 强制PC从相关的异常向量地址,取下一条指令执行,从而跳转到相应的异常处理程序处。
1aec1475d58675980cf4f4ebb868b19b.png

ARM处理器从异常处理中返回过程

在处理完异常之后,恢复用户任务的正常执行,即从异常处理中返回。ARM处理器从异常中返回,一般分为以下几步:

  1. 从处理程序的保护堆栈中,恢复异常处理中用过的用户寄存器。
  2. 将相应SPSR_内容复制回CPSR中,以恢复异常出现前的程序状态。若在进入异常处理时设置了中断控制位,要在此时清除。
  3. 将连接寄存器LR_的值减去相应的偏移量后送到PC中。

小结

今天我们谈了ARM处理器的七种异常情况,并介绍了对异常的响应过程,和返回过程。深入了解今天的内容,是使用ARM处理器实现嵌入式系统编程的前提。

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

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

相关文章

Queue —— JUC 的豪华队列组件

目录引言一、Queue 的继承关系1.1 Queue 定义基础操作1.2 AbstractQueue 为子类减负1.3 BlockingQueue 阻塞式Queue1.4 Deque 两头进出二、Queue 的重要实现三、BlockingQueue 的实现原理四、Queue 在生产者消费者模式中的应用五、Queue 在线程池中的应用六、ConcurrentLinkedQ…

daad转换器实验数据_箔芯片电阻在高温应用A/D转换器中的应用

工业/应用领域高温:地震数据采集系统、石油勘探监测、高精度检测仪产品采用:V5X5 Bulk Metal (R) Foil芯片电阻案例介绍TX424是一个完整的4通道24位模数转换器,采用40脚封装。该设计采用最先进设计方案,两个双通道24位调节器和一个…

excel分段排序_学会这个神操作,报表填报不再五花八门,效率远超Excel

在报表工作人员的的日常工作中,常常要面临统计混乱的终端用户输入的问题。由于无法准确限制用户的输入内容,所以在最终进行数据统计时,常常会出现数据不合法的情况。为此需要花费大量的人力和时间核对校验数据。举个简单的例子,某…

IDEA——必备插件指南

目录一、Free-Mybatis-Plugin二、Lombok三、jclasslib Bytecode Viewer一、Free-Mybatis-Plugin 二、Lombok 三、jclasslib Bytecode Viewer 学习 class 文件的必备插件。 使用简单,安装后可以在菜单 View 中看到 show bytecode with jclasslib: 效果…

jitter 如何优化网络_如何做好关键词优化网络?

越来越多的传统企业开始建立自己的网站,进而不断的推广自己的产品。为了能够让自己的企业网站出现在搜索引擎的首页,现在最常用的手段就是竞价排名和关键词优化网络。往往很多企业会选择关键词优化网络这种方式来推广自己的网站,对于新手seoe…

python学生名片系统_Python入门教程完整版400集(懂中文就能学会)快来带走

如何入门Python?权威Python大型400集视频,学了Python可以做什么?小编今天给大家分享一套高老师的python400集视频教程,里面包含入门进阶,源码,实战项目等等,,不管你是正在学习中&…

JVM——详解类加载过程

导航一、过程概述二、Loading2.1 类加载器2.2 双亲委派机制2.3 类在内存中的结构三、Linking四、Initializing一、过程概述 java 源文件编译后会生成一个 .class文件存储在硬盘上。 在程序运行时,会将用到的类文件加载到 JVM 内存中。从磁盘到内存的过程总共分为三…

下载 Java 学习的权威文档

JVMS 和 JLS 文档的下载 快速直达: https://docs.oracle.com/javase/8/ --> Java Language and Virtual Machine Specifications jvm specification 和 java language specification 是Java 学习的两个最权威的文档。如果你用的是 Java 8,就可以去下载…

iso图像测试卡_4700万像素 五轴防抖 徕卡正式发布SL2无反相机

出自蜂鸟网-器材频道,原文链接:https://m.fengniao.com/document/5358989.html徕卡于今日正式发布SL2相机,搭载4700万像素CMOS感光元件、通过感光元件移位实现光学图像稳定的五轴防抖技术、全新徕卡物距探测式自动对焦技术以及576万像素分辨率…

JVM——对象的创建与内存布局

导航一、对象的创建过程二、对象的内存布局2.1 内存布局2.2 计算对象的内存大小三、对象的定位3.1 句柄池3.2 直接指针四、对象的分配过程一、对象的创建过程 对象,又叫实例,是 OOP 的最常用角色。 如何创建一个对象?一般都是使用 new 关键…

JVM垃圾收集器——G1

导航引言一、G1 介绍1.1 适用场景1.2 设计初衷1.3 关注焦点1.4 工作模式1.5 堆的逻辑结构1.6 主要收集目标1.7 停顿预测模型1.8 拷贝和压缩1.9 与 CMS 和 Parallel 收集器的比较1.10 固定停顿目标二、堆的逻辑分区2.1 region2.2 CSet2.3 RSet2.4 Card Table三、G1 的工作原理3.…

的mvc_简述PHP网站开发的MVC模式

为了提高开发时候的代码重用和开发速度,php使用了mvc的模式,主要是对代码的功能进行了分类,M:model主要是对数据库进行操作,v:view主要是前端html文件操作,c:controller主要是编写基…

CAP 原则与 BASE 理论

导航引言一、CAP 原则1.1 Consistency 一致性1.2 Available 可用性1.3 Partition tolerance 分区容错性1.4 CAP 的矛盾1.5 CAP 的组合场景二、BASE 理论2.1 基本可用2.2 软状态2.3 最终一致性2.3.1 因果一致性2.3.2 读自身所写2.3.3 会话一致性2.3.4 单调读一致性2.3.5 单调写一…

java 教室借用管理系统_[内附完整源码和文档] 基于JAVA语言的学生选课信息管理系统...

摘 要本系统运用Java面向对象的方法设计而成。近年来,学生选课系统越来越在高校学生群体中得到普及,其所承担的功能也变得越来越丰富,所起到的作用也变得越来越重要,在被学校学生重视的同时,也意味着它的功能要更加完善…

jMeter 模拟 web 高并发请求

导航一、jmeter 简介与下载二、接口压测设置三、实战演示一、jmeter 简介与下载 Apache JMeter是Apache组织开发的基于Java的压力测试工具。 最初被设计用于Web应用测试,但后来扩展到其他测试领域。JMeter 可以用于对服务器、网络或对象模拟巨大的负载&#xff0c…

实施文档_建设工程监理全套资料范本,Word文档附百份案例表格,超实用

建设工程监理全套资料范本,Word文档附百份案例表格,超实用在日常工作中,监理人员不仅需要经常跑腿儿检查,同时还需要提交许许多多的资料存档,甚至可能需要熬夜码字。今天整理的监理资料范本,既能让监理人员…

微服务架构 —— 服务雪崩与容错方案

导航一、什么是服务雪崩二、雪崩效应的三个核心原因三、容错四、业界常见容错思路五、常见容错组件一、什么是服务雪崩 服务雪崩 指的是微服务架构中,微服务各节点之间由于网络通信异常或微服务自身故障等问题,导致请求堆积、任务堆积,消耗和…

手游方舟怎么输入代码_明日方舟再次登顶失败,为了不发十连奖励,鹰角实力控分?...

在明日方舟新版本活动“孤岛风云”正式上线后,关于干员的强度和游戏剧情的讨论也在最近多了起来。尤其是在一周年卫星干员山落地,并且人气干员塞雷娅背后的故事揭晓之后,明日方舟的热度也在玩家圈子中迅速的攀升,成为近期话题量十…

Spring Cloud Alibaba —— Sentinel 入门

导航一、什么是Sentinel1.1 Sentinel 的优点二、整合 Sentinel 演示三、Sentinel控制台与微服务通信的原理四、Sentinel 流控演示一、什么是Sentinel Sentinel 是阿里开源的用于提供微服务架构容错方案的组件。它以流量作为切入点,从流量控制、熔断降级、系统负载保…

Spring Cloud Alibaba —— Sentinel 详细使用

导航引言一、Sentinel的两个基本概念二、流控规则2.1 基本选项2.2 高级选项三、熔断(降级)规则四、热点规则五、授权规则(了解)六、系统规则(了解)七、自定义异常返回八、SentinelResource九、Sentinel 规则持久化(待补…