FreeRTOS操作系统学习——空闲任务及其钩子函数

news2024/11/23 19:19:18

空闲任务

当 FreeRTOS 的调度器启动以后就会自动的创建一个空闲任务,这样就可以确保至少有一任务可以运行。但是这个空闲任务使用最低优先级,如果应用中有其他高优先级任务处于就绪态的话这个空闲任务就不会跟高优先级的任务抢占 CPU 资源。空闲任务还有另外一个重要的职责,如果某个任务要调用函数 vTaskDelete()删除自身,那么这个任务的任务控制块 TCB 和任务堆栈等这些由 FreeRTOS 系统自动分配的内存需要在空闲任务中释放掉,如果删除的是别的任务那么相应的内存就会被直接释放掉,不需要在空闲任务中释放。因此,一定要给空闲任务执行的机会!除此以外空闲任务就没有什么特别重要的功能了,所以可以根据实际情况减少空闲任务使用 CPU 的时间(比如,当 CPU 运行空闲任务的时候使处理器进入低功耗模式)。

  • 空闲任务优先级为0:它不能阻碍用户任务运行
  • 空闲任务要么处于就绪态,要么处于运行态,永远不会阻塞

用户可以创建与空闲任务优先级相同的应用任务,当宏 configIDLE_SHOULD_YIELD 为1的话应用任务就可以使用空闲任务的时间片,也就是说空闲任务会让出时间片给同优先级的应用任务,这种机制要求FreeRTOS 使用抢占式内核。

钩子函数

介绍

FreeRTOS 中有多个钩子函数,钩子函数类似回调函数,当某个功能(函数)执行的时候就会调用钩子函数,至于钩子函数的具体内容那就由用户来编写。如果不需要使用钩子函数的话就什么也不用管,钩子函数是一个可选功能,可以通过宏定义来选择使用哪个钩子函数,可选的钩子函数如下表所示
在这里插入图片描述
原文链接:https://blog.csdn.net/Dustinthewine/article/details/130424103

注意:如果使用vTaskDelete()来删除任务,那么你就要确保空闲任务有机会执行,否则就无法释放被删除任务的内存。我们可以添加一个空闲任务的钩子函数(Idle
Task Hook Functions),空闲任务的循环每执行一次,就会调用一次钩子函数。

作用

⚫ 执行一些低优先级的、后台的、需要连续执行的函数
⚫ 测量系统的空闲时间:空闲任务能被执行就意味着所有的高优先级任务都停止了,所以测量空闲任务占据的时间,就可以算出处理器占用率。
⚫ 让系统进入省电模式:空闲任务能被执行就意味着没有重要的事情要做,当然可以进入省电模式了。

局限性

空闲任务的钩子函数的限制:
⚫ 不能导致空闲任务进入阻塞状态、暂停状态
⚫ 如果你会使用vTaskDelete()来删除任务,那么钩子函数要非常高效地执行。如果空闲任务移植卡在钩子函数里的话,它就无法释放内存。

使用前提

在FreeRTOS\Source\tasks.c 中,可以看到如下代码,所以前提就是:
⚫ 把这个宏定义为1:configUSE_IDLE_HOOK
⚫ 实现vApplicationIdleHook 函数 在这里插入图片描述

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

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

相关文章

图机器学习(1)--导论

0 CS224W概况 斯坦福大学CS224W课程:http://cs224w.stanford.edu/ 图机器学习的库: 为什么是图?图是描述和分析具有关系/交互的实体的通用语言。 1 图数据举例 复杂域具有丰富的关系结构,可以表示为关系图。 通过显式地建模关…

比瓴科技强势领跑软件开发安全领域,ASPM名列赛道第一

近日,斯元商业咨询正式发布2024首版「网安新兴赛道厂商速查指南|短名单精选」。比瓴科技入围七个赛道,其中ASPM、ASOC、SDL位居赛道第一。 应用安全态势管理(ASPM) 降低应用安全漏洞及数据泄露风险 比瓴在软件安全领…

seliunx 基础规则介绍

一 SELinux的状态 enforcing:强制,每个受限的进程都必然受限 permissive:允许,每个受限的进程违规操作不会被禁止,但会被记录于审计日志 disabled:禁用 二 相关命令 getenforce: 获取selinux当前状…

SDWAN专线,解决银行网络搭建痛点

金融行业的不断发展和数字化转型,银行网络的搭建和管理面临着诸多挑战和痛点。SD-WAN(Software-Defined Wide Area Network,软件定义广域网)专线作为一种创新的网络解决方案,为银行解决了诸多网络搭建痛点,…

Hadoop集群配置与管理指南

目录 前言一、Hadoop集群配置历史服务器二、配置日志的聚集三、集群启动/停止方式总结四、编写Hadoop集群常用脚本五、常用端口号说明最后 前言 这篇文章内容覆盖了Hadoop集群中一些重要且常用的配置和管理任务。首先,我们将介绍如何配置Hadoop集群的历史服务器&am…

基于ceph-deploy部署Ceph 集群

