ARM异常处理(异常源的分类、异常的响应流程)

目录

一、异常的概念

1、什么是异常?

2、处理异常时,处理器要考虑哪些问题?

二、ARM异常源

1、异常源的分类

2、异常模式

三、ARM异常响应

1、CPSR寄存器内容备份(自动执行)

2、修改CPSR的值(自动执行)

(1) 修改模式

(2) 修改中断禁止位

(3) 修改状态位

3、保存返回地址(自动执行)

4、跳转到异常向量表(自动执行)

5、执行异常处理程序(自己编写)

6、异常处理完毕的返回动作(自己编写)

(1) 恢复之前的状态

(2) 回到之前中断的下一个位置

四、完整流程示意图


一、异常的概念

1、什么是异常?

异常指的是处理器在正常执行程序的过程中遇到的不正常事件。异常发生时,处理器会暂停当前程序转而去处理异常事件,异常事件处理完成之后再回到之前被打断的地方继续执行程序。

比如,老师在上课,这时突然有人敲门,老师就会暂停讲课去开门,事情处理完毕以后,老师继续讲课。这个过程中,老师上课 = 正常执行程序,有人敲门 = 异常事件。

2、处理异常时,处理器要考虑哪些问题?

不同处理器对异常的处理大体相似,但是不同处理器在具体实现上可能会有所不同。处理器在处理异常的时候,需要考虑的问题大致如下:

  • 异常源的判断
    • 并非有事件发生,处理器就会去处理,比如老师上课的时候,学生咳嗽一声,这种情况就不算异常。
  • 异常的响应
    • 跳转前的准备工作。比如保存跳转前的地址、进入到相应的异常模式
    • 异常处理工作。这里就是去调用异常处理程序了
    • 异常处理结束的善后工作。比如异常如何返回

二、ARM异常源

所谓异常源,就是导致异常产生的事件。异常源和工作模式存在一定的关联,异常源出现的时候,处理器会进入相应的工作模式,然后去执行相应的功能。

1、异常源的分类

异常源大致有如下七种,这里需要和工作模式区分开,异常源是终止CPU正常运行的原因,工作模式则是CPU当前的工作状态。

异常源类型

(优先级由高到低)

异常源说明
Reset 复位电平有效
Data Abort 数据终止。比如地址不允许被访问
FIQ  快速中断请求引脚有效,一般是外部硬件产生的,优先级较高。
IRQ 外部中断请求引脚有效,一般是外部硬件产生的,优先级较低
Prefetch Abort 指令预取终止。比如对应地址不存在指令
Software Interrupt
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值