什么是异常
正常工作之外的流程都叫异常
异常会打断正在执行的工作,并且一般我们希望异常处理完后继续回来执行原工作
中断是异常的一种
异常向量表
所有的CPU都有异常向量表,这是CPU设计时就设定好的,是硬件决定的。
当异常发生时,CPU会自动动作(PC跳转到异常向量处处理异常,有时伴有一些辅助动作)
异常向量表是硬件向软件提供的处理异常的支持。
ARM的异常处理机制
当异常产生时, ARM core:
(1)将CPSR的值保存到将要执行的异常中断对应的SPSR中,以实现对处理器当前状态、中断屏蔽及各标志位的保护。
(2)设置当前状态寄存器CPSR的相应位。设置CPSR中的M4~M0的5位,进入相应工作模式,设置I=1禁止IRQ中断,如果进入复位模式或FIQ模式,还要设置F=1以禁止FIQ中断。
(3)将引起异常指令的下一条地址(断点地址)保存到 LR(R14)中,使异常处理程序执行完后正确返回原来程序处继续向下执行。
(4)给程序计数器PC强制赋值,转入向量地址,以便执行相应的处理程序。
每种中断异常模式对应两个寄存器SP和LR。
从中断返回。如果是复位异常,系统自动从0x00000000开始重新执行程序,无需返回
(1)首先恢复原来被保护的用户寄存器。
(2)将SPSR寄存器复制到CPSR中,使得原来CPSR状态从相应的SPSR中恢复,——恢复被中断的程序状态。
(3)根据异常类型将PC值恢复成断点地址,以继续执行用户原来运行着的程序。
(4)清除CPSR中的中断禁止标志I和F,开放外部中断和快速中断。
注意:
(1)程序状态寄存器及断点地址的恢复必须同时进行。
(2)由于异常随机发生,所以要对异常向量进行初始化,即在异常向量的地址处放置一条跳转指令,跳转到异常处理程序。文章来源:https://www.toymoban.com/news/detail-679332.html
更多嵌入式学习笔记、实战项目,点击这里即可免费领取文章来源地址https://www.toymoban.com/news/detail-679332.html
到了这里,关于嵌入式学习笔记(3)ARM的异常处理方式介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!