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

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

3天内不再提示

ARM中的5种异常模式和7种中断源

GReq_mcu168 来源:未知 作者:李倩 2018-08-27 17:45 次阅读

ARM中有5种异常模式,有7种中断源。这7种中断源中有些中断是我们希望发生的,但有些中断是我们不希望发生的。

我们希望发生的中断:

软中断:属于svc模式,通过SWI指令便可以产生软中断,进入到svc模式。

irq中断:属于irq模式,当产生普通的外部中断时,处理器便进入到IRQ模式。

fiq中断:属于fiq模式,当产生高优先级外部中断时,处理器便进入到FIQ模式。

我们不希望发生的中断:

复位:属于svc模式,当系统上电时便会产生复位中断,系统进入到svc模式。复位中断不需要中断返回。

取指中止中断:属于abt模式,当预取指发生错误时,便产生取指中止中断,进入到abt模式。

数据中止中断:属于abt模式,当访问数据存储器时,便产生数据中止中断,进入到abt模式。

未定义指令中断:属于und模式,当执行到一条未定义指令时,便产生未定义指令中断,系统进入到und模式。

中断的优先级:

ARM中有6个优先级。各个中断的优先级顺序如下:(1 6 6s 5 2 4 3)

复位: 1数据中止中断:2fiq中断:3irq中断:4预取址中止中断:5未定义指令中断和软中断:6

关于各种中断在中断返回时还需要给LR减去一个不同的偏移量的问题我觉得没必要深入研究了,这还要涉及到ARM指令的流水线技术,平时写中断代码都是用C写的,没必要知道这个。用到时再去查表即可。

处理器在进入异常和退出异常时所做的工作:

进入异常时:

1、将要返回处的地址保存在对应异常模式的LR中。(复位不需要保存返回地址)2、将cpsr的内容复制到对应异常模式的spsr中。3、强制修改cpsr的内容,进入到相应异常模式以及根据需要修改某些位。4、强制PC从相应的中断向量地址处进行取址。

注:以上这些步骤都是有cpu自动完成的,也就是当有中断产生时,硬件就会自动完成上述步骤。

退出异常时:

1、将LR中保存的地址赋给PC。2、将spsr的内容恢复给cpsr。3、将irq中断禁止位清零。

注:只需要在异常处理程序中写一句返回指令(如上面的表4.1所示)即可全部实现上述的步骤。


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

    关注

    134

    文章

    8648

    浏览量

    361747
  • 中断
    +关注

    关注

    5

    文章

    884

    浏览量

    41021

原文标题:ARM中的异常和中断

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM异常处理流程

    在学习与开发ARM处理器的过程,一个不能绕开的话题就是异常处理流程。它在ARM的体系架构,占据着不可动摇的重要地位。此处就以Coterx
    发表于 10-14 16:15

    ARM异常处理流程

    产生时, ARM core:拷贝 CPSR 到 SPSR_设置适当的 CPSR 位:改变处理器状态进入ARM态改变处理器模式进入相应的异常模式设置
    发表于 11-11 09:55

    ARM处理器工作模式详解

    (system)模式之外的其他5模式又统称为异常模式。它们除了可以通过在特权下的程序切换进入外,也可以由特定的
    发表于 10-25 16:55

    ARM处理器工作模式

    不能直接切换到别的模式异常模式特权模式除系统(system)模式之外的其他5
    发表于 11-06 10:43

    浅谈ARM体系CPU的7工作模式

    模式之外的其他5模式又统称为异常模式。它们除了可以通过在特权下的程序切换进入外,也可以由特定的异常
    发表于 11-24 11:34

    分享ARM处理器异常处理的方法步骤的经验

    复制到发生的异常模式下SPSR; b.模式切换:将CPSR模式位强制设置为与异常类型相对应的值,同时处理器进入到
    发表于 05-10 10:58

    简述ARM的2工作状态和7工作模式

    寄存器的赋值来切换的。Tips:当处理器运行在用户模式下,某些被保护的系统资源是不能被访问的。除用户模式外,其余6工作模式都属于特权模式
    发表于 08-20 12:30

    ARM的2工作状态和7工作模式。[附带文档下载]

    寄存器的赋值来切换的。Tips:当处理器运行在用户模式下,某些被保护的系统资源是不能被访问的。除用户模式外,其余6工作模式都属于特权模式
    发表于 08-20 09:14

    ARM体系的七工作模式分别是哪些

    ARM体系的七工作模式如下:状态码工作模式特权模式异常模式说明 10000用户
    发表于 12-15 07:52

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

    表的入口是一些跳转指令,跳转到专门处理某个异常中断的子程序。异常分类要进入异常模式,一定要有异常
    发表于 08-18 15:26

    在SWI软中断指令LR中放的是异常模式下的返回地址求解

    请问:在 SWI 软中断指令,LR 中放的是异常模式下的返回地址,而这个地址的低 8 位和低 24 位分别是 thumb 和 ARM指令下的立即数,这种对应的关系是如何来的 还有执行
    发表于 02-27 10:16

    ARM处理器7工作模式

    寄存器的赋值来切换的。 Tips:当处理器运行在用户模式下,某些被保护的系统资源是不能被访问的。 除用户模式外,其余6工作模式都属于特权模式
    发表于 12-15 10:15

    arm处理器异常模式有哪些

    所谓异常就是正常的用户程序被暂时中止,处理器就进入异常模式,例如响应一个来自外设的中断,或者当前程序非法访问内存地址都会进入相应异常模式
    发表于 11-02 12:57 1.8w次阅读
    <b class='flag-5'>arm</b>处理器<b class='flag-5'>异常模式</b>有哪些

    arm处理器的异常模式包括哪些

    正确处理,处理器可能会崩溃或数据损毁。ARM处理器有七种异常模式,即:重置模式、用户模式、FIQ模式、IRQ
    的头像 发表于 09-05 16:22 2306次阅读

    arm中断是怎么实现的

    ARM中断的实现是通过中断控制器和异常模式实现的。ARM处理器通过中断控制器来接收和处理外部的
    的头像 发表于 01-05 15:18 261次阅读