一、概述

本文档旨在指导用户在Windows下搭建 ESP32 硬件开发的软件环境,通过一个简单的示例展示如何使用 ESP-IDF (Espressif IoT Development Framework) 配置菜单,并编译、下载固件至 ESP32 开发板等步骤。其他环境参考官方文档

二、准备工作

硬件:

  • 一款 ESP32 开发板
  • USB 数据线 (A 转 Micro-B)
  • 电脑(Windows,这里我用的window10)

软件:

三、环境搭建

准备工作完成后,运行ESP-IDF 工具安装器选择自定义的路径安装。ESP-IDF 编译系统不支持带有空格的路径。

四、创建工程

现在,您可以开始准备开发 ESP32 应用程序了。您可以从 ESP-IDF 中 examples 目录下的 get-started/hello_world 工程开始。若要在其他工程下添加用户自定义功能,写好源文件之后更改main文件夹下CMakeLists.txt文件即可。

五、编译及烧录

  1. 打开编译环境
  2. ESP32 arduino烧录的文件 esp32烧录连接示意图_分区表

  3. 进到工程目录
  4. ESP32 arduino烧录的文件 esp32烧录连接示意图_引导程序_02

  5. 编译执行idf.py build,出现如下所示,编译成功。
  6. ESP32 arduino烧录的文件 esp32烧录连接示意图_分区表_03

  7. 烧录执行idf.py -p PORT flash 其中PORT是连接开发板的端口。如COM5,命令为idf.py -p COM5 flash

六、快速参考

详细的使用方法请参考上面官方文档,这里仅仅列举一些 ESP-IDF 项目开发中常用的命令:

6.1 设置构建环境

(请参考入门指南中列出的详细步骤。)

  • 在主机中安装入门指南中提到的构建所依赖的工具。
  • 将 ESP-IDF 中的 tools/ 目录加入 PATH 环境变量中。
  • 运行 python -m pip install -r requirements.txt 安装 Python 依赖库。

6.2 配置项目

idf.py menuconfig

  • 打开项目的文本配置菜单。
  • 使用上下键浏览菜单。
  • 使用回车键进入子菜单,退出键返回上一级菜单或者退出配置。
  • 输入 ? 查看帮助界面,按下回车键可以退出帮助界面。
  • 使用空格键或者 YN 按键来启用和禁用带复选框“[*]”的配置项。
  • 高亮某个配置项的同时按下 ? 键可以显示该选项的帮助文档。
  • 输入 / 可以搜索指定的配置项。

一旦配置完成,请按下退出键多次以退出配置界面,当提示是否保存新的的配置时,选择 “Yes”。

6.3 编译项目

idf.py build

编译应用程序,引导程序,并根据配置生成分区表。

6.4 烧写项目

当构建结束,终端会打印出一条命令行,告知如何使用 esptool.py 工具烧写项目到芯片中。但是你还可以运行下面这条命令来自动烧写:

idf.py -p PORT flash

将其中的 PORT 替换为系统中实际串口的名字(比如 Windows 下的 COM3,Linux 下的 /dev/ttyUSB0,或者 MacOS 下的 /dev/cu.usbserial-X。如果省略 -p 选项,idf.py flash 会尝试使用第一个可用的串口进行烧写。

这会烧写整个项目(包括应用程序,引导程序和分区表)到芯片中,此外还可以使用 idf.py menuconfig 来调整串口烧写相关的配置。

你也不必先运行 idf.py build,再运行 idf.py flashidf.py flash 会根据需要自动重新构建项目。

6.5 观察串口输入

idf.py monitor 会调用 idf_monitor 工具来显示 ESP32 的串口输出。idf_monitor 还包含一系列的功能来解析程序崩溃后的输出结果并与设备进行交互。更多详细内容,请参阅文档.

输入 Ctrl-] 可退出监视器。

想要一次性执行构建,烧写和监视,可以运行如下命令:

idf.py flash monitor

6.6 仅编译并烧写应用程序

在第一次烧写过后,你可能只想构建并烧写你的应用程序,不包括引导程序和分区表:

  • idf.py app - 仅构建应用程序。
  • idf.py app-flash - 仅烧写应用程序。

idf.py app-flash 会自动判断是否有源文件发生了改变而后重新构建应用程序。

(在正常的开发中,即使引导程序和分区表没有发生变化,每次都重新烧写它们并不会带来什么危害。)

6.7 擦除 Flash

idf.py flash 并不会擦除 Flash 上所有的内容,但是有时候我们需要设备恢复到完全擦除的状态,尤其是分区表发生了变化或者 OTA 应用升级。要擦除整块 Flash 请运行 idf.py erase_flash

这条命令还可以和其余命令整合在一起,idf.py -p PORT erase_flash flash 会擦除一切然后重新烧写新的应用程序,引导程序和分区表。

七、其它参考资源

  • 最新版的文档:https://docs.espressif.com/projects/esp-idf/ ,该文档是由本仓库 docs 目录 构建得到。
  • 可以前往 esp32.com 论坛 提问,挖掘社区资源。
  • 如果你在使用中发现了错误或者需要新的功能,请先查看 GitHub Issues,确保该问题不会被重复提交。
  • 如果你有兴趣为 ESP-IDF 作贡献,请先阅读贡献指南

• 由 青梅煮久 写于 2020 年 12 月 19 日

• 参考:
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html#