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

【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-启动分析)”】

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ESP32的FreeRTOS使用上与传统的FreeRTOS有一些区别。在ESP32中,基本不需要单独配置FreeRTOSConfig.h文件,因为ESP-IDF中的menuconfig功能可以对所有涉及到的内容进行配置,使用起来更加直观和便利。主要的数据类型说明中,有一个重要的数据类型是TickType_t。 在ESP32的魔改版FreeRTOS中,很少使用正经的事件集,而是使用ESP-IDF提供的更方便的事件循环。这使得在ESP32中使用事件循环更加方便。 另外,ESP32的分区表是采用二进制格式而不是CSV文件。ESP-IDF提供了gen_esp32part.py工具来配置和构建分区表。默认情况下,使用的是默认分区表。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【ESP32+freeRTOS学习笔记-(一)freeRTOS介绍】](https://blog.csdn.net/weixin_45499326/article/details/128226443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ESPIDF开发ESP32学习笔记ESP32上的FreeRTOS】](https://blog.csdn.net/qq_40500005/article/details/114794039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑牛唱剧本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值