问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

认识ESP-IDF

创作时间:
作者:
@小白创作中心

认识ESP-IDF

引用
CSDN
1.
https://m.blog.csdn.net/weixin_36854742/article/details/146015312

认识ESP-IDF

ESP-IDF 是乐鑫科技为其 ESP32 系列芯片提供的官方开发框架。这个框架主要用于开发、构建和部署基于ESP32的物联网(IoT)应用。

程序开发的本质是控制寄存器,之所以使用IDF是因为寄存器太过复杂,使用IDF可以简化开发过程,提高开发效率。

ESP-IDF 的编译过程主要基于 Make 或 CMake 构建系统,它自动化地处理源代码的编译、链接和生成最终的可执行文件或固件镜像。

了解目录结构、编译系统、配置文件以及API

components:提供了模块化、可配置、可重用和可扩展的代码组织方式,使得 ESP32 和其他Espressif 芯片的开发变得更加高效和灵活

docs:ESP-IDF 相关的文档和指南,旨在帮助开发者更好地理解和使用 ESP-IDF

examples:为开发者提供了丰富的学习资源、原型开发工具和功能演示。

tools:提供了开发 ESP-IDF 项目所需的各种工具和脚本,帮助开发者更高效地完成开发、构建和部署任务

ESP32 工程有如下重要概念

①:项目(Project)特指一个目录,其中包含了构建可执行应用程序所需的全部文件和配

置,以及其他支持型文件,例如分区表、数据/文件系统分区和引导程序。

②:项目配置 保存在项目根目录下名为 sdkconfig的文件中,可以通过 idf.py menuconfig 进

行修改,且一个项目只能包含一个项目配置。

③:应用程序是由 ESP-IDF 构建得到的可执行文件。一个项目通常会构建两个应用程序:

项目应用程序(可执行的主文件,即用户自定义的固件)和引导程序(启动并初始化项目应用

程序)。

④:组件(Components)是模块化且独立的代码,会被编译成静态库(.a 文件)并链接到

应用程序。部分组件由 ESP-IDF 官方提供,其他组件则来源于其它开源项目。

⑤:目标(Target)特指运行构建后应用程序的硬件设备。ESP-IDF 当前仅支持 esp32 和

esp32s2 以及 esp32s3 这三个硬件目标。

请注意,以下内容并不属于项目的组成部分:

①:ESP-IDF 并不是项目的一部分,它独立于项目,通过 IDF_PATH 环境变量(保存 esp-

idf 目录的路径)链接到项目,从而将 IDF 框架与项目分离。

②:交叉编译工具链并不是项目的组成部分,它应该被安装在系统 PATH 环境变量中。

项目工程分析

顶层项目 CMakeLists.txt 文件:由它负责实现构建系统的其余部分。

顶层项目 sdkconfig 文件:由它负责配置项目的构建选项。

顶层项目 main 目录:由它负责存放项目应用程序的源码文件。它包含两个文件,它们分别为 CMakeLists.txt 和 mian.c文件。

其中 main.c定义了程序入口函数 app_main(),而 CMakeLists.txt文件是将组件添加到构建

系统中,如下所示:

idf_component_register(SRCS “main.c”

INCLUDE_DIRS “.”)通过调用 idf_component_register 函数,开发者可以将组件添加到构建系统中。

其中 SRCS 变量指定了组件的源码文件,INCLUDE_DIRS 变量指定了组件的头文件目录。

顶层项目 components 目录:由它负责存放项目应用程序的源码文件。

总结:子层的 CMakeLists.txt文件负责将对应层的组件整合进构建

系统当中,而 sdkconfig 文件则用于设置构建过程中所需的多种配置选项(该编译哪些代码,不

该编译哪些代码)。同时,顶层的 CMakeLists.txt 文件不仅指定了 CMake 的版本,还通过引用

ESP-IDF 路径下的 project.cmake 文件来指导整个项目的构建流程。这些文件共同协作,确保项

目能够顺利构建和配置。最终,项目构建完成后会生成一个 build 文件夹,其中包含了临时目标

文件、库文件以及最终输出的二进制文件。

分区表

分区表是 ESP-IDF 中的一个重要概念,它用于定义应用程序在设备上的存储布局。分区表

定义了应用程序的各个部分在设备上的位置和大小,以及它们的读写权限。

组件使用

组件的添加

在 VS Code 项目工程中添加 IDF 组件注册表中的组件十分便捷。您只需按下“Ctrl+Shift+P”

快捷键快速进入命令面板,或者通过菜单栏的“查看”选项,选择“命令面板”来打开它。随后,

在命令面板中输入“ESP-IDF: Show Component Registry”即可展示出组件注册表,具体操作如图所示。

在搜索框中,我们可以方便地查找开发者所需的组件。请注意,下载 ESP-IDF 注册表中的组件需要在联网环境下进行,

因此请确保您的电脑已连接到网络,以便顺利下载所需的组件。

在上图中,首先选择适合的组件版本,随后点击“install”按钮以安装 Button组件。

组件的使用

在完成组件的安装后,我们可以在项目工程中直接使用该组件。在 VS Code 项目工程中,

我们只需在 main 目录下的 CMakeLists.txt 文件中添加如下代码即可使用 Button组件:


idf_component_register(SRCS "main.c"  

INCLUDE_DIRS ".")  

idf_component_get_property(button_include_dir button INCLUDE_DIR)  

target_include_directories(${COMPONENT_TARGET} PRIVATE  

${button_include_dir})  

在上述代码中,我们首先通过 idf_component_register 函数将 main.c 文件添加到项目

中,然后通过 idf_component_get_property 函数获取 Button组件的头文件目录,最后通

过 target_include_directories 函数将头文件目录添加到项目中。

组件的卸载

如果您不再需要某个组件,您可以通过按下“Ctrl+Shift+P”快捷键快速进入命令面板,

或者通过菜单栏的“查看”选项,选择“命令面板”来打开它。随后,在命令面板中输入“ESP-IDF:

Show Component Registry”即可展示出组件注册表。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号