ARM异常处理

华清资料整理

异常

  • 定义:处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生,这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件,异常事件处理完成之后再返回到被异常打断的点继续执行程序。
  • 处理机制:保存当前状态,切换到异常处理模式,调用对应的异常处理函数,恢复之前的状态
  • 异常源和异常模式
    在这里插入图片描述

异常响应

ARM产生异常后的动作(自动完成)

  • 1.拷贝CPSR中的内容到对应异常模式下的SPSR_<mode> 保存当前状态
  • 2.切换模式:即修改CPSR中的bit[4:0]位
    修改FIQ IRQ使能状态
    切换成ARM指令集
  • 3.记录下一条指令的位置到LP指针
  • 4.修改PC指针为对应异常模式地址:即异常向量表中对应异常的地址

异常向量表

  • 本质是存在内存中的一段代码
  • 每种异常都只有4个字节的空间
  • 遇到异常时,pc会自动修改为对应异常在内存种的地址
  • ARM的异常向量表默认在0x00位置,但是可以通过配置协处理器来修改器地址
  • 注意:异常真正的处理函数并不在此,异常向量表中对应的异常只有4字节的空间,一般放不下异常处理函数,因此异常向量表中一般存放的是一个跳转指令,让pc跳转至真正的异常处理函数的位置。
  • 在这里插入图片描述

异常返回

当异常处理函数执行完毕后的操作

  • 将spsr中的状态恢复到cpsr中
  • MOV PC,LR 这个操作需要自己完成(汇编需要自己完成,c语言会帮你添加)

异常的优先级

在这里插入图片描述
高优先级可以打断低优先级,例如进入了FIQ中断模式,按复位键,系统复位

FIQ为什么比IRQ更快

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值