ARM 处理器 ~ 中断与异常

本文详细介绍了ARM处理器中的中断与异常,包括外部中断、软件中断(自陷)和异常的定义及其处理方式。讨论了异常向量表、异常响应过程、异常优先级以及中断处理,特别强调了FIQ和IRQ中断的特性和处理流程。同时,概述了异常处理中的寄存器使用和异常返回机制。
摘要由CSDN通过智能技术生成

教材:嵌入式系统及应用,罗蕾、李允、陈丽蓉等,电子工业出版社

目录:


中断与异常

定义

ARM 中的工作模式除 User 和 System 外,均为异常模式,这里的异常是广义的,包含以下三类情况

外部中断(外部中断)

由于 CPU 外部的原因而改变程序执行流程,属于异步事件,可以屏蔽

软件中断(自陷)
  • 通过处理器拥有的软件指令,可预期地使正在执行的程序改变执行流程,以执行特定的程序
  • 显式的事件,无条件执行
  • 属同步事件,且不可屏蔽
  • 例如 Motorola 68000 系列的 Trap 指令、ARM 中的 SWI、Intel 8086 中的 INT
异常
  • 由 CPU 内部的原因(如非法指令)或外部的原因(如访存错误)引起的事件
  • 没有对应的处理器指令
  • 异常发生时,处理器无条件地挂起当前运行的程序,去执行特定的处理程序
  • 属同步事件,且不可屏蔽

ARM 处理器把上述三种事件以异常模式来处理,通过异常向量来响应。ARM 的每个异常向量中存放的是一条指令(一般是跳转指令),异常发生时,CPU 自动到指定的向量地址读取该指令并执行。

异常向量表

  • ARM 的异常向量一般是完成程序跳转的指令

  • 在 ARM720T,ARM9 系列及以后的内核中,异常向量表可放置在 0xFFFF0000 开始的高位地址空间
    异常向量表

具体内容
  • 异常向量表内容

  • 如果异常处理程序的起始地址位于 32MB 的范围内,可以直接用分支指令完成跳转

  • 如果异常处理程序的起始地址是一个合法的 ARM 指令立即数(可由0~255内的数循环右移偶数位得到),则可以用数据传输指令将该地址加载到 PC 中

  • 其他情况需采用 LDR 指令完成对 PC 的加载

ARM 引起的异常事件类型

综合

异常响应过程

  • 当一个异常产生,处理器核会
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值