1305_freertos的队列基本功能描述

wx5acc709d2a747 wx5acc709d2a747     2022-11-29     617

关键词:


全部学习汇总: ​​GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)​

这一次看一下FreeRTOS中的队列描述,至于代码实现可以后面找时间再做分析。其实之前自己折腾或者参与工作,FreeRTOS的队列还是用过很多的。队列的使用以及附加的消息传递功能的确给软件设计带来了很好的体验。

这个链接是官方的说明网页: ​​Queues for task and interrupt message passing in FreeRTOS real time embedded software applications​

1305_FreeRTOS的队列基本功能描述_FreeRTOS

上面的这个其实是一个动画,能够说明一个什么问题呢?首先,队列是先进先出的机制,其次,只要空间或者消息存在读写的动作其实是相对独立的操作。

1305_FreeRTOS的队列基本功能描述_FreeRTOS_02

1305_FreeRTOS的队列基本功能描述_数据_03

关于这部分的描述其实很容理解,在之前的使用中其实我用的基本都是第一种模式。无论数据大小,我之前都是用了直接的数据拷贝。自然,之前的处理实现顺利其实是因为我所用的MCU的资源十分宽裕。其实,对于大一些的数据,可以采用传递指针的方式来实现。而这个机制也是FreeRTOS提供的网络库中采用的一种机制。其他的数据结构的处理其实也容易,因为收发的过程都是自己的软件逻辑,很容易定制灵活的机制来实现数据大小变化、数据类型变化等不同的需求。

1305_FreeRTOS的队列基本功能描述_嵌入式_04

FreeRTOS中的任务的状态有时候跟队列的操作有一定 关系,具体可以体现在队列处理导致的任务阻塞上。不管是对队列进行写操作还是读操作,都有可能因为队列的状态而导致阻塞状态的产生。如果一个任务对队列进行写操作,当队列满了的时候,负责写入的任务就会处于阻塞状态。直到队列有了新的空间或者阻塞时间到达或者超过了指定的超时时间。对于读取队列的任务来说也是类似的,但是读取的阻塞产生一般是发生在队列为空的时候。当队列为空的时候,任务阻塞。解除阻塞的条件就是队列中有了新的元素或者指定的超时时间到了。

之前的应用中,处理的前提条件还是很理想的。即使是CAN这样的数据并不算小的消息传递,我也用了完整的数据拷贝。这很安全,但是可能会有很高的资源消耗。

最近学习了一段时间的FreeRTOS之后,发现我疑惑的几个点现在都集中到了存储使用优化上了。看起来,接下来找一个监控以及调试的手段还是很迫切的事情了。

freertos

...tp://xilinx.eetrend.com/article/7845作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS内核支持优先级调度算法,每个任务可根... 查看详情

freertos操作系统例程(8):消息队列

