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

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

3天内不再提示

FreeRTOS调度器介绍

麦克泰技术 来源:麦克泰技术 2023-10-17 16:08 次阅读

FreeRTOS是一个为嵌入式系统设计的开源实时操作系统。它提供了一个多任务内核和一系列功能组件,适合在资源受限的设备上管理实时任务和应用程序。

FreeRTOS调度介绍

FreeRTOS提供多任务处理功能,允许您在资源受限的环境中同时运行多个任务, FreeRTOS提供了一个调度器,根据优先级和调度策略确定哪个任务何时运行。

FreeRTOS调度器

调度器是任何操作系统(包括FreeRTOS)的关键组件,它管理任务的执行,并决定接下来应该运行哪个任务,调度器在做出调度决策时会考虑任务优先级和其他调度策略。

FreeRTOS调度策略

FreeRTOS遵循优先可抢占的调度策略,每个任务都被分配一个优先级,通常是一个数值(低值代表高优先级)。准备运行的最高优先级的任务获得CPU时间。

当优先级更高的任务准备就绪,中断当前正在运行的任务时,就会发生抢占。同等优先级的任务在其优先级组内遵循时间切片轮状方法。如有必要,你可以在运行时动态更改任务优先级。

FreeRTOS调度器配置

1、任务创建:

使用`xTaskCreate()`函数创建任务,指定任务函数、名称、堆栈大小、优先级和其他参数

2、内核初始化:

调用`vTaskStartScheduler()`初始化FreeRTOS内核并开始任务调度。

3、设置任务优先级:

如果需要,使用`vTaskPrioritySet()`在运行时动态更改任务优先级。

4、闲置任务钩(可选):

如果需要,使用`vApplicationIdleHook()`使用空闲任务钩子进行空闲时间处理。

5、配置滴答频率

在FreeRTOS配置(FreeRTOSConfig.h)文件中使用`configTICK_RATE_HZ`调整系统刻度频率,以控制任务调度粒度。

6、处理中断

确保正确处理中断,特别是那些与FreeRTOS任务交互的中断。

FreeRTOS可抢占优先调度与时间切片轮转

FreeRTOS将基于优先级可抢占调度与同等优先级任务的时间切片相结合,如果多个任务具有相同的优先级,则以循环方式安排它们执行,以确保公平性。

当高优先级的任务准备好运行时,它会抢占当前正在运行的任务,确保高优先级的任务立即得到关注。时间切片允许同等优先级的任务共享CPU时间,防止一个任务垄断CPU。

7c35eed6-6cc2-11ee-939d-92fbcf53809c.png






审核编辑:刘清

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

    关注

    40

    文章

    3431

    浏览量

    128225
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206574
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61349
  • 调度器
    +关注

    关注

    0

    文章

    95

    浏览量

    5161

原文标题:FreeRTOS系列技术文章:FreeRTOS调度器

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FreeRTOS介绍与基础任务创建

    本篇介绍FreeRTOS与基础任务创建
    的头像 发表于 09-26 09:00 1874次阅读
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>介绍</b>与基础任务创建

    转:第14章 任务调度—抢占式,时间片和合作式

    本章教程为大家将介绍FreeRTOS操作系统支持的任务调度方式:抢占式,时间片和合作式,这部分算是FreeRTOS操作系统的核心了。对于初学者来说,要一下子就能够理解这些比较困难,需要
    发表于 08-30 09:55

    转第16章 FreeRTOS调度锁,任务锁和中断锁

    的任务锁函数,但是使用FreeRTOS现有的功能有两种实现方法:(1)通过给调度加锁实现利用FreeRTOS调度锁功能给
    发表于 09-01 07:45

    FreeRTOS如何使用delay作为系统延时、任务调度

    请教一个问题,最近在学习使用FreeRTOS,想像原子一样在delay.c里添加RTOS的系统支持,即使用tick时钟作延时。现在有几个问题:1、在启动任务调度前,如果调用了delay_ms
    发表于 06-10 04:37

    请问FreeRTOS是如何实现调度的?

    最近入门RTOS,首先看书了解了合作式调度的应用,其基本思想是在主循环中不断执行调度函数,在SysTick中断中更新任务状态,程序我也大致看懂了。之后到了入门FreeRTOS遇到了困
    发表于 07-30 07:40

    【转载】AT32 FreeRTOS应用笔记

    .......................................................93FreeRTOS 软件定时组 .............................. 100软件定时
    发表于 08-16 11:56

    FreeRTOS时间片调度概述

    一、FreeRTOS时间片调度概述FreeRTOS支持多个任务同时拥有一个优先级,这些任务的调度就可以使用时间片来进行调度。在
    发表于 02-18 06:10

    FreeRTOS时间片进行任务调度​有哪些注意事项呢

    注意:①任务切换会存在时间片开销;FreeRTOS支持时间片,每个优先级可以支持无限多个任务,这些任务的调度就是时间片调度;在FreeRTOS中允许一个任务运行一个时间片(一个时钟节拍
    发表于 02-18 07:46

    ch32v103r8t6在freertos下使用u***枚举失败,且freertos不能正常调度是为什么?

    mcu:ch32v103r8t6背景:freertos下使用u*** device现象:freertos下使用u***枚举失败,且rtos不能正常调度u***相关代码在没有os下都是ok
    发表于 05-16 06:43

    FreeRTOS如何针对使用xTaskCreate创建的那些任务进行调度

    调用生成所有其他任务,其中任务优先级为 0..MAX_PRIORITIES-1。如果完全映射,FreeRTOS 任务优先级如何映射到 CMSIS 任务优先级?我问的原因是,如果我让 StartDefaultTask 保持活动状态,它如何针对使用 xTaskCreate 创建的那些任务进行
    发表于 01-10 06:20

    编译优化的静态调度介绍

    方法,在实际应用中,存在各种基于该方法的改进方案。关于LLVM编译中的表调度算法,可以先自行阅读其源码,更多相关介绍,敬请期待。  结语  本文简单介绍了指令
    发表于 03-17 17:07

    什么是操作系统?FreeRTOS中文实用教程让你快速入门FreeRTOS

    本文档的主要内容详细介绍的是什么是操作系统?FreeRTOS中文实用教程让你快速入门FreeRTOS带你了解了1.认识操作系统 2.轻松上手RTOS 3.FreeRTOS多任务
    发表于 09-12 16:51 258次下载
    什么是操作系统?<b class='flag-5'>FreeRTOS</b>中文实用教程让你快速入门<b class='flag-5'>FreeRTOS</b>

    freertos移植教程_freertos任务调度原理

    在移植之前,我们首先要获取到FreeRTOS的官方的源码包。
    发表于 04-16 09:16 1.2w次阅读
    <b class='flag-5'>freertos</b>移植教程_<b class='flag-5'>freertos</b>任务<b class='flag-5'>调度</b>原理

    FreeRTOS时间片调度

    一、FreeRTOS时间片调度概述FreeRTOS支持多个任务同时拥有一个优先级,这些任务的调度就可以使用时间片来进行调度。在
    发表于 12-23 19:57 1次下载
    <b class='flag-5'>FreeRTOS</b>时间片<b class='flag-5'>调度</b>

    FreeRTOS时间片进行任务调度

    注意:①任务切换会存在时间片开销;FreeRTOS支持时间片,每个优先级可以支持无限多个任务,这些任务的调度就是时间片调度;在FreeRTOS中允许一个任务运行一个时间片(一个时钟节拍
    发表于 12-23 20:02 0次下载
    <b class='flag-5'>FreeRTOS</b>时间片进行任务<b class='flag-5'>调度</b>​