FreeRTOS硬件中断发生时的现场

        在FreeRTOS中,当硬件中断发生时,当前正在运行的任务会立即被挂起,处理器会跳转到中断相关的中断服务程序中,在中断服务程序执行期间,遵循以下规则:

1、中断独占CPU,ISR拥有最高的执行优先级,在它执行完毕并显示退出之前,没有任何任务能够得到CPU时间片来运行,处理器完全用于执行ISR代码,也就是说,任务和裸奔时的while循环一样,内部怎么调度,那是他们自己的事儿,中断一旦来临,他们都靠边站;

2、中断嵌套,如果系统允许中断嵌套,并且发生了更高级的中断,那么当前ISR会被新的中断抢占,这和裸奔没啥区别;

3、ISR中触发调度,中断服务程序执行完毕以后,会发生哪些事情呢?主要取决于以下几个方面:

(1)、中断是否触发了任务切换,也就是说,在中断中,是否调用了portYIELD_FROM_ISR()接口;

(2)、FreeRTOS调度模式的配置,也就是configUSE_PREEMPTION的配置,如果配置为1,则为抢占式,如果配置为0,则为协作式,一班情况下,都是抢占式;

(3)、是否有更高优先级的任务就绪;

以下是中断退出后系统调度的详细流程和规则:

(1)、中断退出时的核心决策点

        中断退出代码(通常是portYIELD_FROM_ISR(xHigherPriorityTaskWoken或者是portEND_SWITCHING_ISR(xHigherPriorityTaskWoken)),是调度的触发点;

        该宏的参数xHigherPriorityTaskWoken的值是关键的输入;

(2)、调度逻辑

        当xHigherPriorityTaskWoken的值为true时,退出中断后,处理器不会返回到被中断的任务,调度器会检查就绪的任务列表,选择优先级最高的就绪任务运行;

        当xHigherPriorityTaskWoken的值为false时,退出中断后,处理器会返回到被中断的任务继续执行,但是同时调度器会检查就绪的任务列表,在下一个调度点,切换到更高优先级的任务上;

简单的来说:这有点儿类似于篮球场上的换人,中断退出的那一刻(类似于罚球时刻),系统会看中断服务程序有没有要求主动“换人”,如果portYIELD_FROM_ISR(pdTRUE),则表示主动要求“换人”,马上就会换上优先级最高的就绪任务,否则,只能在下一个调度点(类似于暂停等停球点)换上优先级最高的就绪任务;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91475.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kotlin语法和特性分析

核心设计哲学: 简洁 (Concise): 减少样板代码(如 getter/setter、类型推导),让代码表达更直接。安全 (Safe): 从语言层面设计来避免常见错误(尤其是空指针异常)。互操作性 (Interoperable): 与 Java 无缝集…

二进制数本身没有默认的有符号或无符号解释

文章目录1. ​**​硬件层面:CPU 不区分有符号/无符号​**​2. ​**​解释权在程序员手中​**​3. ​**​默认倾向性(非绝对规则)​**​4. ​**​如何避免混淆?​**​5. ​**​经典示例​**​总结1. **解释为无符号数(U…

(AI) Server (Hardware) Architecture

Overview by Atlas T800 Just found a good product demo. from Huawei for its Atlas T800, here 计算产品3D展示 First turn off all modules and we can delve into how this server is organized. Core This is an AI server with 910B as its main feature, which is …

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博评论数据可视化分析-用户评论词云图实现

大家好,我是java1234_小锋老师,最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程,持续更新中,计划月底更新完,感谢支持。今天讲解微博评论数据可视化分析-用户评论词云图实现…

【Linux学习|黑马笔记|Day1】Linux初识、安装VMware Workstation、安装CentOS7、远程连接、虚拟机快照

Linux DAY1 前言 因为之前MySQL学到安装Linux版本的MySQL了,需要安装虚拟机等等,所以我打算先学完Linux的全部课程,期间继续学MySQL 文章目录Linux DAY1一.1)操作系统概述2)Linux初识3)虚拟机4.1&#xff…

编程与数学 03-002 计算机网络 13_无线网络技术

