0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM体系中异常中断种类及处理办法

MCU开发加油站 来源:未知 作者:胡薇 2018-04-25 11:08 次阅读

ARM体系中,通常有以下3种方式控制程序的执行流程:

• 在正常程序执行过程中,每执行一条ARM指令,程序计数器寄存器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器(PC)的值加2个字节。整个过程是顺序执行。

• 通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。其中,B指令用于执行跳转操作;BL指令在执行跳转操作的同时,保存子程序的返回地址;BX指令在执行跳转操作的同时,根据目标地址的最低位可以将程序状态切换到Thumb状态;BLX指令执行3个操作:跳转到目标地址处执行,保存了子程序的返回地址,根据目标地址的最低位可以将程序状态切换到Thumb状态。

• 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。

ARM体系中异常中断种类:

• 复位(Reset):当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面两种情况:系统加电时和系统复位时。跳转到复位中断向量处执行,称为软复位。

• 未定义指令(Undefined Instruction):当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断。

• 软件中断(Software Interrupt SWI):这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制实现系统功能调用。

• 指令预取中止(Prefetch Abort):如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当该被预取的指令执行时,处理器产生指令预取中止异常中断。

• 数据访问中止(Data Abort):如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常中断。

• 外部中断请求(IRQ):当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断请求(IRQ)异常中断。系统中各外设通常通过该异常中断请求处理器服务。

• 快速中断请求(FIQ):当处理器的外部快速中断请求引脚有效,而且CPSR寄存器的F控制位被清除时,处理器产生外部中断请求(FIQ)异常中断。

对异常中断的响应过程(这几点都是ARM核自己已经完成的动作):

• 保存处理器当前状态、中断屏蔽位以及各条件标志为。这是通过将当前程序状态寄存器CPSR的内容保存到将要执行的异常中断对应的SPSR寄存器中实现的。各异常中断有自己的物理SPSR寄存器。

• 设置当前程序状态寄存器CPSR中相应的为。包括:设置CPSR中的位,使处理器进入当前相应的执行模式(处理器模式);设置CPSR中的位,禁止IRQ中断,当进入FIQ模式时,禁止FIQ中断。

• 将寄存器lr_mode设置成返回地址。

• 将程序计数器值(PC),设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行。

从异常中断处理程序中返回(这些返回动作是需要自己写代码完成的):

• 恢复被中断的程序的处理器状态,即将SPSR_mode寄存器内容复制到CPSR中。

• 返回到发生异常中断的指令的下一条指令执行,即将lr_mode寄存器的内容复制到程序计算器PC中。

复位异常中断处理程序不需要返回。在复位异常中断处理程序开始整个用户程序的执行,因而它不需要返回。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5020

    浏览量

    117630
  • ARM处理器
    +关注

    关注

    6

    文章

    344

    浏览量

    41315

原文标题:ARM异常中断处理

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM异常中断返回的几种情况

    ARM异常中断返回的几种情况异常中断返回的几种情况: 重要基础知识:R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行
    发表于 07-22 11:32

    ARM S3C4510B系统异常中断有什么特点?

    处理器模式和内部多线程和外部多处理器的处理器结构。在嵌入式系统具有重要意义的异常中断技术在S3C4510B系统
    发表于 03-31 07:59

    ARM异常中断处理流程分析

    现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。本文讨论ARM体系
    发表于 08-28 08:09

    教你一种ARM处理异常中断的方法

    时间内响应中断次数。二、异常源在ARM体系结构,存在7种异常
    发表于 08-18 15:26

    ARM处理中断处理的编程实现

    摘要:本文首先简要概述了ARM处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量
    发表于 03-11 12:18 765次阅读
    <b class='flag-5'>ARM</b><b class='flag-5'>处理</b>器<b class='flag-5'>中断</b><b class='flag-5'>处理</b>的编程实现

    ARM体系中的异常中断及其应用

    ARM体系中的异常中断及其应用
    发表于 09-22 16:51 4次下载
    <b class='flag-5'>ARM</b><b class='flag-5'>体系</b>中的<b class='flag-5'>异常中断</b>及其应用

    ARM处理器编程模型之异常中断处理分析

    3.4 异常中断处理 异常中断是用户程序中最基本的一种执行流程和形态。这部分主要对ARM架构下的异常中
    发表于 10-18 13:29 1次下载

    Thumb指令集之异常中断产生指令解析

    11.7 异常中断产生指令(断点指令) Thumb异常中断产生指令与ARM指令集下的异常中断指令十分相似。同ARM指令集相同,Thumb指令
    发表于 10-19 09:32 0次下载
    Thumb指令集之<b class='flag-5'>异常中断</b>产生指令解析

    ARM S3C4510B系统的异常中断机制解析

    本文介绍A了RM S3C4510B系统 的 异常中断 机制,包括异常中断的分类,响应与返回;中断处理程序的安装与调用;SWI,IRQ中断的实
    发表于 02-03 05:32 1586次阅读
    <b class='flag-5'>ARM</b> S3C4510B系统的<b class='flag-5'>异常中断</b>机制解析

    ARM异常中断问题详情分析总结

    ARM异常中断的类型问题分析总结 一、ARM异常中断的类型: 异常中断名称 含义 复位(Reset) 当
    发表于 04-05 10:51 1156次阅读

    ARM异常中断的原因及处理措施

    ARM异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理
    的头像 发表于 06-17 10:05 7165次阅读

    ARM异常中断发生时的处理措施

    外部中断请求(IRQ) 当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。系统中个外设
    的头像 发表于 08-27 14:21 2377次阅读

    ARM处理器对异常中断的响应过程

    异常中断发生时,程序将当前执行指令的下一条指令的地址存入新的异常模式的链接寄存器LR中(R14_),以便程序在异常处理完后,能正确返回原程序。
    发表于 10-18 17:25 360次阅读

    arm处理器有哪些中断源?arm处理器对异常中断的响应过程

    arm处理器有哪些中断源?arm处理器对异常中断的响应过程 
    的头像 发表于 10-19 16:35 801次阅读

    ARM中的异常中断是如何实现进入中断程序的?如何进入呢?

    ARM中的异常中断是如何实现进入中断程序的?如何进入呢? 在计算机系统中,异常中断是两个常见的概念。 在
    的头像 发表于 10-19 16:36 543次阅读