1.12.ARM的异常处理方式简单介绍

什么是异常?

* 正常工作之外的流程都是异常。

* 异常会打断正在执行的工作,正常我们希望异常处理完成后继续回来执行我们原来的工作。

* 中断也是异常的一种。


异常向量表:

* 所有的CPU都有异常向量表,这是CPU设计时就设定好的,由硬件决定。

* 当异常发生时,CPU会自动动作(PC会跳转到异常向量处处理异常,有时会伴有一些辅助动作)。

* 异常向量表是硬件向软件提供的处理异常的支持。


ARM的异常处理标志:



* 当异常产生时,ARM core:

 - 拷贝CPSR到SPSR_<mode>

 - 设置适当的CPSR位:

      - 改变处理器状态到ARM态

      -改变处理器模式到相应的异常模式

      -设置中断禁止位禁止相应的中断(如果需要)

- 保存返回地址到LR_<mode>

- 设置PC为相应的异常向量


* 返回时异常处理需要:

 - 从SPSR_<mode>恢复CPSR

 - 从LR_<mode>恢复PC

 - 注:这些操作只能在ARM态执行


总结:

* 异常处理中有一些是硬件自动做的,有一些是程序员需要自己做的。需要搞清楚哪些是需要自己做的,才知道如何写好代码。

* 上面说的是CPU设计时提供的异常向量表,一般称为一级向量表。有些CPU为了支持多个中断,还会提供二级中断向量表,处理方式和一级向量表类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值