ARM的异常处理方式介绍

一、什么是异常:
1、正常工作之外的流程都叫异常。
2、异常会打断正在执行的工作,并且我们一般希望异常处理完成后继续回来执行原来的工作。
3、中断是异常的一种。
二、用户态、系统态、异常态
1、用户态和系统态是正常模式。
(1)、用户态:用户(建立在操作系统之上)执行的是进程。
(2)、系统态:运行的是操作系统内核所做的事情。
2、异常态(正常异常:打电话叫人打断别人正在做的事情。真正的异常:地震打断正在做的事情):
(1)、FIQ、IRQ执行中断处理。
(2)、supervisor软件中断:使用软件制造中断是中断的一种。(上电开机或电脑休眠重启)。
(3)、Abort、undef这两是真正的异常,如Abort内存存储时异常。Undef读取的指令代码CPU不认识。
三、异常向量表
1、所有的CPU都有异常向量表,这是CPU设计时就设定的,是硬件决定的。
2、当异常发生时,CPU会自动动作(PC跳转到异常向量处处理异常,有时伴有一些辅助动作)。
3、异常向量表是硬件向软件提供的处理异常的支持。
四、ARM的异常处理机制
1、异常处理向量表实质是内存里地址的规划,每一个地址的功能事先定义好的。
2、当异常发生时:
(1)ARM core --> 拷贝CPSR到SPSR 设置位(因为几种模式下都是同一个CPSR所以先得保存)。异常发生当前CPSR就保存在异常状态的SPSR,以使异常返回从SPSR返回CPSR。
(2)设置当前模式下的CPSR(可以污染了因为以前的保存在了SPSR)。改变处理器状态进入ARM态(改变T位)。
(3)改变处理器模式进入相应异常模式(mode位)。
(4)设置中断禁止位禁止相应中断(有时候需要)。
(5)保存返回地址到LR 寄存器保存返回地址(比喻出门拿钥匙)。
注:以上是现场保护。
(6)设置PC为相应的异常向量(跳转,放跳转指令)。
3、当异常结束返回时处理:
从SPSR-----恢复CPSR、T位恢复、ARM态与Thumb态转换。从LR----恢复PC。
注意(note):这些操作只能在ARM态执行。
总结:异常处理中有一些是硬件自动做的,有一些是程序员需要做的,需要搞清楚那些需要自己做,才知道如何写代码。
以上讲的是CPU设计时提供的异常向量表,一搬称为一级向量表。有些CPU为了支持更多个中断还会提供二级中断向量表,处理思路类似一级向量表。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值