![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ESP32+freeRTOS
文章平均质量分 91
骑牛唱剧本
这个作者很懒,什么都没留下…
展开
-
【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(4-多核下的临界区)”】
临界区API可以递归调用(即嵌套的临界区)。多次递归地输入一个临界区是有效的,只要临界区的退出次数与进入的次数相同。然而,考虑到临界区可以针对不同的自旋锁,用户在递归进入临界区时应该注意避免死锁。首先,内核禁用其中断(或中断嵌套),禁用的最高级别可达configMAX_SYSCALL_interrupt_PRIORITY 宏所规定的数值。对于taskEXIT_CRITICAL(&mux)(或taskEXIT_CRITICAL_ISR(&mux))临界区的其余部分在禁用中断(或中断嵌套)的情况下运行。原创 2023-04-07 10:59:23 · 1358 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(3-多核环境下的调度)”】
在ESP32环境中,双核的特性,使得FreeRTOS在调度方面必须要考虑在双核上的区别对待。CPU0与CPU1上调度相关的责任和效果是有区别的。这些特殊细节,在编程过程中要重视。原创 2023-04-06 11:22:42 · 1775 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(2-多核环境中的任务)”】
在多核环境下,Vanilla FreeRTOS 在任务的创建与删除的行为会在为双核的选择原因而有行为上的改变。这个改变不是很大,但需要考虑到双核环境的特殊性。原创 2023-04-04 22:09:47 · 2675 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(1-启动分析)”】
上面这些原码分析,清楚地看到FreeRTOS在ESP32平台中的这些特殊的地方:1、不需要我们再调用vTaskStartScheduler()函数来启动调度器,因此系统已经帮我们调用了。2、主函数app_main()本身也是个任务,这个任务的优先级是1,而且该任务只要一返回,就被删除。所以我们在这个主函数中总是把该建的其它任务都建好,然后尽量返回,让系统回收了这个任务。原创 2023-03-15 20:38:31 · 2986 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(新的开篇)”】
FreeRTOS允许端口和应用程序通过添加各种#define config…。通过这些宏,可以启用或禁用内核的调度行为和各种内核功能。但是,在ESP-IDF FreeRTOS中,文件被视为私有文件,用户不得修改。任何向用户公开的FreeRTOS配置都将通过menuconfig完成。ESP-IDF FreeRTOS可以在Component Config/FreeRTOS下的项目配置菜单(IDF.py menuconfig)中配置。原创 2023-03-10 18:02:27 · 2408 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(十)任务通知机制】
总之,任务通知机制,也是任务之间传送事件与数据的一个工具。是一个能替代二进制信号量,计数信号量,事件组,队列更高效的机制。任务通知机制传送效率更高,占用的RAM更小。FreeRTOS提供了两套使用任务通知机制的API函数,一套是简单方便的xTaskNotifyGive()和 ulTaskNotifyTake(),另一套是功能更强大灵活的API函数 xTaskNotify()和xTaskNotifyWait()函数。原创 2023-03-02 09:55:35 · 1451 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(九)事件组】
实时嵌入式系统必须采取行动来响应事件。前面描述了 FreeRTOS 允许将事件传递给任务的功能。此类功能包括信号量和队列,它们都具有以下属性:-》它们允许任务在阻塞状态下等待单个事件发生。-》当事件发生时,它们解除对单个任务的阻塞——解除阻塞的任务是等待事件的最高优先级任务。事件组是 FreeRTOS 的另一个功能,它允许将事件传达给任务。与队列和信号量不同:事件组允许任务在阻塞状态下等待多个事件之一的组合发生。事件组在事件发生时解除等待同一事件或事件组合的所有任务的阻塞。原创 2023-02-22 09:28:38 · 1274 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(八)资源管理】
多任务系统中,任务对资源占用以及协调是非常重要的。即要保证占用资源的任务能不被干扰的使用,也要防止出现死锁。FreeRTOS针对不同类型的使用场景,提供了从禁用中断,禁用调度这类系统级的资源使用手段。也提供了互斥信号量,嵌套互斥信号量等应用级的资源使用手段。也提供了Gatekeeper Tasks(网守任务)方式的资源使用方案。因为任务调度模式导至的多种使用资源可能出现死锁的场景,FreeRTOS提供了优先级继承,递归互斥锁的机制解决。原创 2023-02-16 15:02:54 · 3012 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(七)中断管理】
MCU中都是以中断的方式处理各类事件,需要硬件的支持。因此中断系统是一个非常重要的系统。而FreeRTOS是以任务的方式处理事件。任务是纯软件的方式。因此FreeRTOS不可避免的要同时处理好硬件层的中断与软件层的任务的关系。中断是需要硬件支持 的,但是中断被触发后,必然要跳转到中断处理程序ISR去完成后续的事件处理,而ISR则是软件代码。也就是说不论硬件的中断还是软件的任务,最终的处理其实都是软件的代码实现。原创 2023-02-09 15:59:39 · 3559 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(六)软件定时器】
Timer 是FreeRTOS中不依赖硬件的一个软件定时器。机制上由三个部分组成,一个是Timer结构体,用于存放定时器的具体参数及必要数据结构。二是系统定时器守护进程任务,用于具体处理定时器到期检测以及定时器回调函数的运行,三是软件定时器命令队列,用于向守护进程任务传递定时器的处理命令。定时器守护进程任务与定时器命令队列由系统在调度程序xTaskStartSchedule()启动时自动创建。编程人员在使用定时器时。必须首先创建定时器对象(即数据结构)。原创 2023-01-10 15:45:01 · 2937 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(五)队列Queue】
Queues提供了一个任务到任务,任务到中断,以及中断到任务的通信机制。学过数据结构的原理应该知道,队列是常用的数据结构的一种,是一种先入先出First IN First Out 的数据组织与操作形态的名称。因此在FreeRTOS中,队列Queue的本质也是一样的。对于其行为与组织形式,用原文的图解能更清楚地说明。由上图可以清楚的看出,FreeRTOS的Queue就是一个实现了队列的存储组织形式以及完成了不同任务之能互相传递数据的操作实现。队列能保存有限数量的固定大小的数据项。原创 2023-01-05 16:40:20 · 2639 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(四)任务调度机制】
调度算法决定了哪个就绪(Ready)状态任务转换到运行(Running)状态。对于单个内核而言,由于每个时刻,只能有一个任务是实际处于运行状态的,其它任务只能处理运行态以外的其它态(阻塞态blocked,就绪态Ready,暂停态Suspended)。因此,当FreeRTOS在任务调度时必须以一种规则来决定选择哪一个Ready状态的任务来进入Running状态。以上两图,详细的解释了具有时间片的情况下,如何调度相同优先级的任务。同一个时间片里,相同优先级任务之间的轮流运行。原创 2023-01-01 21:01:36 · 2366 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(三)任务】
任务是FreeRTOS最重要的概念。因此回绕任务的概念比较多。从使用的角度出发,需要明白任务是一段带无限循环的永不退出的函数。任务句柄是系统操控任务的重要指针。任务之间的调度重要依据是优先级。优先级数值越高就越优先被调度。任务会有四种不同的工作状态。开发者对任务的使用主要是任务的创建,任务的优先级修改,任务的删除。原创 2022-12-22 16:18:59 · 2287 阅读 · 3 评论 -
【ESP32+freeRTOS学习笔记-(二)FreeRTOS运行机制】
RTOS发展到现在,其功能及实现已驱于一致。FreeRTOS的运行机制简单总结就是----”心跳“驱动下的任务调度机制。看完这章,能理解这句话就足够了。原创 2022-12-11 12:24:06 · 2139 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-(一)freeRTOS介绍】
关于FreeRTOS的介绍,内容比较多,也比较杂,相互之前的逻辑性也不是很强。初学FreeRTOS一时对这些内容的不易理解也正常。但这些内容是必须要了解和知道的。然后在接下来的学习中,自然而然就明白了。因为在接下来的各个知识块里都会有这些相关联的内容。因此在这里所有的知道只能点到为止。原创 2022-12-08 22:18:04 · 6112 阅读 · 0 评论 -
【ESP32+freeRTOS学习笔记-开篇前言】
这种复杂,耗时,并需要多任务协作的项目,就迫切需要一种能在MCU上工作的 实时多任务操作系统。这种过渡是一种自然而然的过程。原创 2022-12-07 18:27:45 · 2817 阅读 · 0 评论