type
date
slug
category
icon
password
IDF Docker 镜像参考资料下载镜像配置Docker使用中国区域的镜像源镜像内容开发环境设置常用命令CMake 构建项目以特定 Docker 镜像标签进行构建交互方式进行构建QEMU 模拟器参考资料用法1 - 在 QEMU 中运行 IDF 应用程序用法2 - 在QEMU 中调试应用程序用法3 - 图形支持
IDF Docker 镜像
参考资料
IDF Docker 镜像 - ESP32-S3 - — ESP-IDF 编程指南 v5.4.1 文档
IDF Docker 镜像 - ESP32-S3 - — ESP-IDF 编程指南 v5.4.1 文档
特定版本 ESP-IDF 的副本。有关版本信息,请参阅下文。该副本中设置了 IDF_PATH 环境变量,并指向容器中 ESP-IDF 的位置。
下载镜像
配置Docker使用中国区域的镜像源
请按照以下步骤操作:
- 创建或修改Docker的配置文件:
- 重新加载配置并重启Docker服务:
- 验证镜像是否配置成功:
在输出中应该能看到"Registry Mirrors"部分列出了你配置的镜像。
- 然后再尝试拉取ESP-IDF镜像:
这些镜像源包括了Docker中国官方镜像、中科大镜像、网易镜像和百度镜像,提供了多个选择以确保你能连接到速度较快的源。配置完成后,Docker将优先从这些国内镜像站点下载镜像,从而解决网络超时的问题。
ESP-IDF 版本简介 - ESP32 - — ESP-IDF 编程指南 v5.4.1 文档
最新稳定版 ESP-IDF:https://docs.espressif.com/projects/esp-idf/zh_CN/stable/
选择稳定版 V5.4
https://hub.docker.com/r/espressif/idf/tags 提供docker镜像版本说明
镜像内容
- 常见的实用工具,如
git
、wget
、curl
和zip
。
- Python 3.8 或更高版本。
- 特定版本 ESP-IDF 的副本。有关版本信息,请参阅下文。该副本中设置了
IDF_PATH
环境变量,并指向容器中 ESP-IDF 的位置。
- 构建特定版本 ESP-IDF 所需工具:CMake、Ninja、交叉编译器工具链等。
- ESP-IDF 需要的所有 Python 软件包。这些软件包均已安装在虚拟环境中。
- 镜像
ENTRYPOINT
会设置PATH
环境变量,指向正确版本的工具,并激活 Python 虚拟环境。此时,环境已经准备好,可以使用 ESP-IDF 构建系统 - 检测并设置 ESP-IDF 环境变量
- 检查 Python 环境
- 激活 ESP-IDF 环境
- 检测 Shell 类型
- 检测系统工具是否过期
- 输出提示信息
开发环境设置
- 使用 Docker Desktop 确保容器正常运行
- 建议使用 WSL2 作为开发环境(powershell 指令细节不一致)

- 保持 Docker 镜像更新到最新版本
常用命令
CMake 构建项目
该命令具体内容如下:
docker run
:运行 Docker 镜像。此为docker container run
命令的缩写形式。
-rm
:构建完成后删除相应容器。
v $PWD:/project
:将主机当前目录 ($PWD
) 挂载为容器中的/project
目录。
w /project
:使/project
成为当前命令的工作目录。
u $UID
:以当前用户的 ID 运行命令,使文件以当前用户而非 root 用户的身份创建。
e HOME=/tmp
:为用户提供一个主目录,用于将idf.py
创建的临时文件保存在~/.cache
中。
espressif/idf
:使用标签为latest
的 Docker 镜像espressif/idf
。未指定标签时,Docker 会隐式添加latest
标签。
idf.py build
:在容器内运行此命令。
以特定 Docker 镜像标签进行构建
交互方式进行构建
QEMU 模拟器
参考资料
QEMU 模拟器 - ESP32-S3 - — ESP-IDF 编程指南 v5.4.1 文档
QEMU 模拟器 - ESP32-S3 - — ESP-IDF 编程指南 v5.4.1 文档
乐鑫维护了一个 QEMU 模拟器的 分支,支持 ESP32-S3。这个分支实现了对 ESP32-S3 的 CPU、内存和多个外设的模拟。更多有关 ESP32-S3 的 QEMU 的信息,请参阅 QEMU README 文档。
乐鑫维护了一个 QEMU 模拟器的 分支,支持 ESP32-S3。这个分支实现了对 ESP32-S3 的 CPU、内存和多个外设的模拟,idf.py 支持在 QEMU 中运行和调试应用程序,因此不必将应用程序烧录到真实硬件中,也可以便捷地进行测试。
使用容器方法依赖项和QEMU均安装好,无需额外操作。其他方法安装,参考这里。
用法1 - 在 QEMU 中运行 IDF 应用程序
执行构建应用程序、启动 QEMU 、打开 IDF 监视器,并将 IDF 监视器连接到模拟的 UART 端口。你可以看到应用程序的控制台输出并与之交互。
用法2 - 在QEMU 中调试应用程序
执行构建应用程序,启用 GDB 服务器,并启动 QEMU,开启交互式 GDB 会话。这样就能像在真实的硬件上一样,通过 GDB 调试应用程序。
在 QEMU 中调试的同时查看控制台输出,可使用两个终端。
- 在第一个终端运行:
启动 QEMU 并等待 GDB 连接,控制台输出会显示在此终端。
- 在第二个终端运行:
自动连接到 QEMU 的 GDB 服务器。
- 在 GDB 中不要用 run,直接用 continue(c)让程序继续运行。
- run 适用于本地调试(GDB 直接加载 elf),
- continue 适用于远程调试(GDB 已经 attach 到目标)。
- 可以设置断点(break)、单步调试(next/step)、查看变量(print)等。
用法3 - 图形支持
QEMU 支持虚拟帧缓冲设备。帧缓冲设备在真实的 ESP32-S3 硬件中并不存在,但可以用于在 QEMU 中测试图形应用程序。
请使用以下命令,启动带有虚拟帧缓冲设备的 QEMU:
idf.py qemu --graphics monitor
当启用
--graphics
选项时,QEMU 会打开一个额外的窗口,显示帧缓冲内容。要在应用程序中使用虚拟帧缓冲设备,可以将 espressif/esp_lcd_qemu_rgb 组件添加到项目中。此组件为虚拟帧缓冲设备提供了一个与 esp_lcd 兼容的驱动程序。
其他功能可以阅读参考文献。
- Author:felixfixit
- URL:http://www.felixmicrospace.top/article/esp_idf_tools_docker_qemu
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!