ARM有七种异常中断类型,优先级、工作模式(有七种工作模式)、地址、功能都不一样。如其中软件中断SWI优先级为6,工作模式管理模式,异常向量地址为0x00000008,功能是用户定义的中断指令,可用于用户模式下的程序调用特权操作。

当中断产生后,除了复位中断立即中止当前指令外,其余情况都是处理器完成当前指令后,才去执行异常处理程序。

(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状态从相应的SOSR中恢复,一恢复被中断的程序状态。

(3)根据异常类型将PC值恢复成断点地址,以继续执行用户原来运行着的程序。

(4)清除CPSR中的中断禁止标志I和F,开放外部中断和快速中断。

注意:(1)程序状态寄存器及断点地址的恢复必须同时进行。

(2)由于异常随机发生,所以要对异常向量进行初始化,即在异常向量的地址处放置一条跳转指令,跳转到异常处理程序。

arm中断保护和恢复_ARM的中断处理详细过程相关推荐

  1. arm中断保护和恢复_ARM中断返回的详细分析

    原标题:ARM中断返回的详细分析 在ARM体系中,通常有以下3种方式控制程序的执行流程: 1.在正常执行过程中,每执行一条ARM指令,程序计数器PC的值加4个字节:每执行一条Thumb指令,程序计数器 ...

  2. arm中断保护和恢复_ARM中断处理过程

    以s3c2440 ARM9核为例: 一:s3c2440 ARM处理器特性: 1.S3C2440支持60个中断源,含子中断源: 2.ARM9采用五级流水线方式: 3.支持外部中断和内部中断: 二.s3c ...

  3. arm中断保护和恢复_ARM中断异常处理的返回

    举个小例子,下面是一段ARM汇编代码: 地址 指令 0x3000 BL add 0x3004 MOV r0,#0 0x3008 MOV r1,#1 0x300C MOV r2,#2 AREA test ...

  4. arm中断保护和恢复_ARM异常中断的原因及处理措施

    当ARM异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行.当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执 行.在进入异常中断处理程序时,要保存被中断程序的 ...

  5. arm中断保护和恢复_浅谈ARM处理器的七种异常处理

    昨天的文章,我们谈了ARM处理器的七种运行模式,分别是:用户模式User(usr),系统模式System(sys),快速中断模式(fiq),管理模式Supervisor(svc),外部中断模式(irq ...

  6. arm中断保护和恢复_嵌入式ARM系统异常和中断处理知识总结

    关于异常处理,分为三部分: 1. ARM异常和模式:core处理异常时的操作,几种模式介绍. 2. Vector table: 3. 异常优先级 4. lr偏移:几种异常如何返回 异常和中断处理简介 ...

  7. 中断技术之中断的定义,中断服务程序的设计方法,中断处理的过程以及中断向量表的建立

    一,中断的定义 在CPU执行程序的过程中,出现了某种紧急或异常的事件(中断请求),CPU需要暂时停止正在执行的程序,转去处理该事件(执行终端服务程序),并在处理完毕后,返回断点继续执行被暂停的程序,这 ...

  8. 用C语言写ucos中断服务程序,在ARM处理器上移植uCOS II的中断处理

    uCOS II是一个源码公开.可移植.可固化.可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写.总量约200行的汇编语言部分被压缩到最低限度 ...

  9. 嵌入式:ARM中断系统设计全解

    文章目录 一.ARM9的异常事件管理 二.ARM的中断原理 1. S3C2410的56个中断源 2. S3C2410中断处理的步骤 (1) 保存现场 (2) 模式切换 (3) 获取中断源 (4) 中断 ...

最新文章

  1. 大年初四,你认为在南方过年和在北方过年最大的不同是什么?
  2. python性能分析
  3. 团队作业8——第二次项目冲刺(Beta阶段)博客汇总
  4. 3W | 跟着小小学会这些 Java 工程师面试题,月薪至少 3 W
  5. Html5 小球键盘移动
  6. Django tips: 查看当前Request所执行的所有SQL
  7. FISCO BCOS 同态加密 实例
  8. 极简工具(AutoCAD、Tekla)——零件图自动标注
  9. 显示器+测试软件,MonitorTest(显示器性能测试软件
  10. IEEE2020-IJON: Exploring Deep State Spaces via Fuzzing
  11. 计算机出现测试模式,win10系统右下角显示测试模式内部版本10601的详细步骤
  12. 硬盘分区怎么不删除文件合并_硬盘分区怎么合并?
  13. 电信计费系列2-手机+座机计费
  14. NFS 服务器启动失败
  15. 七夕情人节生日节日表白网页,不是程序员也会用~
  16. oracle apex global,Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧
  17. 校招季--献给前端求职路上的你们(H5+C3)
  18. 【 Rust 基础】控制流 —— Rust 的神级语法03
  19. 一个电子邮件规则-拥有一个单独的收件箱和一个收件箱CC,以减轻电子邮件压力。 保证。
  20. 店盈通谈怎么提高店铺自然流量?

热门文章

  1. 全球芯片市场或陷入停滞,中国芯片逆势扩张加速提升自给率
  2. 神威太湖之光计算机的知识点,超级计算机——“神威·太湖之光”
  3. Matlab读取Eprime数据(txt文档)
  4. 边缘计算简述-多视角下的边缘计算实现
  5. docker错误合集(持续更新)
  6. 方国伟:企业服务入云还有很长的路要走
  7. 无授权转载:大神的日语学习方法
  8. 解决word插入Endnote引文闪退问题
  9. win10安装VMware workstation Pro和Ubuntu20.04过程及注意事项
  10. .net 压缩、解压文件