【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(新的开篇)”】

2023-05-16

目录

  • 【ESP32+freeRTOS学习笔记】系列新的开篇
  • ESP-IDF对FreeRTOS的适配
  • ESP-IDF环境中使用FreeRTOS的差异性简介
    • 关于FreeRTOS的配置
    • 关于ESP-IDF FreeRTOS Applications
  • 结语
  • 索引

【ESP32+freeRTOS学习笔记】系列新的开篇

ESP-IDF对FreeRTOS的适配

FreeRTOS是一个可以适用于多个不同MCU开发平台的操作系统。但为了更好的发挥操作系统的功能,更好的适应于不同的MCU架构,实际在使用时,还是需要对FreeRTOS做适配的。比如,ESP32系列MCU是一个双核的平台,因此在哪一个核内运行FreeRTOS的任务,在哪一个CPU内核中启动FreeRTOS等,这些都需要在FreeRTOS基础上,根据ESP32的特性做进一步的适配的。

乐鑫从ESP-IDF 4.0开始,直接将FreeRTOS内核以组件(Component)的形式集成到了IDF开发环境中。同时针对ESP32的双CPU内核的特性对FreeRTOS API进行了扩展。(具体可以查看ESP32对应的开发文档)。

因此,可以在ESP-IDF开发环境中方便的使用FreeRTOS。只需要在程序中包含相应的FreeRTOS头文件即可。而且使用时不用担心底层适配的问题。因此可以放心使用。

ESP-IDF环境中使用FreeRTOS的差异性简介

关于FreeRTOS的配置

FreeRTOS允许端口和应用程序通过添加各种#define config… 。通过这些宏,可以启用或禁用内核的调度行为和各种内核功能。但是,在ESP-IDF FreeRTOS中,FreeRTOSConfig.h 文件被视为私有文件,用户不得修改。任何向用户公开的FreeRTOS配置都将通过menuconfig完成。

ESP-IDF FreeRTOS可以在Component Config/FreeRTOS下的项目配置菜单(IDF.py menuconfig)中配置。如果在在VScode环境中,则在如下图标中的设置图标(线色圈)进入配置选项页。
在这里插入图片描述有关ESP-IDF FreeRTOS配置的完整列表,请参阅 Project Configuration

关于ESP-IDF FreeRTOS Applications

与独立的 FreeRTOS不同,用户不能在自已写的程序中调用vTaskStartScheduler()。相反,ESP-IDF FreeRTOS将自动启动。入口点是用户定义的void app_main(void)函数。
-> 通常,用户将从app_main派生其应用程序任务的其余部分。
-> app_main函数可以在任何时候返回(即,在应用程序终止之前)。
-> app_main函数是从main 任务调用的。main()任何是C语言中标准的入口程序。

main任务是ESP-IDF在启动期间自动生成的多个任务之一。这些任务包括:

启动期间创建的任务列表:

任务名运行内核优先级说明
Main Task (main)CPU 01简单调用app_main的任务。当app_main返回时,此任务将自动删除
Idle Tasks (IDLEx)CPU0 and CPU10为每个CPU创建(并固定到)的空闲任务
IPC Tasks (ipcx)CPU0 and CPU124为每个CPU创建(并固定到)IPC任务。IPC任务用于实现IPC功能。有关详细信息,请参阅处理器间调用( Inter-Processor Call )。

结语

在本篇之前,主要是针对FreeRTOS的使用和特性进行学习。自本篇开始,学习的内容侧重在于ESP-IDF环境中使用FreeRTOS的特殊性。这方面的学习主要是通过阅读ESP开发文档,以及在过程中通过对原码的阅读分析来探索本质。这样能更好的,深入的理解ESP以及FreeRTOS的运行机制。而不会出现人云亦云,不知所以然的情况。

索引

第一篇【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(1-启动分析)”】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(新的开篇)”】 的相关文章

