FreeRTOS系列

2023-11-06

1. RTOS简介

RTOS全称为 Real Time Operation System,即实时操作系统。RTOS强调的是实时性,又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,不允许超时;而软实时里对处理过程超时的要求则没有很严格。RTOS的核心就是任务调度
在这里插入图片描述
RTOS的多个工作流如下图示:

在这里插入图片描述

RTOS工作原理如下图示:
在这里插入图片描述
RTOS通用组件如下图示:

在这里插入图片描述
RTOS的特点:

  • 更好的事件实时处理机制
  • 更高效利用CPU资源
  • 通用的任务管理框架
2. FreeRTOS介绍

FreeRTOS是RTOS的一种,尺寸非常小,可运行于微控制器上。微控制器是尺寸小,资源受限的处理器,它在单个芯片上包含了处理器本身、用于保存要执行的程序的只读存储器(ROM或Flash)、所执行程序需要的随机存取存储器(RAM),一般情况下程序直接从只读存储器执行

微控制器用于深度嵌入式应用,一般都有非常明确、专门的工作。尺寸的限制以及专用的终端应用等性质,令其很少能使用完整的RTOS实现。因此FreeRTOS仅为内核提供了实时调度功能、任务间通信、时序和同步原语。更准确地说,它是一个实时内核,或实时执行器。命令控制台界面、网络栈等额外的功能可作为附加组件

在这里插入图片描述

在实际使用FreeRTOS的时候我们需要根据自已的需求来配置FreeRTOS,不同架构的MCU在使用的时候配置也不同,下面介绍FreeRTOS配置文件详解

  • 内核配置一
参数名称 参数说明
USE_PREEMPTION 定义调度器模式
CPU_CLOCK_HZ 定义CPU的主频
TICK_RATE_HZ 定义系统时钟节拍数
MAX_PRIORITIES 定义可供用户使用的最大优先级数
MINIMAL_STACK_SIZE 定义空闲任务的栈空间大小
MAX_TASK_NAME_LEN 定义任务名最大的字符数
USE_16_BIT_TICKS 系统时钟节拍计数使用TickType_t数据类型定义
IDLE_SHOULD_YIELD 用于使能与空闲任务同优先级的任务
  • 内核配置二
参数名称 参数说明
USE_MUTEXES 用于使能互斥锁
USE_RECURSIVE_MUTEXES 用于使能递归互斥锁
USE_COUNTING_SEMAPHORES 用于使能计数信号量
QUEUE_REGISTRY_SIZE 用于设置可以注册的信号量和消息队列个数
USE_APPLICATION_TASK_TAG 用于使能任务标记
ENABLE_BACKWARD_COMPATIBILITY 用于使能新版本对老版本的兼容特性
USE_PORT_OPTIMISED_TASK_SELECTION 用于优化优先级列表中药执行的最高优先级任务的算法
USE_TICKLESS_IDLE 用于使能tickless低功耗模式
USE_TASK_NOTIFICATIONS 使能任务间直接的消息传递,包括信号量、事件标志组和消息邮箱
  • 内存管理
参数名称 参数说明
MEMORY_ALLOCATION 定义内存分配模式
TOTAL_HEAP_SIZE 定义动态内存分配总长度
HEAP_NUMBER 定义动态内存管理方式
  • 任务运行信息获取配置
参数名称 参数说明
GENERATE_RUN_TIME_STATS 用于使能任务运行状态参数统计
USE_TRACE_FACILITY 使能此配置将添加额外的结构体成员和函数
USE_STATS_FORMATTING_FUNCTIONS 用户配置宏定义 configUSE_TRACE_FACILITY 和configUSE_STATS_FORMATTING_FUNCTIONS都为 1 的时候,将使能函数 vTaskList() 和 vTaskGetRunTimeStats(),如果两者中任何一个为 0,那么这两个函数都将被禁能
  • 软件定时器
参数名称 参数说明
USE_TIMERS 用于使能软件定时器
  • 中断优先级
参数名称 参数说明
LIBRARY_LOWEST_INTERRUPT_PRIORITY 用于配置 FreeRTOS 用到的 SysTick 中断和 PendSV 中断的优先级
LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 定义了受 FreeRTOS 管理的最高优先级中断
  • 函数Include配置
