FreeRTOS系列|FreeRTOS简介

2023-05-16

FreeRTOS简介

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系列|FreeRTOS简介 的相关文章

  • FreeRTOS内核配置说明---FreeRTOS Kernel V10.2.1

    FreeRTOS内核是高度可定制的 使用配置文件FreeRTOSConfig h进行定制 每个FreeRTOS应用都必须包含这个头文件 用户根据实际应用来裁剪定制FreeRTOS内核 这个配置文件是针对用户程序的 而非内核 因此配置文件一般
  • FreeRTOS config开始的宏

    FreeRTOSConfig h系统配置文件中可以自定义 FreeRTOS h中定义默认值 configAPPLICATION ALLOCATED HEAP 默认情况下FreeRTOS的堆内存是由编译器来分配的 将宏configAPPLIC
  • FreeRTOS-内核控制函数

    FreeRTOS 内核控制函数 FreeRTOS中有一些内核函数 一般来说这些内核函数在应用层不会使用 但是内核控制函数是理解FreeRTOS中断的基础 接下来我们逐一分析这些内核函数 taskYIELD 该函数的作用是进行任务切换 这是一
  • FreeRTOS简述和移植文档

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

    FreeRTOS学习笔记 3 信号量 互斥量的使用 前言 往期学习笔记链接 学习工程 信号量 semaphore 两种信号量的对比 信号量的使用 1 创建信号量 2 give 3 take 4 删除信号量 使用计数型信号量实现同步功能 使用
  • FreeRTOS系列

    本文主要介绍如何在任务或中断中向队列发送消息或者从队列中接收消息 使用STM32CubeMX将FreeRTOS移植到工程中 创建两个任务以及两个消息队列 并开启两个中断 两个任务 Keyscan Task 读取按键的键值 并将键值发送到队列
  • Freertos中vTaskDelay()是怎么用的

    1 常见的使用场景 void vLED Task void pvParameters while 1 Heartbeat LED vTaskDelay 1000 portTICK RATE MS 说明 上面这段代码的意思是 led翻转后经过
  • FreeRTOS学习笔记<中断>

    中断概念 Cortex M的NVIC最多支持240个IRQ 中断请求 1个不可屏蔽中断 NMI 1个Systick 滴答定时器 定时器中断和多个系统异常 Cortex M处理器有多个用于管中断和异常的可编程寄存器 这些寄存器大多数都在 NV
  • FreeRTOS ------- 任务(task)

    在学习RTOS的时候 个人觉得带着问题去学习 会了解到更多 1 什么是任务 在FreeRTOS中 每个执行线程都被称为 任务 每个任务都是在自己权限范围内的一个小程序 其具有程序入口每个任务都是在自己权限范围内的一个小程序 其具有程序入口通
  • freeRTOS手册 第六章 . 中断管理

    如果我对本翻译内容享有所有权 允许任何人复制使用本文章 不会收取任何费用 如有平台向你收取费用与本人无任何关系 第六章 中断管理 章节介绍和范围 事件 嵌入式实时系统必需对环境中的事件做出响应 比如 外部网络设备收到一个发送给TCP IP栈
  • 基于HAL库的FREERTOS----------一.任务

    FreeROTS 就是一个免费的 RTOS 类系统 这里要注意 RTOS 不是指某一个确定的系统 而是指一类系统 比如 UCOS FreeRTOS RTX RT Thread 等这些都是 RTOS 类操作系统 FreeRTOS 是 RTOS
  • Error: L6218E: Undefined symbol vApplicationGetIdleTaskMemory (referred from tasks.o).

    我用的是F103ZET6的板子 移植成功后 编译出现两个错误是关于stm32f10x it c 里 void SVC Handler void void PendSV Handler void 两个函数的占用问题 随后编译出现以下两个问题
  • FreeRTOS临界段和开关中断

    http blog sina com cn s blog 98ee3a930102wg5u html 本章教程为大家讲解两个重要的概念 FreeRTOS的临界段和开关中断 本章教程配套的例子含Cortex M3内核的STM32F103和Co
  • Arduino IDE将FreeRTOS用于STM32

    介绍 适用于STM32F103C8的FreeRTOS STM32F103C是一种能够使用FreeRTOS的ARM Cortex M3处理器 我们直接在Arduino IDE中开始使用STM32F103C8的FreeRTOS 我们也可以使用K
  • [FreeRTOS入门学习笔记]定时器

    定时器的使用步骤 1 定义一个handle xTimerCreate创建 2 启动定时器 在Task1中调用 通过队列通知守护任务来执行定时器任务 要再config头文件中定义守护任务相关配置 虽然定时器是在task1中启动 但是定时器的任
  • freeRTOS出现任务卡死的情况。

    最近在做一个产品二代升级的项目 代码是上一任工程师留下的 很多BUG 而且融合了HAL库和LL库 以及github上下载的GSM源码 很不好用 我这边是将2G模块换成了4G 且添加了单独的BLE模块 因此只在源码的基础上 去除2G和BLE代
  • 再论FreeRTOS中的configTOTAL_HEAP_SIZE

    关于任务栈和系统栈的基础知识 可以参考之前的随笔 FreeRTOS 任务栈大小确定及其溢出检测 这里再次说明 define configTOTAL HEAP SIZE size t 17 1024 这个宏 官方文档解释 configTOTA
  • 当一个任务写入变量而其他任务读取该变量时,我们是否需要信号量?

    我正在研究 freeRtos 并且我有一个名为 x 的变量 现在 每秒只有一个任务正在写入该变量 而其他任务正在读取该变量值 我需要用互斥锁来保护变量吗 如果变量为 32 位或更小 并且其值是独立的并且不与任何其他变量一起解释 则不需要互斥
  • 有可用的 FreeRTOS 解释语言库吗?

    我在一家公司工作 该公司使用 FreeRTOS 为多个设备创建固件 最近 我们对新功能的要求已经超出了我们固件工程师的工作能力 但我们现在也无力雇用任何新人 即使进行微小的更改 也需要固件人员在非常低的级别上进行修改 我一直在为 FreeR
  • 小型 ARM 微控制器的 RTOS 内核之间的可量化差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有许多不同的 RTOS 可用于微控制器 我专门寻找支持 ARM Cortex M 处理器的 RTOS 另外 我对闭源解决方案不感兴趣 试图从网站

