FreeRTOS
文章平均质量分 90
BenBenF19
纸上得来终觉浅,绝知此事要躬行
展开
-
FreeRTOS 常见问题——栈应该有多大?
FreeRTOS 常见问题——栈应该有多大?可以使用 xTaskCreate() 或 xTaskCreateStatic() API 函数创建任务。该函数的 usStackDepth 参数指定将分配给正在创建的任务的栈大小(以栈宽度为单位,而不是字节!)。人们通常会问如何确定 usStackDepth 值,但是,除了下面描述的其中一种方向之外,在使用 RTOS 时确定需要多少栈与编写裸机应用程序(不使用操作系统的应用程序)时没有什么区别。与编写裸机应用程序完全一样,所需的堆栈量取决于以下应用程序特定参数原创 2021-08-09 23:35:27 · 8151 阅读 · 1 评论 -
FreeRTOS——配置文件
FreeRTOS——配置文件定制“配置参数”定制FreeRTOS 是使用名为 FreeRTOSConfig.h 的配置文件自定义的。每个 FreeRTOS 应用程序在其预处理器包含路径中都必须有一个 FreeRTOSConfig.h 头文件。FreeRTOSConfig.h 根据正在构建的应用程序定制 RTOS 内核。因此,它特定于应用程序,而不是 RTOS,并且应该位于应用程序目录中,而不是位于 RTOS 内核源代码目录之一中。RTOS 源代码下载中包含的每个演示应用程序都有自己的 FreeRTOS原创 2021-08-09 00:05:00 · 4843 阅读 · 3 评论 -
FreeRTOS——创建新的项目
FreeRTOS——创建新的项目原创 2021-08-04 20:40:33 · 1118 阅读 · 1 评论 -
FreeRTOS——源代码组织
FreeRTOS——源代码组织基本目录结构FreeRTOS 内核目录结构每个 RTOS 端口都带有一个预配置的演示应用程序,该应用程序已经构建了必要的 RTOS 源文件,并包括了必要的 RTOS 头文件。强烈建议将提供的演示用作所有基于 FreeRTOS 的新应用程序的基础。提供此页面是为了帮助定位和理解所提供的项目。基本目录结构FreeRTOS下载包括每个处理器端口和每个演示应用程序的源代码。将所有端口放在一次下载中大大简化了分发,但文件的数量似乎令人生畏。然而,目录结构非常简单,FreeRTOS原创 2021-08-03 23:37:44 · 519 阅读 · 0 评论 -
FreeRTOS——栈溢出保护
FreeRTOS——堆栈溢出保护堆栈使用堆栈溢出检测 - 方法 1堆栈使用每个任务都维护自己的堆栈。如果使用xTaskCreate()创建任务,则用作任务堆栈的内存会从 FreeRTOS 堆自动分配 ,并通过传递给 xTaskCreate() API 函数的参数来确定大小。如果使用xTaskCreateStatic()创建任务,则用作任务堆栈的内存由应用程序设计者预先分配。堆栈溢出是应用程序不稳定的一个非常常见的原因。因此,FreeRTOS 提供了两种可选机制,可用于协助检测和纠正此类事件。使用的选项由原创 2021-07-28 22:34:27 · 3457 阅读 · 0 评论 -
FreeRTOS——堆内存管理
FreeRTOS——堆内存管理内存管理内存管理每次创建任务、队列、互斥量、软件计时器、信号量或事件组时,RTOS 内核都需要 RAM。RAM 可以在 RTOS API 对象创建函数中从 RTOS 堆自动动态分配,也可以由应用程序设计者提供。如果 RTOS 对象是动态创建的,那么有时可以使用标准 C 库 malloc() 和 free() 函数来实现此目的,但是…它们并不总是在嵌入式系统上可用,它们占用了宝贵的代码空间,它们不是线程安全的,并且它们不是确定性的(执行函数所花费的时间会因调用而异原创 2021-07-27 23:35:46 · 1381 阅读 · 0 评论 -
FreeRTOS——静态与动态内存分配
FreeRTOS——静态与动态内存分配概述使用动态分配的 RAM 创建 RTOS 对象使用静态分配的 RAM 创建 RTOS 对象概述V9.0.0 之前的 FreeRTOS 版本从特殊的 FreeRTOS 堆分配下面列出的 RTOS 对象使用的内存。FreeRTOS V9.0.0及以上版本提供了应用程序设计者自己提供内存的能力,允许可选地创建以下对象而不需要动态分配内存:任务软件计时器队列事件组二进制信号量计数信号量互斥量递归互斥量使用静态内存分配还是动态内存分配更好,这取决于应用原创 2021-07-27 21:16:50 · 4595 阅读 · 0 评论 -
FreeRTOS——事件组
FreeRTOS——事件组事件位(事件标志)事件组事件组和事件位数据类型事件组 RTOS API 函数RTOS 在实现事件组时必须克服的挑战 提示:在许多情况下,“任务通知”可以为事件组提供轻量级的替代方案 事件位(事件标志)事件位用于指示事件是否发生。事件位通常称为事件标志。例如,一个应用程序可能:定义一个位(或标志),当它设置为 1 时表示“一条消息已被接收并准备好进行处理”,当它设置为 0 时表示“没有消息等待处理”。定义一个位(或标志),当它设置为 1 时表示“应用程序已将准备原创 2021-07-27 19:30:53 · 969 阅读 · 0 评论 -
FreeRTOS——软件计时器
FreeRTOS——软件计时器软件计时器计时器服务(或守护进程)任务计时器守护进程配置一次性与自动重载软件计时器软件计时器概述软件计时器(或只是“计时器”)允许在将来的设定时间执行函数。计时器执行的函数称为计时器的回调函数。计时器启动和执行其回调函数之间的时间称为计时器的周期。简单来说,计时器的计时时间到了,就会执行计时器的回调函数。请注意,必须先明确创建软件计时器,然后才能使用它。软件计时器实现中的效率考虑软件定时器功能易于实现,但难以有效实现。FreeRTOS 实现不会在中断上下文执行计原创 2021-07-26 21:25:14 · 1796 阅读 · 0 评论 -
FreeRTOS——流和消息缓冲区
FreeRTOS——流和消息缓冲区概述概述 从 FreeRTOS V10.0.0 可用原创 2021-07-26 20:09:20 · 3209 阅读 · 2 评论 -
FreeRTOS——任务通知
FreeRTOS——任务通知 从 FreeRTOS V8.2.0 开始可用从 V10.4.0 开始支持每个任务的多个通知 每个RTOS任务都有一个任务通知数组。每个任务通知都有一个通知状态,可以是“挂起”或“未挂起”,以及一个32位的通知值。configTASK_NOTIFICATION_ARRAY_ENTRIES设置任务通知数组中的索引数。在FreeRTOS V10.4.0之前,任务只有一个任务通知,而不是一个通知数组。直接到任务通知是直接发送到任务的事件。而不是通过中间对象(如队列、事件组或信原创 2021-07-24 00:45:21 · 1785 阅读 · 1 评论 -
FreeRTOS——互斥量
FreeRTOS——互斥量互斥量互斥量互斥量是包含优先级继承机制的二进制信号量。二进制信号量是实现同步(任务之间或任务与中断之间)的更好选择,而互斥量是实现简单互斥的更好选择。当用于互斥时,互斥量就像一个用于保护资源的令牌。当任务希望访问资源时,它必须首先获得(“获取”)令牌。当它完成资源的使用后,它必须“释放”令牌——允许其他任务有机会访问相同的资源。互斥量与信号量使用相同的访问 API 函数,因此也允许指定阻塞时间。阻塞时间表示如果互斥量不是立即可用的,则在尝试“获取”互斥量时,任务应进入阻塞状原创 2021-07-21 23:27:30 · 1935 阅读 · 0 评论 -
FreeRTOS——信号量
FreeRTOS——二进制信号量前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy a原创 2021-07-21 20:40:10 · 890 阅读 · 1 评论 -
FreeRTOS——队列
FreeRTOS——队列队列用户模型队列阻塞队列队列是任务间通信的主要形式。它们可用于在任务之间、中断和任务之间发送消息。在大多数情况下,它们被用作线程安全的FIFO(先入先出)缓冲区,新数据被发送到队列的后部,尽管数据也可以发送到前端。向队列写入和从队列读取。在这个例子中,创建的队列包含5个条目,并且队列永远不会满。用户模型用户模型:最大的简单性,最大的灵活性。。。FreeRTOS队列使用模型设法将简单性与灵活性结合起来——这些属性通常是互斥的。消息发送是通过复制队列来实现的,这意味着数据原创 2021-07-21 20:38:31 · 912 阅读 · 1 评论 -
FreeRTOS——任务
FreeRTOS——任务任务特征任务状态任务优先级任务特征简单来说:使用RTOS的实时应用程序可以被构造成一组独立的任务。每个任务都在它自己的上下文中执行,与系统或RTOS调度程序本身中的其他任务没有暗合的依赖关系。在任一时间点应用程序中只有一个任务可以执行,实时RTOS调度器负责决定该执行哪个任务。因此,RTOS调度器可以在应用程序执行时反复启动和停止每个任务(切换每个任务的进出)。由于一个任务不知道RTOS调度器的活动,所以实时RTOS调度器有责任确保当一个任务被切换进来时的处理器上下文(寄存器值原创 2021-07-20 23:43:52 · 1092 阅读 · 2 评论