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

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

3天内不再提示

Cortex-M3咬尾中断与晚到中断基础知识介绍

冬至子 来源:AI电堂 作者:电小二 2023-11-06 16:36 次阅读

咬尾中断

Cortex-M3 内核发生中断时,硬件会自动将 XPSR、PC、LR、R12、R3、R2、R1 和 R0 这 8 个寄存器压入栈,其余的 R4~R11、LR、XPSR 寄存器的备份则需要由 C 编译器去做。

我们知道每次中断操作有三部曲:入栈+ISR+出栈。**Cortex-M3 内核支持中断嵌套。所谓中断嵌套就是高优先级的中断可以打断低优先级的中断转而去执行高优先级的中断服务程序,当高优先级中断服务程序执行完毕再去接着执行低优先级的中断服务程序。

若在高优先级中断服务程序执行过程中产生了低优先级中断,那么低优先级中断需要等高优先级中断服务程序执行完毕才能去执行。

对于后者两个中断是串行执行的,如果按照每个中断备份、恢复寄存器的过程,那么高优先级中断先将上述 8 个寄存器压入栈中,等执行完毕再从栈中弹出这 8 个寄存器,紧接着低优先级中断再将这 8 个寄存器压入栈中,等执行完毕再从栈中弹出,这么做对这 8 个寄存器重复入栈出栈 2 次,浪费了时间,Cortex-M3 内核采用咬尾中断机制避免这种问题发生,来看下图:

图片

Cortex-M3不会再出栈这些寄存器,而是继续使用上一个异常已经压栈好的结果,消除出栈和入栈操作的耗时。这样一来我们执行两次中断只需要:入栈+ISR1+ISR2+出栈。

咬尾中断看上去好像后一个异常把前一个的尾巴咬掉了,前前后后只执行了一次PUSH/POP操作。这两个异常之间的“时间沟”就变窄了很多,大大提高了效率!

与常规中断处理(ARM7)的比较:

图片

晚到中断

Cortex-M3的中断处理还有另一个机制,它强调了优先级的作用,这就是 “晚到的异常处理”

这里有一种情况,低优先级中断先发生,而在低优先级中断压栈的过程中又发生了高优先级的中断,这时高优先级中断就会抢占低优先级中断,如果高优先级中断再压栈然后执行,再出栈,低优先级中断执行再出栈,这样对这 8 个寄存器又是重复入栈出栈 2 次,做了无用功,Cortex-M3 内核采用晚到中断机制避免这种问题发生,来看下图:

比如,若在响应某低优先级异常#1的早起,检测到了高优先级异常#2,则只要#2没有太晚,就能以“晚到中断”的方式处理,在入栈完毕后执行ISR#2。如图所示:

图片

如果异常#2来得太晚,以至于已经执行了ISR#1的指令,则按普通的抢占处理,这会需要更多的处理器时间和额外32字节的堆栈空间。在ISR#2执行完毕后,则以“咬尾中断”的方式来启动ISR#1的执行。

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

    关注

    68

    文章

    19156

    浏览量

    229062
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119983
  • Cortex-M3
    +关注

    关注

    9

    文章

    269

    浏览量

    59425
  • 中断优先级
    +关注

    关注

    0

    文章

    22

    浏览量

    9348
  • 中断嵌套
    +关注

    关注

    0

    文章

    7

    浏览量

    6835
