arm中断保护和恢复_浅谈ARM处理器的七种异常处理
昨天的文章,我们谈了ARM处理器的七种运行模式,分别是:用户模式User(usr),系统模式System(sys),快速中断模式(fiq),管理模式Supervisor(svc),外部中断模式(irq),数据访问中止模式Abort(abt),未定义指令中止模式Undfined(und)。
今天我们来谈谈ARM处理器所支持的七种异常处理。
ARM处理器的异常
当程序在正常执行过程中,出现暂时停止时,我们称之为发生了异常。比如说,在程序执行过程中,接到一个外部的中断申请。
处理器在接到中断申请之后,一般要经过下面的步骤:
- 保留当前处理器状态;
- 处理中断;
- 返回中断前状态,继续执行中断前程序。
当有多个中断同时申请时,处理器将按照优先级,顺次进行处理。
需要指出的是,异常并不完全等同与中断,中断只是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处理器对异常的响应过程
如果一个异常出现,复位异常会立即中止当前指令执行,除此之外的其他异常,处理器会尽可能完成当前指令,然后再去处理异常。对异常的响应一般分为以下几步:
- 保存下一条指令的地址(PC)到相应连接寄存器LR_mode中,当处理完异常返回时,从异常发生前的地址处,重新开始执行。
- 将CPSR的内容复制到,将要执行的异常模式对应的SPSR_中。
- 设置当前状态寄存器CPSR的相关位。
- 强制PC从相关的异常向量地址,取下一条指令执行,从而跳转到相应的异常处理程序处。
ARM处理器从异常处理中返回过程
在处理完异常之后,恢复用户任务的正常执行,即从异常处理中返回。ARM处理器从异常中返回,一般分为以下几步:
- 从处理程序的保护堆栈中,恢复异常处理中用过的用户寄存器。
- 将相应SPSR_内容复制回CPSR中,以恢复异常出现前的程序状态。若在进入异常处理时设置了中断控制位,要在此时清除。
- 将连接寄存器LR_的值减去相应的偏移量后送到PC中。
小结
今天我们谈了ARM处理器的七种异常情况,并介绍了对异常的响应过程,和返回过程。深入了解今天的内容,是使用ARM处理器实现嵌入式系统编程的前提。
arm中断保护和恢复_浅谈ARM处理器的七种异常处理相关推荐
- arm中断保护和恢复_嵌入式ARM系统异常和中断处理知识总结
关于异常处理,分为三部分: 1. ARM异常和模式:core处理异常时的操作,几种模式介绍. 2. Vector table: 3. 异常优先级 4. lr偏移:几种异常如何返回 异常和中断处理简介 ...
- arm中断保护和恢复_ARM的中断处理详细过程
ARM有七种异常中断类型,优先级.工作模式(有七种工作模式).地址.功能都不一样.如其中软件中断SWI优先级为6,工作模式管理模式,异常向量地址为0x00000008,功能是用户定义的中断指令,可用于 ...
- arm中断保护和恢复_ARM异常中断的原因及处理措施
当ARM异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行.当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执 行.在进入异常中断处理程序时,要保存被中断程序的 ...
- arm中断保护和恢复_ARM中断返回的详细分析
原标题:ARM中断返回的详细分析 在ARM体系中,通常有以下3种方式控制程序的执行流程: 1.在正常执行过程中,每执行一条ARM指令,程序计数器PC的值加4个字节:每执行一条Thumb指令,程序计数器 ...
- arm中断保护和恢复_ARM中断异常处理的返回
举个小例子,下面是一段ARM汇编代码: 地址 指令 0x3000 BL add 0x3004 MOV r0,#0 0x3008 MOV r1,#1 0x300C MOV r2,#2 AREA test ...
- arm中断保护和恢复_ARM中断处理过程
以s3c2440 ARM9核为例: 一:s3c2440 ARM处理器特性: 1.S3C2440支持60个中断源,含子中断源: 2.ARM9采用五级流水线方式: 3.支持外部中断和内部中断: 二.s3c ...
- 三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异
概述 在3D图形学中,几何变换大致分为三种:平移变换(Translation).缩放变换(Scaling).旋转变换(Rotation),而其中又以旋转变换(Rotation)最为复杂,通常旋转变换( ...
- java四种内部类区别_浅谈Java中的四种内部类
如果你看过一些JDK和框架源码的话,就经常会发现一般在类的定义中,都会再定义一些其他的类,这些类也同样会被编译成字节码文件,这样的类就被叫做 内部类 ,按照一般的分法,大致可以分为以下四类: 成员内部 ...
- workbench设置单元坐标系_浅谈Ansys中的几种坐标系
这篇简短的文章是我多年前在仿真论坛任ansys版主时发表的,时隔多年,同事正好咨询关于ansys坐标系的知识,就将此贴翻出来解他困惑,自己也重温下当年的技术贴,发给大家,希望对学习ansys的初学者有 ...
最新文章
- 图神经网络世界冠军团队手把手授课,7天搞定图神经网络!
- 陈鑫136201010502
- CodeForces 1058C C. Vasya and Golden Ticket
- mysql声明declare_mysql8 参考手册--DECLARE ... CONDITION声明
- Humble Numbers USCAO chapter 3.1
- python数据结构不常用的方法(哈哈,其实是常用的)
- 洛谷P2671 求和 数学 前缀和
- 8大常用数据库管理系统简介
- 如何申请免费的企业邮箱
- 图计算的黄金时代 知识图谱背后的数据价值
- 拥抱变化 把握未来——“移动”电商营销新时代
- APP启动时间检测——u-apm
- odbc An unsupported operation was attempted
- 华为服务器 自动安装 黑屏,华为服务器显示器黑屏如何解决
- 服务器重启后,docker安装的mysql怎么重启
- 粤嵌GEC-6818
- 超声波测距仪编程_简易超声波测距仪的制作
- Excel也可以查询快递信息
- (附源码)基于Spring Boot的宠物猫店管理系统的设计与实现 毕业设计140909
- 安卓逆向-某音乐软件
热门文章
- 第 1-3 课:深入理解字符串 + 面试题
- Sql自动配置器原理及其说明
- Cookie的设置获取和删除
- current of 使用
- java中_null和“”的区别详解
- Python操作excel(.xlsx)封装类MyPyExcel V2.0
- windows Secure CRT使用SSH访问Linux服务器被拒绝,winscp访问Linux服务器被拒绝
- Windows 10 搭建Python3 安装使用 protobuf
- 前端开发1之Node.js以及npm开发环境搭建
- 大学电路题目怎么搜_长沙理工大学2020真题浅析