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

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

3天内不再提示

异常和中断处理简介

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-06-25 10:49 次阅读

关于异常处理,分为三部分:

1. ARM异常和模式:core处理异常时的操作,几种模式介绍。2. Vector table:3. 异常优先级4. lr偏移:几种异常如何返回

异常和中断处理简介

嵌入式系统中异常处理是核心之一。高效的处理能够极大的提升系统的性能。ARM处理器一共有7种可以暂停指令的执行序列的异常。主要分为三个部分:

1. Exception handling2. Interrupts3. Interrupt handling schemes今天我们主要介绍第一部分

Exception Handling

1.ARM Processor Exceptions And Modes

任何一种中断模式都可以通过手动的修改cpsr的值来进入。但是User和System模式是仅有的2个不能由相应中断进入的模式,换句话说,我们必须要通过手动修改cpsr才能进入。

当一个异常产生的时候,core会自动进行如下4步:1. saves the cpsr to the spsr of the exception mode2. saves the pc to the lr of the exception mode3. sets the cpsr to the exception mode4. sets the pc to the address of the exception handler

需要注意的是,当异常产生的时候,ARM处理器总是会切换到ARM状态。

2.Vector Table

handler定位在相应内存位置中,如下图的IRQ,FIQ

0x00000018: 0xe59ffa38 IRQ ; ldr pc, [pc, #irq]0x0000001c: 0xe59ffa38 FIQ ; ldr pc, [pc, #fiq]

3.Exception Priorities

4.Link Register Offset

如下三种从IRQ和FIQ异常处理返回的例子

例1:

handler

...

SUBS pc, r14, #4 ;pc = r14 -4

因为SUB后的S和pc作为目标寄存器,cpsr的值会自动从spsr中恢复出来

例2:

handler

SUB r14, r14, #4 ;r14 -= 4

...

...

MOVS pc, r14

r14 = r14 -4, pc = r14 , cpsr =spsr(因为S)

例3:

handler

SUB r14, r14, #4 ; r14 = r14 - 4

STMFD r13!, {r0-r3, r14} ;store context

...

LDMFD r13!, {r0-r3, r14}^ ;return

STMFD,LDMFD 分别提供了pop/push的功能。STMFD sp!, {r0-r3, r14}就是依次将r14, r3, r2, r1放入栈中。LDMFD r13!, {r0-r3, r14}^则依次反向取出。^这个符号,则强制cpsr从spsr中恢复出来。

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

    关注

    134

    文章

    8615

    浏览量

    361310
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3372

    浏览量

    128132
  • 中断处理
    +关注

    关注

    0

    文章

    91

    浏览量

    10880

原文标题:嵌入式ARM系统异常和中断处理知识总结

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是ARM中断事件?ARM中断异常处理具体过程

    ARM处理器是一种流行的处理器架构,用于许多现代移动设备和嵌入式系统中。中断异常是ARM处理器中的两个重要概念,它们是
    发表于 09-05 15:45 720次阅读
    什么是ARM<b class='flag-5'>中断</b>事件?ARM<b class='flag-5'>中断</b><b class='flag-5'>异常</b><b class='flag-5'>处理</b>具体过程

    ARM异常中断处理流程分析

    异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生
    发表于 08-28 08:09

    如何返回异常中断处理

    关于异常处理,分为三部分:ARM异常和模式:core处理异常时的操作,几种模式介绍。Vector table:
    发表于 12-14 09:23

    中断事件的异常处理是什么意思

    M0内核支持的资源Cortex-M0处理器最多支持32个外部中断(通常称作IRQ),还有一个被称作不可屏蔽中断的特殊中断中断事件的
    发表于 12-21 06:50

    Linux 2.6 中断处理原理简介

    Linux 2.6 中断处理原理简介 中断描述符表(Interrupt Descriptor Table,IDT)是一个系统表,它与每一个中断
    发表于 02-05 10:52 763次阅读

    S3C2410中断异常处理流程

    异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。而中断则带有向处理器主动申请的意味。但这两种情况具有一定的共性,都是请
    发表于 12-06 16:45 49次下载

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

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

    STM32的Cortex-M3中断异常处理

    器核的接口紧密相连,可以实现低延迟的中断处理和有效处理处理晚到的中断。嵌套向量中断控制器管理着
    发表于 11-16 15:35 7636次阅读
    STM32的Cortex-M3<b class='flag-5'>中断</b><b class='flag-5'>异常</b><b class='flag-5'>处理</b>

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

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

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

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

    处理器中异常中断解决

    异常是能够引起程序流偏离正常流程的事件,当异常发生时,正在执行的程序就会被挂起,处理器转而执行一块与该事件相关的代码(异常处理)。事件可以是
    的头像 发表于 10-12 17:14 4177次阅读

    Cortex-M0处理器内核异常中断简介

    在Cortex‐M0内核上搭载了一个异常响应系统,支持众多的系统异常和外部中断。其中,编号为1-15的对应系统异常,大于等于16的则全是外部中断
    的头像 发表于 06-01 14:41 3641次阅读

    Linux是如何利用陷阱门处理中断异常

    中断异常处理程序执行的代码不是一个进程。而是一个内核控制路径,比一个进程的上下文要少,建立或终止需要的时间很少。
    发表于 08-17 11:31 407次阅读

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

    arm处理器有哪些中断源?arm处理器对异常中断的响应过程  ARM处理器是一种广泛使用的嵌入式处理
    的头像 发表于 10-19 16:35 712次阅读

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

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