参考技术A安富莱电子www.armfly.com安富莱_STM32-V5开发板_FreeRTOS教程(V1.0)staticQueueHandle_txQueue1=NULL;staticQueueHandle_txQueue2=NULL;typedefstructMsguint8_tucMessageID;uint16_tusData[2];uint32_tulData[2];MSG_T;MSG_Tg_tMsg;/****************************************************... 查看详情

freertos官方翻译文档——第二章队列管理

2.1概览基于FreeRTOS的应用程序由一组独立的任务构成——每个任务都是具有独立权限的小程序。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS中所有的通信与同步机制都是基于队列实现的。2.2队列的... 查看详情

FreeRTOS 中的共享指针和队列

】FreeRTOS中的共享指针和队列【英文标题】:SharedpointersandqueuesinFreeRTOS【发布时间】:2018-01-1218:16:39【问题描述】:FreeRTOS队列周围的C++wapper可以简化为如下形式:template<typenameT>classQueue<T>public:boolpush(constT&item)returnxQue... 查看详情

FreeRTOS 队列结构 C

】FreeRTOS队列结构C【英文标题】:FreeRTOSQueueStructC【发布时间】:2017-06-0822:10:57【问题描述】:我不明白如何声明可用于在FreeRTOS中的两个线程之间发送数据的结构。我有两个线程,一个应该用数据填充结构,另一个应该从结构... 查看详情

在 freertos API 中使用队列

】在freertosAPI中使用队列【英文标题】:UsingQueuesinfreertosAPI【发布时间】:2018-11-2714:17:00【问题描述】:在freertos文档中,他们说有两种方法可以实现队列行为:队列复制:复制队列是指发送到队列的数据被逐字节复制到队列中... 查看详情

freertos队列

参考技术A参考和感谢zhzht19861011:FreeRTOS队列分析队列是主要的任务间通讯方式,可以在任务与任务间、中断和任务间传送信息。大多数情况下,队列用于具有线程保护的FIFO(先进先出)缓冲区。发送到队列的消息是通过拷贝实... 查看详情

通过 Freertos 中的队列发送字符串

】通过Freertos中的队列发送字符串【英文标题】:SendingstringthroughqueueinFreertos【发布时间】:2021-02-1905:05:37【问题描述】:我想创建一个带有按钮的任务,该任务将一个字符串发送到一个队列并创建另一个任务(这也可以是具有... 查看详情

freertos学习--队列

1.前言freeRTOS中所有任务的通信和同步机制都是基于队列来实现。2.队列的读写图队列的读写操作队列的数据存储队列可以保存有限个具有确定长度的数据单元,队列可以保存的最大单元数目称为队列的深度。 查看详情

freertosfreertos学习笔记(14)—freertos的消息队列(原生api)(代码片段)

摘要:在裸机中我们使用全局变量来传递信息,在操作系统中,使用全局变量传递消息可能会不安全,容易被修改。于是就是用队列来传递消息。队列就是一个数据结构,用于任务间的数据的传递。一、消息队列的基本概念队列... 查看详情

1302_freertos中coroutine设计实现分析

全部学习汇总:​​GreyZhang/g_FreeRTOS:learningnotesaboutFreeRTOS.(github.com)​​在FreeRTOS中有一个功能叫做CoRoutine,在很久之前使用某个MCU的SDK中集成的FreeRTOS功能的时候就发现过这个配置,但是没有深究其作用。这个是官方的介绍,从... 查看详情

在 FreeRTOS 中使用字符串队列

】在FreeRTOS中使用字符串队列【英文标题】:UsingQueueofstringinFreeRTOS【发布时间】:2021-07-2413:00:39【问题描述】:我正在使用Ardunio/ESP32,而且我对FreeRTOS还很陌生。我想要一个单独负责在串口上打印文本的任务,其他任务可以推送... 查看详情

esp32使用freertos的消息队列(代码片段)

零.声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操... 查看详情

rt-thread和freertos的区别?

...入式大杂烩」,选择「星标公众号」一起进步!Freertos是一个国外推出的一个迷你的实时操作系统内核,开源,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等... 查看详情

freertos消息队列

本章节为大家讲解FreeRTOS的一个重要的通信机制----消息队列,初学者要熟练掌握,因为消息队列在实际项目中应用较多。消息队列的概念及其作用消息队列就是通过RTOS内核提供的服务,任务或中断服务子程序可以将一个消息(... 查看详情

freertos入门(03):队列信号量互斥量(代码片段)

...e)互斥量(mutex)互斥量递归互斥量总结目的FreeRTOS提供给用户最核心的功能是任务(Task),实际项目中通常会有多个任务,任务间多数时候会需要配合工作,这时候就需要用到队列、信号量、互... 查看详情

freertos学习笔记——消息队列(代码片段)

前言学习完如何在STM32F1搭建FreeRTOS环境后,接下来学习FreeRTOS的消息队列。如果还不会搭建FreeRTOS环境的小伙伴可以先看我之前的文章->传送门.FreeRTOS消息队列先来了解什么是消息队列,通常情况下,队列被作为FIFO(... 查看详情

freertos系列教程目录索引

...设立的站点查看,地址:http://rtos.100ask.net第一章FreeRTOS概述与体验1.1FreeRTOS目录结构1.2核心文件1.3移植时涉及的文件1.4头文件相关1.5内存管理1.6Demo1.7数据类型和编程规范1.8安装Keil1.9使用模拟器运行第1个程序1.10使用逻辑... 查看详情