Ceph分布式存储一、存储基础1、单机存储设备1.1 单机存储的问题 2、分布式存储(软件定义的存储SDS)2.1 分布式存储的类型 二、Ceph简介1、Ceph优势2、Ceph架构3、Ceph 核心组件4、OSD 存储后端5、Ceph 数据的存储过程6、Ceph 版本发行生命周期 三、Ceph 集群部署1、 基于 ceph-…

java: No enum constant javax.lang.model.element.Modifier.SEALED报错

这里我的idea版本为2021.03,JDK版本为21.0.2。经过大量冲浪后大多数都是让修改JDK版本,原因是Modifier.SEALED是JDK15新增的,但是当我修改完JDK版本后并无卵用。 尝试在代码中声明,也没问题可以引用到,这就怪了&#…

AI付费课程水分大 网红博主李一舟卖课被下架

日前,OpenAI旗下的文生视频模型Sora爆火,网上的AI付费课程嗅到商机,开始上线大量相关教学视频,几元至百元就号称能从入门小白到大神,其中就包括自称清华博士的李一舟。不过,李一舟很快就翻车了,…

6个免费可商用的高清图片素材网站,建议收藏!

作为设计师或者是自媒体创作者,都需要寻找高质量的图片素材为作品增添色彩,但随意找的图片素材很容易侵权。为了让大家能找到免费又能商用的图片素材,这期分享我经常用的6个图片素材网站,免费下载还能商用,赶紧收藏起来…

【产品经理方法论——产品的基本概念】

1. 产品学三元素 产品学有三个元素:用户、需求、产品 产品学的内容:根据用户的需求设计产品,使用产品服务用户 仅仅通过三个元素无法说明每个元素的概念,因为三个元素互为说明关系。 通过引入人/群体来说明三个元素的关系。 需…

腾讯云最新活动_腾讯云促销优惠_代金券-腾讯云官网入口

腾讯云服务器多少钱一年?62元一年起,2核2G3M配置,腾讯云2核4G5M轻量应用服务器218元一年、756元3年,4核16G12M服务器32元1个月、312元一年,8核32G22M服务器115元1个月、345元3个月,腾讯云服务器网txyfwq.co…

20240305-2-海量数据处理常用技术概述

海量数据处理常用技术概述 如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。 所谓海量数据处理,是指基于海量数据的存储、处理和操作等。因为数据量太大无…

985硕的4家大厂实习与校招经历专题分享(part2)

我的个人经历: 985硕士24届毕业生,实验室方向:CV深度学习 就业:工程-java后端 关注大模型相关技术发展 校招offer: 阿里巴巴 字节跳动 等10 研究生期间独立发了一篇二区SCI 实习经历:字节 阿里 京东 B站 (只看大厂,面试…

抖店应该怎么运营,2024新版入门教程分享,快速起店玩法

我是王路飞。 抖店快速起店的方法有很多,爆款截流、低价引流、全店动销、货损起店、达人带货等等。 今天主要给你们说下达人带货爆款截流的玩法,你们相结合着去做。 感兴趣的可以先收藏并关注,文末也有免费的抖店资料和领取。 内容来源于…

容器化技术

容器化技术并不是由Docker引入,而是有其发展历程。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资惊使用需求。容器可以在核心CPU运行指令,而不需要任何专门的解释机制。容器避免了准虚拟化(pa…

Latte:一个类似Sora的开源视频生成项目

前段时间OpenAI发布的Sora引起了巨大的轰动,最长可达1分钟的高清连贯视频生成能力秒杀了一众视频生成玩家。因为Sora没有公开发布,网上对Sora的解读翻来覆去就那么多,我也不想像复读机一样再重复一遍了。 本文给大家介绍一个类似Sora的视频生…

第五篇:组件更新:完整的 DOM diff 流程是怎样的?(下)

下面我们来继续讲解上节课提到的核心 diff 算法。 新子节点数组相对于旧子节点数组的变化,无非是通过更新、删除、添加和移动节点来完成,而核心 diff 算法,就是在已知旧子节点的 DOM 结构、vnode 和新子节点的 vnode 情况下,以较…

Vue+SpringBoot打造超市账单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统设计3.1 总体设计3.2 前端设计3.3 后端设计在这里插入图片描述 四、系统展示五、核心代码5.1 查询供应商5.2 查询商品5.3 新增超市账单5.4 编辑超市账单5.5 查询超市账单 六、免责说明 一、摘要 1.1 项目介绍 基于…

【轮式平衡机器人】——TMS320F28069片内外设之ePWM

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习! 引入 脉冲宽度调制(PWM)是一种对模拟信号进行数字编码的方法,硬件原理是根据相应载荷的变化来调制晶体管栅极或基极的偏置&…

3. 在Go语言项目中使用Zap日志库

文章目录 一、介绍二、 默认的Go Logger1. 实现Go Logger2. 设置Logger3. 使用Logger4. Logger的运行5. Go Logger的优势和劣势 三、Uber-go Zap1. 为什么选择Uber-go zap2. 安装3. 配置Zap Logger4. 定制logger4.1 将日志写入文件而不是终端4.2 将JSON Encoder更改为普通的Log…