参数名称 参数说明
vTaskPrioritySet 设置任务优先级
uxTaskPriorityGet 获取任务优先级
vTaskDelete 任务删除
vTaskCleanUpResources 清理任务资源
vTaskSuspend 任务挂起
vTaskDelayUntil 任务绝对延时
vTaskDelay 任务延时
xTaskGetSchedulerState 获取调度器状态
xTaskResumeFromISR 在中断中恢复任务
xQueueGetMutexHolder 获取互斥锁持有者
pcTaskGetTaskName 获取任务名称
uxTaskGetStackHighWaterMark 获取任务堆栈信息
xTaskGetCurrentTaskHandle 获取当前任务句柄
eTaskGetState 获取任务状态
xEventGroupSetBitFromISR 在中断中设置事件标志组
xTimerPendFunctionCall 定时器挂起后回调函数
xTaskAbortDelay 终止任务延时
xTaskGetHandle 获取任务句柄
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS系列 的相关文章

  • STM32CubeMX+FreeRTOS学习笔记(一)

    嵌入式实时操作系统FreeRTOS 基本概述 在嵌入式领域当中 实时操作系统的应用越来越广泛了 目前嵌入式操作系统种类很多 例如 Clinux C OS II C OS III FreeRTOS RT Thread等等 这篇文章所记录的就是
  • FreeRTOS记录(七、FreeRTOS信号量、事件标志组、邮箱和消息队列、任务通知的关系)

    我们在前面单独介绍过FreeRTOS的任务通知和消息队列 但是在FreeRTOS中任务间的通讯还有信号量 邮箱 事件组标志等可以使用 这篇文章就这些成员与消息队列和任务通知的关系进行说明分析 增加邮箱部分 任务通知发送消息 Demo 202
  • FreeRTOS简述和移植文档

    FreeRTOS简述和移植文档 文章目录 FreeRTOS简述和移植文档 1 前言 2 FreeRTOS简述 1 概述 2 实现 3 主要特色 4 支持平台 3 移植FreeRTOS 4 最后 1 前言 目前由于IOT的飞速发展 针对单片机
  • FreeRTOS学习笔记 6 - 互斥量

    目录 1 创建 2 获取 3 释放 4 测试 FreeRTOS不支持调度方式的设置 所以下面2个宏定义可以随意设置值 define RTOS IPC FLAG FIFO 0x00 define RTOS IPC FLAG PRIO 0x01
  • 一文教你学会keil软件仿真

    仿真在我们调试代码中是非常重要的 通过仿真 我们可以快速定位到错误代码 或者错误逻辑的地方 这里我就以上一篇博客为例 教大家如何软件仿真 软件仿真不需要单片机 直接通过keil软件进行代码调试 一 打开工具 二 选择软件仿真 三 开始仿真
  • FreeRTOS学习(八) 延时函数

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 FreeRTOS延时函数有两个 分别是 vTaskDelay vTaskDelayUntil 1 vTaskDelay 任务相对延时 函数原型
  • ZYNQ中FreeRTOS中使用定时器

    使用普通的Timer中断方式时 Timer中断可以正常运行 但是UDP通信进程无法启动 其中TimerIntrHandler是中断服务程序 打印程序运行时间与从BRAM中读取的数据 void SetupInterruptSystem XSc
  • FreeRTOS_中断

    传送门 博客汇总帖 传送门 Cortex M3 中断 异常 传送门 Cortex M3笔记 基础 笔记内容参考 正点原子的FreeRTOS开发手册 cortex m3权威指南 Cortex M3和Cortex M4权威指南等 文中stm32
  • 基于HAL库的FREERTOS-----------三.队列

    一 队列简介 在实际的应用中 常常会遇到一个任务或者中断服务需要和另外一个任务进行 沟通交流 这个 沟通交流 的过程其实就是消息传递的过程 在没有操作系统的时候两个应用程序进行消息传递一般使用全局变量的方式 但是如果在使用操作系统的应用中用
  • FreeRTOS基础五:软件定时器

    软件定时器简介 软件定时器的作用 在指定的时间到来时执行指定的函数 或者以某个频率周期性地执行某个函数 被执行的函数叫做软件定时器回调函数 软件定时器由FreeRTOS内核实现 不需要硬件支持 软件定时器只有在软件定时器回调函数被调用时才需
  • freertos————互斥锁

    线程安全 多线程程序处于一个多变的环境 可访问的全局变量和堆数据随时可能被其他的线程改变 多个线程同时访问一个共享数据 可能造成严重的后果 出现问题的是之前移植了一个freemodbus的从站 多个任务访问全局变量保持寄存器区 导致最后读出
  • stm32f103zet6移植标准库的sdio驱动

    sdio移植 st官网给的标准库有给一个用于st出的评估板的sdio外设实现 但一是文件结构有点复杂 二是相比于国内正点原子和野火的板子也有点不同 因此还是需要移植下才能使用 当然也可以直接使用正点原子或野火提供的实例 但为了熟悉下sdio
  • FreeRTOS学习(三)开关中断

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 背景知识 Cotex M3的NVIC最多支持240个IRQ 中断请求 1个不可屏蔽 NMI 1个Systick 滴答定时器 Cortex M处理
  • FreeRTOS之事件

    FreeRTOS之事件 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 一 事件定义 事件 事件集 与高数上的集合意义差不多 事件啊 其实是实现任务间通信的机制 主要用于实现多任务间的同步 但是事件类型
  • FreeRTOS学习---“定时器”篇

    总目录 FreeRTOS学习 任务 篇 FreeRTOS学习 消息队列 篇 FreeRTOS学习 信号量 篇 FreeRTOS学习 事件组 篇 FreeRTOS学习 定时器 篇 FreeRTOS提供了一种软件定时器 用来快速实现一些周期性的
  • 【FreeRTOS 事件】任务通知事件

    普通任务通知事件创建创建及运行 参阅安富莱电子demo define BIT 0 1 lt lt 0 define BIT 1 1 lt lt 1 static TaskHandle t xHandleTaskUserIF NULL sta
  • FreeRTOS临界段

    1 临界段 在访问共享资源时不希望被其他任务或者中断打断的代码 这段要执行的代码称为临界段代码 2 设置临界段的目的 保护共享资源 例如 全局变量 公共函数 不可重入函数 函数里面使用 了一些静态全局变量 malloc 等 保护外设的实时性
  • FreeRTOS 匈牙利表示法 [重复]

    这个问题在这里已经有答案了 我是 RTOS 和 C 编程的新手 而且我仍在习惯 C 的良好实践 因此 我打开了一个使用 FreeRTOS 的项目 我注意到操作系统文件使用匈牙利表示法 我知道一点符号 但面临一些新的 标准 FreeRTOS
  • 有可用的 FreeRTOS 解释语言库吗?

    我在一家公司工作 该公司使用 FreeRTOS 为多个设备创建固件 最近 我们对新功能的要求已经超出了我们固件工程师的工作能力 但我们现在也无力雇用任何新人 即使进行微小的更改 也需要固件人员在非常低的级别上进行修改 我一直在为 FreeR
  • 有关 CMake 错误的问题:没有为目标提供源

    我正在尝试使用 cmake 和 eclipse 将 FreeRtos 添加到我的项目中 但出现错误 我运行的是 debian 10 我的 cmake 版本是 3 13 4 cmake 的文件可以在以下位置找到这个 git 仓库 https