随机推荐

  • ILI9341的使用之【一】TFT-LCD原理(转载)

    近期开始研究手上的LCD屏的使用 该LCD屏使用了ILI9341的IC做为驱动 因此边研究边留下记录 与上一个时钟系列类似 xff0c 想必这又是一个大工程 xff0c 因为ILI9341的数据手册就有200多页 xff0c 从硬件原理 x
  • ILI9341的使用之【二】ILI9341介绍

    ILI9341的使用之 一 TFT LCD原理 xff08 转载 xff09 ILI9341的使用之 二 ILI9341介绍 ILI9341的使用之 三 ILI9341系统通信接口模式操作详解 ILI9341的使用之 四 RGB接口操作详解
  • ILI9341的使用之【三】ILI9341系统通信接口模式操作详解

    ILI9341的使用之 一 TFT LCD原理 xff08 转载 xff09 ILI9341的使用之 二 ILI9341介绍 ILI9341的使用之 三 ILI9341系统通信接口模式操作详解 ILI9341的使用之 四 RGB接口操作详解
  • 图说蚁群算法(ACO)附源码

    PS xff1a 再过几天就可以返校收拾东西了 xff0c 想想还有点小激动呐hhh 回想疫情宅家的这半年 xff0c 真是一段充满了焦虑 惊喜 忙碌 充实又时而无聊的时光 返校只能待三天又让人有点小遗憾呐 就想着趁还在家这几天 xff0c
  • ILI9341的使用之【四】RGB接口操作详解

    ILI9341的使用之 一 TFT LCD原理 xff08 转载 xff09 ILI9341的使用之 二 ILI9341介绍 ILI9341的使用之 三 ILI9341系统通信接口模式操作详解 ILI9341的使用之 四 RGB接口操作详解
  • 基于ESP32的开发板的选型介绍

    由于最近重新选择单片机的开发平台 之前用过ESP8266模组和基于8266的NodeMCU开发板 xff0c 而且使用的经历还是很愉快的 因此这次很自然的想到了去找看看是否有基于ESP32的NodeMCU开发板 xff0c 结果没让人失望
  • ESP-IDF的vscode环境编译时出现“fatal error: nvs.h: No such file or directory”的解决方法

    目录 前言ESP IDF编程指南原文解读关于ESP IDF的组件管理模式示例项目的结构层次顶层项目CMakeLists txt文件的解释必要部分可选的项目变量 组件 CMakeLists 文件的解读最小组件 CMakeLists 文件 组件
  • 【ESP32+freeRTOS学习笔记-开篇前言】

    目录 前言的前言RTOS的选择开发与实践环境参考资料笔记的形式专题文章的链接 持续更新中 前言的前言 单片机的开发 xff0c 也有两年多了 xff0c 之前一直是做一些简单应用 xff0c 因此以裸机开发的方式为主 虽然裸机开发简单 xf
  • 【ESP32+freeRTOS学习笔记-(一)freeRTOS介绍】

    目录 FreeRTOS基本情况FreeRTOS的特色发行版的目录结构与文件说明原生程序的下载与目录结构FreeRTOS的主要文件说明头文件说明关于FreeRTOSConfig h的说明 主要的数据类型说明重要数据类型 TickType t重
  • 【ESP32+freeRTOS学习笔记-(二)FreeRTOS运行机制】

    目录 实时操作系统RTOS主要功能RTOS工作概况基本概念 FreeRTOS 心跳 任务优先级调度算法其它资源与概念 FreeRTOS运行机制描述总结 实时操作系统 实时操作系统RTOS是保证在一定时间限制内完成特定功能的操作系统 实时操作
  • 【ESP32+freeRTOS学习笔记-(三)任务】

    目录 1 任务相关基本概念1 1 任务函数原型1 2 任务句柄TaskHandle t 及任务控制块TCB t1 3 任务状态1 4 优先级 Task Priorities 2 创建任务2 1 xTaskCreate2 2 xTaskCre
  • 【ESP32+freeRTOS学习笔记-(四)任务调度机制】

    目录 1 什么是任务的调度机制1 1 概念1 2 三种算法1 3 决定算法的宏 2 基本词条解释3 调度算法解释3 1 具有时间片的优先级抢先调度 Prioritized Pre emptive Scheduling with Time S
  • 【ESP32+freeRTOS学习笔记-(五)队列Queue】

    目录 1 什么是队列Queue2 队列的多任务特性2 1 多任务的访问 xff1a 2 2 队列读取阻塞 xff1a 2 3 写队列阻塞 xff1a 2 4 阻塞于多个队列 xff1a 3 队列的使用3 1 创建队列 The xQueueC
  • 【ESP32+freeRTOS学习笔记-(六)软件定时器】

    目录 1 软件定时器概念2 软件定时器的运行机制2 1 组成2 2 创建2 3 运行 3 软件定时器的属性和状态3 1 定时器的周期3 2 定时器的类型3 3 定时器的状态 4 软件定时器的回调函数原型5 定时器的使用5 1 创建定时器xT
  • 图说粒子群优化算法(PSO)附源码

    前面说了ACO xff0c 这次就来说下PSO吧 目录 一 初识PSO xff1a 这是个啥玩意 xff1f 二 PSO的数学原理 三 MATLAB代码 一 初识PSO xff1a 这是个啥玩意 xff1f 粒子群优化算法是模拟鸟群觅食行为
  • 【ESP32+freeRTOS学习笔记-(七)中断管理】

    目录 1 概述2 在ISR中使用FreeRTOS中专用的API2 1 独立的用于ISR中的API2 2 关于xHigherPriorityTaskWoken 参数的初步理解 3 延迟中断处理的方法 将中断中的处理推迟到任务中去4 方法一 x
  • 【ESP32+freeRTOS学习笔记-(八)资源管理】

    目录 1 资源使用概况2 互斥方法之一 xff1a 基本临界区2 1 taskENTER CRITICAL FROM ISR 和taskEXIT CRITICAL FROM ISR 3 互斥方法之二 xff1a 挂起或锁定调度程序3 1 v
  • 【ESP32+freeRTOS学习笔记-(九)事件组】

    目录 1 概述2 事件组的特性2 1 事件组 事件标志和事件位2 2 事件组位长的设置2 3 多任务访问 3 使用事件组管理事件3 1 xEventGroupCreate 3 2 xEventGroupSetBits 3 3 xEventG
  • 【ESP32+freeRTOS学习笔记-(十)任务通知机制】

    目录 1 任务通知 xff08 Task Notifications xff09 概念1 1 概念1 2 使用任务通知的优势1 3 无法使用任务通知的场景 2 使用任务通知2 1 xTaskNotifyGive 2 2 ulTaskNoti
  • 【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(新的开篇)”】

    目录 ESP32 43 freeRTOS学习笔记 系列新的开篇ESP IDF对FreeRTOS的适配ESP IDF环境中使用FreeRTOS的差异性简介关于FreeRTOS的配置关于ESP IDF FreeRTOS Applications