认识ESP-IDF

认识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”即可展示出组件注册表。

esp32-freertos-sdk 工具包 See the Getting Started guide links above for a detailed setup guide. This is a quick reference for common commands when working with ESP-IDF projects: Setup Build Environment (See Getting Started guide for a full list of required steps with details.) Install host build dependencies mentioned in Getting Started guide. Add tools/ directory to the PATH Run python -m pip install -r requirements.txt to install Python dependencies Configuring the Project idf.py menuconfig Opens a text-based configuration menu for the project. Use up & down arrow keys to navigate the menu. Use Enter key to go into a submenu, Escape key to go out or to exit. Type ? to see a help screen. Enter key exits the help screen. Use Space key, or Y and N keys to enable (Yes) and disable (No) configuration items with checkboxes "[*]" Pressing ? while highlighting a configuration item displays help about that item. Type / to search the configuration items. Once done configuring, press Escape multiple times to exit and say "Yes" to save the new configuration when prompted. Compiling the Project idf.py build ... will compile app, bootloader and generate a partition table based on the config. Flashing the Project When the build finishes, it will print a command line to use esptool.py to flash the chip. However you can also do this automatically by running: idf.py -p PORT flash Replace PORT with the name of your serial port (like COM3 on Windows, /dev/ttyUSB0 on Linux, or /dev/cu.usbserial-X on MacOS. If the -p option is left out, idf.py flash will try to flash the first available serial port. This will flash the entire project (app, bootloader and partition table) to a new chip. The settings for serial port flashing can be configured with idf.py menuconfig. You don't need to run idf.py build before running idf.py flash, idf.py flash will automatically rebuild anything which needs it. Viewing Serial Output The idf.py monitor target uses the idf_monitor tool to display se
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值