随机推荐

  • Spring属性注入

    1 构造方法的方式的属性注入 2 Set方法的方式的属性注入 1 普通属性 2 对象属性 3 P名称空间的属性注入 Spring2 5以后 通过引入p名称空间完成属性的注入 写法 普通属性 p 属性名 值 对象属性 p 属性名 ref 值
  • 【Redis】2、Redis应用之【根据 Session 和 Redis 进行登录校验和发送短信验证码】

    目录 一 基于 Session 实现登录 1 发送短信验证码 手机号格式后端校验 生成短信验证码 2 短信验证码登录 注册 3 登录验证 通过 SpringMVC 定义拦截器 ThreadLocal 4 集群 Session 不共享问题 二
  • docker 数据文件管理

    一 数据管理实现方式 docker 容器中的文件系统有很多优势 但也有很多弊端 沙盒文件系统是跟随容器生命周期所创建和移除的 数据无法直接被持久化存储 数据和容器紧密耦合 不能简单的把数据移动到其他地方 由于 docker 容器文件系统是基
  • Assert.isTrue()

    JDK1 4版本开始 Java语言引入了断言 assert 机制 该类在package org springframework util包下 其中的 isTrue boolean expression isTrue boolean expr
  • 初识QtWebEngine

    QtWebEngine简介 Qt WebEngine模块提供了一个web浏览器 在不使用本地浏览器的情况下 它可以很容易地把Web内容嵌入到Qt应用程序中 Qt WebEngine为渲染HTML XHTML和SVG文档 使用CSS和Java
  • 服务器系统更新命令,在CentOS系统下包更新的命令有哪些

    在CentOS系统下包更新的命令有哪些 发布时间 2020 10 26 10 20 30 来源 亿速云 阅读 99 作者 小新 小编给大家分享一下在CentOS系统下包更新的命令有哪些 相信大部分人都还不怎么了解 因此分享这篇文章给大家参考
  • mysql用户管理与数据库导入导出方法总结

    目录 Mysql用户管理 创建用户账号 设置访问权限 重命名用户账户 删除用户账户 权限列表 mysqldump的使用 MYSQL如何导入导出文本文件 常见问题 Error Code 1290 The MySQL server is run
  • 评价实施范围

    声明 本文是学习GB T 42874 2023 城市公共设施服务 城市家具 系统建设实施评价规范 而整理的学习笔记 分享出来希望更多人受益 如果存在侵权请及时联系我们 1 范围 本文件确立了城市家具系统建设实施的评价原则 评价流程 给出了评
  • 牛客 - 排序子序列

    牛客 解题思路 在输入数据的序列中 两两进行比较 a i 1 gt a i 则进入非递增序列判断 直到遍历到下一个值不大于等于为止count 然后进行下一位置的判断 a i 1
  • 配置 Visual Studio 2019以进行 iOS 开发

    前言 在安装vs2019时有个选项 在vs2019中进行Android和ios开发 是不是普大喜空 再次膜拜地表最强IDE vs2019 幻想着在windows下跑Android和Ios程序 惊喜 然而就算我们在vs2019上安装了Andr
  • 第八章 全文检索【上】+商品添加ES + 商品热度排名

    一 商品检索功能介绍 根据用户输入的检索条件 查询出对用的商品 1 1 检索两个入口 首页的分类 搜索栏 1 2 检索列表展示页面 1 3 根据业务搭建数据结构 1 3 1 建立mapping 这时我们要思考三个问题 哪些字段需要分词 例如
  • Windows Server 2019安装docker

    Windows Server 2019安装docker 实验环境 一台Windows Server 2016中文版 关闭防火墙 IP地址192 168 10 1 24 还需要一张网卡 需要连接外网 给Windows Server 2016下
  • 中科院信工所经验_信工所六室面试经历

    因为选择了信息安全这条选择性并不开阔的小道 在保研推免的学校选择上并不像其他搞AI ML的同学一样 对于我来说 除去基本不能去的清华 上交和浙大 可以选择的学校大概也就是中科院信工所 北航 北邮三所学校 然后基于我自己对于学习氛围和团队实力
  • 【HBZ分享】Kafka高性能之零拷贝原理

    零拷贝的原理 Kafka集群搭建 并 整合springboot Kafka日志存储流程和LOG日志解析 LEO HW 讲解 点击这里 Consumer消费者机制 与 分区策略讲解 点击这里 Kafka数据文件存储 可靠性保证ACK ISR核
  • Git安装包(win版)

    链接 https pan baidu com s 1S10D5sA8WkYcyOjnE1M5IA 提取码 pl26
  • 嵌入式基础知识-中断处理过程

    本篇来介绍中断 这是计算机系统以及嵌入式系统的重要概念 1 中断基本概念 中断是CPU对系统发生的某个事件作出的一种反应 中断的一些基本概念 中断源 引起中断的事件称为中断源 中断请求 中断源向CPU提出处理的请求称为中断请求 中断向量 中
  • (JAVA练习)输入一个四位数,各个位的数字相加

    题目 输入一个四位数 各个位的数字相加 解法1 import java util Scanner public class While1117 public static void main String args int b 0 int
  • Qualcomm Audio HAL 音频通路设置

    1 音频框图概述 Front End PCMs SoC DSP Back End DAIs Audio devices PCM0 lt gt lt DAI0 gt Codec Headset PCM1 lt gt lt DAI1 gt Co
  • ‘fxc‘ 不是内部或外部命令,也不是可运行的程序

    编译龙书的Demo出现这个问题 d3d11CodeSet Chapter 6 Drawing in Direct3D Box 1 添加到环境变量 fxc exe在C Program Files x86 Microsoft DirectX S
  • FreeRTOS系列

    1 RTOS简介 RTOS全称为 Real Time Operation System 即实时操作系统 RTOS强调的是实时性 又分为硬实时和软实时 硬实时要求在规定的时间内必须完成操作 不允许超时 而软实时里对处理过程超时的要求则没有很严