随机推荐

  • 用matlab和RTB做二连杆机械臂动力学建模

    文章目录 写在前面二连杆机械臂RTB建模仿真与验证源代码 写在前面 本文使用的工具为matlab以及Peter Corke的RTB Robotics Toolbox 基于RTB 10 3 1版本 xff0c 我写了RTE Robotics
  • 机械臂协同搬运中的阻抗控制

    文章目录 阻抗模型物体阻抗分布阻抗Matlab和RTB仿真物体阻抗分布阻抗 源代码 阻抗模型 阻抗控制的目的是将原有物体动力学修正为我们期望动力学 假设有一个弹簧 xff0c 通过阻抗控制 xff0c 可以使得它的刚度降低 xff0c 实际
  • MATLAB App Designer生成独立GUI(可执行exe)并添加依赖项

    文章目录 写在前面生成步骤设置编译器编写GUI生成exe 常踩的坑 写在前面 近期 xff0c 由于朋友需求以及科研任务要求 xff0c 我研究了一下MATLAB GUI设计 xff0c 写了两个小程序 一个是读取excel部门名单生成ex
  • 用MATLAB仿真仿射队形变换(affine formation maneuver)

    文章目录 写在前面如何仿真静态编队控制构建stress matrixMATLAB求解LMI问题静态编队控制源代码 如何仿真时变轨迹和队形变换轨迹生成时变leader控制律时变轨迹和队形变换源代码 写在前面 原论文标题 xff1a Affin
  • 多智能体一致性(Consensus)中的矩阵理论(Matrix Theory)

    文章目录 写在前面一致性算法连续时间离散时间 一致性证明连续时间离散时间 矩阵理论特征值和特征向量特征多项式代数重数几何重数 总结 写在前面 最近在看一些分布式优化的文章 xff0c 但是大部分文章都是用的离散时间算法 我之前一直研究的是连
  • 【论文笔记】利用平滑度加速分布式优化——梯度跟踪法(Gradient Tracking)

    文章目录 写在前面问题描述和算法收敛性证明 写在前面 原论文 xff1a Harnessing Smoothness to Accelerate Distributed Optimization 本文是Qu 20181的笔记 xff0c 主
  • 迭代器是什么,C++ STL迭代器(iterator)用法详解

    无论是序列容器还是关联容器 xff0c 最常做的操作无疑是遍历容器中存储的元素 xff0c 而实现此操作 xff0c 多数情况会选用 迭代器 xff08 iterator xff09 来实现 那么 xff0c 迭代器到底是什么呢 xff1f
  • C++ priority_queue 用法详解

    不出所料 xff0c priority queue 容器适配器定义了一个元素有序排列的队列 默认队列头部的元素优先级最高 因为它是一个队列 xff0c 所以只能访问第一个元素 xff0c 这也意味着优先级最高的元素总是第一个被处理 但是如何
  • 数据库|SQLite编程实例---在线词典

    在线词典项目实例 1 在线词典功能分析 在线词典功能分析框图 2 服务器端和客户端流程图 服务器端流程示意图 客户端流程示意图 3 服务器端和客户端源码 服务器端源码 span class token comment dict server
  • 【力扣刷题】动态规划问题的思考与总结

    文章目录 什么是动态规划解决动态规划问题的步骤基础递推算法子问题求和爬楼梯杨辉三角 子问题最值最大子序和 二维DP数组非最优子结构 买卖股票 xff08 多状态递推 xff09 打家劫舍 xff08 分治算法 xff09 贪心算法背包问题
  • 百度2014移动研发笔试题目

    答案仅供参考 一 简答题 1 简述计算机的存储系统分为哪几个层次 xff0c 为什么这样的分层能够提高程序的执行效率 所谓存储系统的层次结构 xff0c 就是把各种不同存储容量 存取速度和价格的存储器按层次结构组成多层存储器 xff0c 并
  • 横屏layout-land失效的细节问题 以及谈谈不同设置模式的优缺点

    android configChanges 61 34 orientation keyboardHidden screenSize 34 设置之后手机可以识别横屏布局 xff0c 但是不会重建 xff0c 但是pad不识别 xff0c 头疼
  • 数学公式汇总

    高等数学公式篇 平方关系 xff1a sin 2 43 cos 2 61 1 tan 2 43 1 61 sec 2 cot 2 43 1 61 csc 2 积的关系 xff1a sin 61 tan cos cos 61 cot sin
  • KEIL ARM 6.12 compiler 编译__ASM 错误的解决方法

    1 问题 KEIL compiler 设置为 use default compiler version 5 可以正确编译以下汇编和C混合代码 xff0c 更改编译器为V6 12后不识别 ASM关键字 xff0c 并对汇编语法报错 替换为 A
  • 面试题:从给定的N个正数中选取若干个数之和最接近M

    这道题跟捞鱼问题一样 xff0c 都是刚进实验室新生培训那会儿做过的题目 xff0c 不过这个是一师姐当时找工作的面试题 如题 xff0c 并输出该子序列 测试用例 xff1a 2 xff0c 9 xff0c 5 xff0c 7 xff0c
  • 贝叶斯最优分类器

    贝叶斯常常有两个问题 xff1a xff08 1 xff09 给定训练数据 xff0c 最可能的假设是什么 xff1f xff08 2 xff09 给定训练数据 xff0c 对新实例的最可能分类是什么 xff1f 第一个问题用最大后验概率
  • 奇异值分解SVD应用—LSI/LSA

    原文 xff1a http blog csdn net abcjennifer article details 8131087 xff08 有看不懂的地方 xff0c 原文评论有点解答 xff09 潜在语义索引 xff08 Latent S
  • EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接

    EAGAIN EWOULDBLOCK EINTR与非阻塞 长连接 EWOULDBLOCK用于非阻塞模式 xff0c 不需要重新读或者写 EINTR指操作被中断唤醒 xff0c 需要重新读 写 在Linux环境下开发经常会碰到很多错误 设置e
  • WebSocket 实战

    本文介绍了 HTML5 WebSocket 的由来 xff0c 运作机制及客户端和服务端的 API 实现 xff0c 重点介绍服务端 xff08 基于 Tomcat7 xff09 及客户端 xff08 基于浏览器原生 HTML5 API x
  • FreeRTOS系列|FreeRTOS简介

    FreeRTOS简介 1 RTOS简介 RTOS全称为 Real Time Operation System xff0c 即实时操作系统 RTOS强调的是实时性 xff0c 又分为硬实时和软实时 硬实时要求在规定的时间内必须完成操作 xff