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中。

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

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

    关注

    31

    文章

    5226

    浏览量

    118971
  • ARM处理器
    +关注

    关注

    6

    文章

    351

    浏览量

    41486

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

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

收藏 人收藏

    评论

    相关推荐

    ARM中断体系和ZYNQ中断体系详解

    01、 ARM 中断 体系ARM 体系 ,在存储地址的低位,固化了一个32字节的硬件
    的头像 发表于11-27 11:01 5908次阅读
    <b class='flag-5'>ARM</b><b class='flag-5'>中断</b><b class='flag-5'>体系</b>和ZYNQ<b class='flag-5'>中断</b><b class='flag-5'>体系</b>详解

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

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

    ARM异常中断处理流程分析

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

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

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

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

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

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

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

    ARMS3C4510B系统的异常中断机制解析

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

    ARM异常中断的集中情况进行总结,并给出了一些解决方法

    ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的问题, ARM 异常中断返回就是这样一种令人头疼的问题。在 ARM的使用问题中
    的头像 发表于02-08 09:29 6374次阅读
    对<b class='flag-5'>ARM</b><b class='flag-5'>异常中断</b>的集中情况进行总结,并给出了一些解决方法

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

    ARM 异常中断的类型问题分析总结 一、 ARM 异常中断的类型:
    发表于04-05 10:51 1229次阅读

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

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

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

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

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

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

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

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

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

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