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

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

ARM处理器的异常

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

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

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

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

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

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从相关的异常向量地址,取下一条指令执行,从而跳转到相应的异常处理程序处。

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

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

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

小结

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

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

  1. arm中断保护和恢复_嵌入式ARM系统异常和中断处理知识总结

    关于异常处理,分为三部分: 1. ARM异常和模式:core处理异常时的操作,几种模式介绍. 2. Vector table: 3. 异常优先级 4. lr偏移:几种异常如何返回 异常和中断处理简介 ...

  2. arm中断保护和恢复_ARM的中断处理详细过程

    ARM有七种异常中断类型,优先级.工作模式(有七种工作模式).地址.功能都不一样.如其中软件中断SWI优先级为6,工作模式管理模式,异常向量地址为0x00000008,功能是用户定义的中断指令,可用于 ...

  3. arm中断保护和恢复_ARM异常中断的原因及处理措施

    当ARM异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行.当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执 行.在进入异常中断处理程序时,要保存被中断程序的 ...

  4. arm中断保护和恢复_ARM中断返回的详细分析

    原标题:ARM中断返回的详细分析 在ARM体系中,通常有以下3种方式控制程序的执行流程: 1.在正常执行过程中,每执行一条ARM指令,程序计数器PC的值加4个字节:每执行一条Thumb指令,程序计数器 ...

  5. arm中断保护和恢复_ARM中断异常处理的返回

    举个小例子,下面是一段ARM汇编代码: 地址 指令 0x3000 BL add 0x3004 MOV r0,#0 0x3008 MOV r1,#1 0x300C MOV r2,#2 AREA test ...

  6. arm中断保护和恢复_ARM中断处理过程

    以s3c2440 ARM9核为例: 一:s3c2440 ARM处理器特性: 1.S3C2440支持60个中断源,含子中断源: 2.ARM9采用五级流水线方式: 3.支持外部中断和内部中断: 二.s3c ...

  7. 三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异

    概述 在3D图形学中,几何变换大致分为三种:平移变换(Translation).缩放变换(Scaling).旋转变换(Rotation),而其中又以旋转变换(Rotation)最为复杂,通常旋转变换( ...

  8. java四种内部类区别_浅谈Java中的四种内部类

    如果你看过一些JDK和框架源码的话,就经常会发现一般在类的定义中,都会再定义一些其他的类,这些类也同样会被编译成字节码文件,这样的类就被叫做 内部类 ,按照一般的分法,大致可以分为以下四类: 成员内部 ...

  9. workbench设置单元坐标系_浅谈Ansys中的几种坐标系

    这篇简短的文章是我多年前在仿真论坛任ansys版主时发表的,时隔多年,同事正好咨询关于ansys坐标系的知识,就将此贴翻出来解他困惑,自己也重温下当年的技术贴,发给大家,希望对学习ansys的初学者有 ...

最新文章

  1. 图神经网络世界冠军团队手把手授课,7天搞定图神经网络!
  2. 陈鑫136201010502
  3. CodeForces 1058C C. Vasya and Golden Ticket
  4. mysql声明declare_mysql8 参考手册--DECLARE ... CONDITION声明
  5. Humble Numbers USCAO chapter 3.1
  6. python数据结构不常用的方法(哈哈,其实是常用的)
  7. 洛谷P2671 求和 数学 前缀和
  8. 8大常用数据库管理系统简介
  9. 如何申请免费的企业邮箱
  10. 图计算的黄金时代 知识图谱背后的数据价值
  11. 拥抱变化 把握未来——“移动”电商营销新时代
  12. APP启动时间检测——u-apm
  13. odbc An unsupported operation was attempted
  14. 华为服务器 自动安装 黑屏,华为服务器显示器黑屏如何解决
  15. 服务器重启后,docker安装的mysql怎么重启
  16. 粤嵌GEC-6818
  17. 超声波测距仪编程_简易超声波测距仪的制作
  18. Excel也可以查询快递信息
  19. (附源码)基于Spring Boot的宠物猫店管理系统的设计与实现 毕业设计140909
  20. 安卓逆向-某音乐软件

热门文章

  1. 第 1-3 课:深入理解字符串 + 面试题
  2. Sql自动配置器原理及其说明
  3. Cookie的设置获取和删除
  4. current of 使用
  5. java中_null和“”的区别详解
  6. Python操作excel(.xlsx)封装类MyPyExcel V2.0
  7. windows Secure CRT使用SSH访问Linux服务器被拒绝,winscp访问Linux服务器被拒绝
  8. Windows 10 搭建Python3 安装使用 protobuf
  9. 前端开发1之Node.js以及npm开发环境搭建
  10. 大学电路题目怎么搜_长沙理工大学2020真题浅析