Cortex-M3 咬尾中断 与 晚到中断
【咬尾中断】
在处理器在响应某些异常时,如果又发生其他异常,但它们优先级不够高,则它们会被阻塞。
那么,在当前的异常执行返回后,系统处理悬起的异常时,倘若还是先POP,然后又把POP处理的内容PUSH回去,那么就白白浪费CPU时间了。因此,Cortex-M3不会再POP这些寄存器,而是继续使用上一个异常已经PUSH好的结果,消除POP和PUSH操作的耗时。
这么一来,看上去好像后一个异常把前一个的尾巴要掉了,前前后后只执行了一次PUSH/POP操作。于是,这两个异常之间的“时间沟”就变窄了很多,如图所示:

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

【晚到中断】
Cortex-M3的中断处理还有另一个机制,它强调了优先级的作用,这就是“晚到的异常处理”。
当Cortex-M3对某异常的响应序列还处在早期:入栈的阶段,尚未执行其他服务程序时。如果此时收到了更高优先级异常的请求,则本次入栈就成了高优先级中断做的了。入栈后,将执行高优先级的异常服务程序。可见,高优先级的异常虽然来晚了,却因为优先级高使得服务程序可以被先处理,低优先级异常的入栈操作则变成了为高优先级异常的入栈。
比如,若在响应某低优先级异常#1的早起,检测到了高优先级异常#2,则只要#2没有太晚,就能以“晚到中断”的方式处理,在入栈完毕后执行ISR#2。如图所示:

如果异常#2来得太晚,以至于已经执行了ISR#1的指令,则按普通的抢占处理,这会需要更多的处理器时间和额外32字节的堆栈空间。在ISR#2执行完毕后,则以“咬尾中断”的方式来启动ISR#1的执行。
参考摘录:
《Cortex-M内核系列和STM32-讲座2教程.pdf》
《ARM Cortex-M3权威指南.pdf》
Cortex-M3 咬尾中断 与 晚到中断的更多相关文章
- stm32和cortex M3学习内核简单总结
1.stm32综述 2.寄存器组 3.操作模式和特权级别 4.存储器映射 5.中断和异常 6.其他 Stm32综述 这可以说是我第一款认真学习的单片机了,学完这个就要开启我通往arm9的大门了,接下来 ...
- ARM Cortex M3系列GPIO口介绍(工作方式探讨)
一.Cortex M3的GPIO口特性 在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置. Cortex M3结构框图 从图中可以看出 ...
- ARM Cortex M3(V7-M架构)硬件启动程序 一
Cortex-m3启动代码分析笔记 启动代码文件名是STM32F10X.S,它的作用先总结下,然后再分析. 启动代码作用一般是: 1)堆和栈的初始化: 2)中断向量表定义: 3)地址重映射及中断向量表 ...
- 【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别
ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版 ...
- 【freertos】002-posix模拟器设计与cortex m3异常处理
目录 前言 posix 标准接口层设计 模拟器的系统心跳 模拟器的task底层实质 模拟器的任务切换原理 cortex M3/M4异常处理 双堆栈指针 双操作模式 栈帧 EXC_RETURN 前言 如 ...
- ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系?(转载自知乎)
ARM架构: 由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~ARMv8种类. ARM7: 一类采用ARMv3或ARMv4架构的,使用冯诺依曼结构的内核. ...
- STM32学习之路入门篇之指令集及cortex——m3的存储系统
STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码 操作数1, 操作数2,... ...
- Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...
- Linux中断管理 (1)Linux中断管理机制
目录: <Linux中断管理> <Linux中断管理 (1)Linux中断管理机制> <Linux中断管理 (2)软中断和tasklet> <Linux中断管 ...
随机推荐
- kbmMW 5.09测试报告(1)-Scheduler
这个版本除了增加新的SmartBinding功能,同时提供了大量的功能更新以及bug修正.其中,SmartBinding的介绍,xalion已经第一时间写了初识kbmmw 中的smartbind功能, ...
- deep_learning_Function_ lambda函数详解
这里总结了关于 Python 中的 lambda 函数的“一个语法,三个特性,四个用法”. 一个语法: 在 Python 中,lambda 函数的语法是唯一的.其形式如下: lambda argume ...
- 【2017-05-04】winfrom进程、线程、用户控件
一.进程 一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序. 1.开启某个进程Process.Start("文件缩写名"); 注意:Process要解析命名空间. 2. ...
- openGL中的gl,glu,glut
OpenGL函数库相关的API有核心库(gl).实用库(glu).辅助库(aux).实用工具库(glut).窗口库(glx.agl.wgl)和扩展函数库等.gl是核心,glu是对gl的部分封装.glx ...
- Linux之top 监视系统任务的工具
top 监视系统任务的工具: 和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的: top 命令用法及参数: top 调用方法: top 选择参数 参数: -b 以批量模式运 ...
- metapath2vec 笔记
Homogeneous networks: representative of singular type of nodes and relationships Challenges: multipl ...
- Linux用iso镜像制作本地yum源
本次使用的软件为RHEL 6.5和VMware Workstation10 挂载iso镜像 (创建挂载目录,再挂载,进入目录查看是否挂载成功) (根据相应情况,镜像文件一般为sr0 我电脑里是第二 ...
- jQuery数据管理:Kendo UI过滤器设置运算符
Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...
- 消金ABS
对于持牌消金公司来说,发行ABS需满足至少3年经营期限的硬性规定,目前已开业的24家消金公司里,有15家符合此项规定. 2019年下半年以来,个人消费金融领域共发行了15个资产证券化产品,发行规模达4 ...
- swoole 定时器 swoole_time_tick 和 swoole_time_after
<?php class myticker{ public $server = null; CONST host = '127.0.0.1'; CONST port = 9502; public ...