编程与数学 03-002 计算机网络 13_无线网络技术一、无线网络的基本概念(一)无线通信的频段与标准(二)无线网络的优势与挑战二、无线局域网(WLAN)(一)802.11标准系列(二&a…

肖特基二极管MBR0540T1G 安森美ON 低电压 高频率 集成电路IC 芯片

MBR0540T1G ON Semiconductor:超低VF肖特基二极管,重新定义电源效率!🔥 一、产品简介 MBR0540T1G 是安森美(ON Semiconductor)推出的0.5A/40V肖特基势垒二极管,采用专利沟槽结构,专…

windows内核研究(软件调试-调试事件采集)

软件调试调试事件采集前面有说到在调试器和被调试之间会创建一个_DEBUG_OBJECT对象来进行关联调试事件的种类 被调试进程会把一个个的调试事件写到_DEBUG_OBJECT中的一个成员链表中,调试器就通过它们建立的 _DEBUG_OBJECT调试对象获取调式事件,但并不是进…

Web开发-PHP应用组件框架前端模版渲染三方插件富文本编辑器CVE审计

类别组件/框架说明[Web框架]Laravel现代化、功能全面的框架,适合大多数Web应用。Symfony高度模块化、功能强大的框架,适合复杂应用。CodeIgniter轻量级框架,适合快速开发。Zend Framework (Laminas)企业级框架,适合大规模应用&…

Spring Boot Actuator 保姆级教程

1. 引言 Spring Boot Actuator 是一个功能强大的监控工具,能够帮助开发者监控和管理应用的运行状态。通过 Actuator,我们可以轻松获取应用的健康状况、配置信息、性能指标等。本文将一步步引导你如何配置和使用 Actuator,以及如何通过它来监控…

使用 whisper, 音频分割, 初步尝试,切割为小块,效果还不错 1

对于一首歌而言,如何断句?即,一个 mp4 或是 mp3 文件,或是一段录音, 如何使用程序,或是 ai 来断句。分割为一句一句的片段??如果人工来分割,一般是使用 capcut 之类的剪辑软件。但是效率太慢了。所以我想能否设计一个简洁的,自动的程序来处理。这种事情,专业的名称…

AD2S1210的DOS LOT含义

一、​​信号质量监控类寄存器​​​​LOT阈值(0x88)​​​​作用​​:设定信号丢失(Loss of Signal)的判定门槛。​​场景​​:当正弦或余弦输入信号幅值低于此值时,芯片认为信号丢失&#xff…

Au速成班-多轨编辑流程

基础编辑工作流,包含文件导入,导出,音量调节,部分效果添加。 创建多轨会话 设置工程文件名称、文件位置、采样率、位深度、主控等。 界面管理 ,界面说明详细可看 Au速成班-基础篇_au界面介绍-CSDN博客 音量调节点击…

Rust实现GPU驱动的2D渲染引擎

当传统CPU渲染遭遇性能瓶颈时,GPU驱动的架构正在革新2D图形领域。本文将深入解析用Rust编写的​​完全GPU驱动的2D渲染引擎Vello​​,揭秘其如何通过并行计算实现丝滑渲染。 一、GPU Driven革命:为何是Vello? 传统渲染的瓶颈 传…

【ELasticsearch】温、冷数据节点能是同一个节点吗

温、冷数据节点能是同一个节点吗1.节点角色与分层存储原理2.一个节点能否同时是 “温” 和 “冷” 节点 ?3.为什么通常不是最佳实践 ?4.可能的适用场景(非常有限)5.结论在 Elasticsearch 中,理论上,一个物理…

报错:selenium.common.exceptions.ElementNotInteractableException: Message

针对该错误,以下是分步解决方案: 1. 显式等待确保元素可交互 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC# 等待元素可点…

sqli-labs:Less-10关卡详细解析

1. 思路🚀 本关的SQL语句为: $id ".$id."; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入类型:字符串型(双引号包裹)提示:参数id需以"闭合 php回显输出语句的代码如…

imx6ull-驱动开发篇5——新字符设备驱动实验

目录 前言 新字符设备驱动原理 申请设备号 注册设备号 释放设备号 注册方法 字符设备结构cdev cdev_init 函数 cdev_add 函数 cdev_del 函数 自动创建设备节点 mdev 机制 类创建函数 类删除函数 创建设备函数 删除设备函数 设置文件私有数据 实验程序编写 l…

2025年最新SCI-灰熊增脂优化器(Grizzly Bear Fat Increase, GBF)-附完整Matlab免费代码

1、简介 本文介绍了一种新的受自然启发的优化算法,称为灰熊增脂优化器(GBFIO)。GBFIO算法模仿灰熊积累体脂为过冬做准备的自然行为,利用它们的狩猎、捕鱼和吃草、蜂蜜等策略。因此,GBFIO算法建模并考虑了三个数学步骤来…

Python爬虫02_Requests实战网页采集器

一、Request请求伪装解析 #UA:User-Agent(请求载体身份标识) #UA检测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份呢标识为某一款浏览器,说明该请求是一个正常的请求&#xff…