收藏 人收藏

    评论

    相关推荐

    不同优先级中断中处理时怎么理解

    处理中断时,怎么理解
    发表于 03-28 03:34

    Cortex-M3处理器中断与FreeRTOS中断优先级配置

    置顶/星标公众号,不错过每一条消息!很多朋友对中断的一些知识还是不了解,今天就写点关于Cortex-M3处理器中断相关,以及FreeRTOS中断
    发表于 08-13 06:16

    ARM Cortex-M3中断体系

    外部中断一、ARM Cortex-M3中断体系二、代码思路函数接口1.为引脚选择使用哪个中断2.配置外部中断
    发表于 08-16 07:38

    Cortex-M3权威指南介绍

    Cortex-M3处理器介绍基本的硬件构架和指令系统待
    发表于 11-23 11:01 0次下载

    STM32的Cortex-M3中断异常处理

    在STM32处理器中有43个可屏蔽中断通道(不包含 16个 Cortex?-M3中断线)。共设置了16个可编程的优先等级(使用了 4位中断
    发表于 11-16 15:35 8124次阅读
    STM32的<b class='flag-5'>Cortex-M3</b><b class='flag-5'>中断</b>异常处理

    Cortex-M3处理器中断和FreeRTOS中断优先级配置

    STM32属于ARM中Cortex-M系列处理器,比如:STM32F1数据Cortex-M3,STM32F7数据Cortex-M7。
    的头像 发表于 12-30 11:23 7031次阅读
    <b class='flag-5'>Cortex-M3</b>处理器<b class='flag-5'>中断</b>和FreeRTOS<b class='flag-5'>中断</b>优先级配置

    Cortex-M3 NVIC与中断控制资料下载

    电子发烧友网为你提供Cortex-M3 NVIC与中断控制资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-11 08:41 7次下载
    <b class='flag-5'>Cortex-M3</b> NVIC与<b class='flag-5'>中断</b>控制资料下载

    Cortex-M3的异常和中断资料下载

    电子发烧友网为你提供Cortex-M3的异常和中断资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-22 08:51 4次下载
    <b class='flag-5'>Cortex-M3</b>的异常和<b class='flag-5'>中断</b>资料下载

    Cortex-M3Cortex-M4 Fault异常应用之基础知识资料下载

    电子发烧友网为你提供Cortex-M3Cortex-M4 Fault异常应用之基础知识资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的
    发表于 04-23 08:50 10次下载
    <b class='flag-5'>Cortex-M3</b>和<b class='flag-5'>Cortex-M</b>4 Fault异常应用之<b class='flag-5'>基础知识</b>资料下载

    Cortex-M3工作模式、异常与中断介绍资料下载

    电子发烧友网为你提供Cortex-M3工作模式、异常与中断介绍资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-27 08:43 4次下载
    <b class='flag-5'>Cortex-M3</b>工作模式、异常与<b class='flag-5'>中断</b><b class='flag-5'>介绍</b>资料下载

    STM32的NVIC与中断简介&&Cortex-M内核的识别

    实现编程的步骤。一 基础知识1. cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断。(本博文只
    发表于 12-01 11:51 7次下载
    STM32的NVIC与<b class='flag-5'>中断</b>简介&&<b class='flag-5'>Cortex-M</b>内核的识别

    STM32 的核心Cortex-M3 处理器

    STM32的核心Cortex-M3 处理器是一个标准化的微控制器结构,希望思考一下,何为标准化?简言之,Cortex-M3 处理器拥有32 位CPU,并行总线结构,嵌套中断向量控制单元,调试系统以及
    发表于 12-01 11:51 9次下载
    STM32 的核心<b class='flag-5'>Cortex-M3</b> 处理器

    Cortex-M4和Cortex-M3内核的systick不进中断的软件延时

    Cortex-M4和Cortex-M3内核的systick不进中断的软件延时Cortex-M3/4自带的systick系统定时器在用作延时功能时常常会以
    发表于 12-01 11:51 3次下载
    <b class='flag-5'>Cortex-M</b>4和<b class='flag-5'>Cortex-M3</b>内核的systick不进<b class='flag-5'>中断</b>的软件延时

    什么是中断架构

    Cortex-M3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但STM32并没有使用
    的头像 发表于 03-01 17:41 752次阅读
    什么是<b class='flag-5'>中断</b>架构

    Cortex-M3中断优先级的相关知识

    本文详细介绍Cortex-M3中断优先级相关知识
    的头像 发表于 03-23 11:45 2559次阅读
    <b class='flag-5'>Cortex-M3</b><b class='flag-5'>中断</b>优先级的相关<b class='flag-5'>知识</b>