当前位置: 首页 > news >正文

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.dtcms.com/a/310595.html

相关文章:

  • Spring AI 与 LangChain4j 对比及入门案例解析
  • Selenium:强大的 Web 自动化测试工具
  • VS Code中配置使用slint(Rust)的一个小例子
  • 亚马逊广告:如何借助AI玩转长尾词提升ROI
  • 伞状Meta分析重构癌症幸存者照护指南:从矛盾证据到精准决策
  • (28)运动目标检测之随机曲线上的离散点进行插值
  • 金智维董事长廖万里出席2025中国科创投资夏季峰会,共话智能体垂直落地新路径
  • deepseek: 批量处理脚本
  • shell脚本的语法使用及例题
  • Vue.js的核心概念
  • LVDS系列23:Xilinx Ultrascale系ISERDESE3原语(一)
  • 系统开机时自动执行指令
  • Java:JWT 从原理到高频面试题解析
  • 04 基于sklearn的机械学习-梯度下降(上)
  • 什么样的业务需要国内动态IP轮换?
  • 第二篇:Linux 文件系统操作:从基础到进阶
  • RAL-2025 | “藏宝图”驱动的具身导航!HAM-Nav:基于手绘地图引导的机器人导航
  • GitPython08-源码解读
  • 进阶08:C#与SQL Server通信
  • 高效连接,3针M12航空插头助您畅行无阻
  • PSA 制氧装置和VPSA 制氧装置技术特点有什么不同
  • [VL|RIS] ReferSAM
  • windows电脑开机或重启,server不能自启动
  • 关税战火中的技术方舟:新西兰证券交易所的破局之道 ——从15%关税冲击到跨塔斯曼结算联盟,解码下一代交易基础设施
  • 开发后台管理系统的注意事项
  • 26考研|数学分析:曲线(面)积分·三大公式
  • Windows系统优化命令-记录
  • 全国增值税发票查验流程-批量核验-接口集成简便高效
  • 四、基于SpringBoot,MVC后端开发笔记
  • opencv-python的GPU调用