ESP32 Docker 开发环境
使用 Docker 设置 ESP32 开发环境
Section titled “使用 Docker 设置 ESP32 开发环境”本指南介绍了如何使用 Docker 设置 ESP32 开发环境,并提供了一些 PowerShell 和 Bash 脚本来简化开发流程。这些脚本帮助您创建项目、设置目标芯片、编译、烧录和监视 ESP32 项目。
- 前提条件
- Docker 安装
- 拉取 ESP-IDF Docker 镜像
- Docker Compose 设置
- PowerShell 脚本 (esp-idf-menu.ps1)
- Bash 脚本 (esp-idf-menu.sh)
- GitHub Actions 自动构建与发布
- 总结
- 安装 Docker。
- PowerShell(Windows 用户)或 Bash(Linux/macOS 用户)来运行提供的脚本。
- GitHub 账户(用于 Actions 自动化)
Docker 安装
Section titled “Docker 安装”-
按照 官方 Docker 网站 上的说明安装 Docker。
-
安装完成后,在终端中运行以下命令来验证 Docker 是否安装成功:
Terminal window docker --version
拉取 ESP-IDF Docker 镜像
Section titled “拉取 ESP-IDF Docker 镜像”要在 Docker 中设置 ESP-IDF 开发环境,请从 Docker Hub 拉取官方 espressif/idf 镜像。运行以下命令:
docker pull espressif/idf:v5.4.1此命令会下载 ESP32 开发所需的 espressif/idf Docker 镜像(版本 v5.4.1)。
Docker Compose 设置
Section titled “Docker Compose 设置”-
确保已安装
docker-compose,如果没有,请参考 Docker Compose 官方文档 进行安装。 -
docker-compose.yml文件允许您使用 Docker Compose 来管理 ESP32 开发环境。以下是docker-compose.yml文件的内容:version: "3.8"services:esp-idf:image: espressif/idf:v5.4.1container_name: esp-idf-builderworking_dir: /projectvolumes:- .:/projectenvironment:- HOME=/tmp- IDF_GIT_SAFE_DIR=/projecttty: truestdin_open: true该配置会将主机上的
.目录挂载到 Docker 容器中的/project目录,并确保容器内的环境适合 ESP32 项目的编译。
PowerShell 脚本 (esp-idf-menu.ps1)
Section titled “PowerShell 脚本 (esp-idf-menu.ps1)”esp-idf-menu.ps1 是一个基于 PowerShell 的菜单脚本,允许您与 ESP32 Docker 容器交互并管理 ESP32 项目。它包括创建项目、设置目标芯片、编译项目、配置设置以及烧录操作等功能。下面是该脚本的使用说明:
- 创建项目:使用此选项,您可以在指定的目录中创建新的 ESP32 项目。
- 设置目标芯片:此选项用于设置目标芯片(例如
esp32s3或esp32s2)。 - 编译项目:选择此选项后,脚本会在指定的项目目录下执行
idf.py build命令,开始编译项目。 - 配置项目:该选项会运行
idf.py menuconfig,以图形化界面进行项目配置。 - 进入容器终端:您可以选择进入 ESP-IDF Docker 容器的交互式终端,在容器内执行命令。
- 启动串口服务器:通过选择此选项,您可以启动串口服务器(
esp_rfc2217_server),通过 RFC2217 协议进行串口通信。 - 烧录程序:选择此选项后,脚本会通过
idf.py flash命令将程序烧录到 ESP32 设备上。 - 串口监视器:此选项会启动
idf.py monitor命令,连接到 ESP32 设备并显示输出。
-
打开 PowerShell 窗口,导航到包含
esp-idf-menu.ps1脚本的目录。 -
运行脚本:
Terminal window .\esp-idf-menu.ps1 -
脚本会显示一个菜单,您可以选择需要执行的操作。
- 在执行某些操作时(如创建项目、设置目标芯片等),脚本会提示您输入必要的参数,如项目名称或目标芯片名称。
- 脚本会自动检测并安装
esptool,如果没有安装,它会尝试执行install_esptool.py脚本。
Bash 脚本 (esp-idf-menu.sh)
Section titled “Bash 脚本 (esp-idf-menu.sh)”对于 Linux 或 macOS 用户,您可以使用 esp-idf-menu.sh 脚本,它与 esp-idf-menu.ps1 脚本的功能相同。以下是该脚本的使用步骤:
-
打开终端,导航到包含
esp-idf-menu.sh脚本的目录。 -
运行脚本:
Terminal window ./esp-idf-menu.sh -
脚本会显示一个菜单,您可以选择执行相应的操作。
GitHub Actions 自动构建与发布(.github/workflows/esp32.yml)
Section titled “GitHub Actions 自动构建与发布(.github/workflows/esp32.yml)”此工作流会在您推送 tag(如 v1.0.0)到 release 分支时自动触发,并完成固件编译与 GitHub Release 发布。
自动构建与发布流程
Section titled “自动构建与发布流程”- 触发条件:
- 推送 tag(格式如
v1.0.0)到release分支 - 或使用 GitHub 手动触发按钮
- 推送 tag(格式如
- 构建步骤:
- 使用
docker compose启动espressif/idf容器 - 运行
idf.py set-target <芯片型号>设置目标芯片 - 编译固件
- 将产物重命名为版本化名称,如:
esp32c3-v1.0.0.bin
- 使用
- 发布步骤:
- 上传构建产物为 Artifact
- 使用
softprops/action-gh-release创建 GitHub Release 并附加产物
更换目标芯片
Section titled “更换目标芯片”默认构建的是 ESP32-C3(esp32c3)。如果您使用其他芯片,请在 .github/workflows/esp32.yml 中手动修改这两处:
yaml复制编辑# 将 esp32c3 替换为您的目标芯片(如 esp32、esp32s3)idf.py set-target esp32c3mv build/*.bin build/esp32c3-${VERSION}.bin例如,如果您的芯片是 ESP32-S3,修改如下:
yaml复制编辑idf.py set-target esp32s3mv build/*.bin build/esp32s3-${VERSION}.bin请确保修改 .bin、.elf、.map 的命名一致。
- 与 PowerShell 脚本类似,
esp-idf-menu.sh脚本会提示您输入必要的参数,并帮助您完成 ESP32 项目的管理。
为项目添加 Kconfig
Section titled “为项目添加 Kconfig”在项目文件夹下创建Kconfig.projbuild文件。
orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps"
menu "Example Configuration" # 你的配置项endmenuSDKCONFIG 环境变量
Section titled “SDKCONFIG 环境变量”可以通过设置 SDKCONFIG 环境变量来指定使用哪个 sdkconfig 文件:
# 使用 sdkconfig.debug 文件构建SDKCONFIG=sdkconfig.debug idf.py build通过使用 Docker 和提供的脚本,您可以轻松地在隔离的环境中进行 ESP32 项目的开发。无论是在 Windows 还是 Linux/macOS 系统上,您都可以根据自己的需求运行相应的脚本来管理项目的生命周期。
如果遇到问题,请检查 Docker 配置和相关依赖是否正确安装,并确保按照文档中的步骤操作。