Lazy loaded image
🤖 ROS 理论与实践
ESP-IDF 工具介绍2 - Docker镜像和QEMU模拟器
Words 1636Read Time 5 min
2025-6-18
2025-7-16
type
date
slug
category
icon
password

IDF Docker 镜像

参考资料

  1. IDF Docker 镜像 - ESP32-S3 - — ESP-IDF 编程指南 v5.4.1 文档

下载镜像

配置Docker使用中国区域的镜像源

请按照以下步骤操作:
  1. 创建或修改Docker的配置文件:
    1. 重新加载配置并重启Docker服务:
      1. 验证镜像是否配置成功:
        1. 在输出中应该能看到"Registry Mirrors"部分列出了你配置的镜像。
      1. 然后再尝试拉取ESP-IDF镜像:
        这些镜像源包括了Docker中国官方镜像、中科大镜像、网易镜像和百度镜像,提供了多个选择以确保你能连接到速度较快的源。配置完成后,Docker将优先从这些国内镜像站点下载镜像,从而解决网络超时的问题。
        ESP-IDF 版本简介 - ESP32 - — ESP-IDF 编程指南 v5.4.1 文档
        选择稳定版 V5.4
        notion image
        https://hub.docker.com/r/espressif/idf/tags 提供docker镜像版本说明

        镜像内容

        • 常见的实用工具,如 gitwgetcurl 和 zip
        • Python 3.8 或更高版本。
        • 特定版本 ESP-IDF 的副本。有关版本信息,请参阅下文。该副本中设置了 IDF_PATH 环境变量,并指向容器中 ESP-IDF 的位置。
          • 构建特定版本 ESP-IDF 所需工具:CMake、Ninja、交叉编译器工具链等。
          • ESP-IDF 需要的所有 Python 软件包。这些软件包均已安装在虚拟环境中。
          • 镜像 ENTRYPOINT 会设置 PATH 环境变量,指向正确版本的工具,并激活 Python 虚拟环境。此时,环境已经准备好,可以使用 ESP-IDF 构建系统
              1. 检测并设置 ESP-IDF 环境变量
              1. 检查 Python 环境
              1. 激活 ESP-IDF 环境
              1. 检测 Shell 类型
              1. 检测系统工具是否过期
              1. 输出提示信息

          开发环境设置

          • 使用 Docker Desktop 确保容器正常运行
          • 建议使用 WSL2 作为开发环境(powershell 指令细节不一致)
            • notion image
          • 保持 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 模拟器

          参考资料

          1. QEMU 模拟器 - ESP32-S3 - — ESP-IDF 编程指南 v5.4.1 文档
           
          乐鑫维护了一个 QEMU 模拟器的 分支,支持 ESP32-S3。这个分支实现了对 ESP32-S3 的 CPU、内存和多个外设的模拟,idf.py 支持在 QEMU 中运行和调试应用程序,因此不必将应用程序烧录到真实硬件中,也可以便捷地进行测试
          使用容器方法依赖项和QEMU均安装好,无需额外操作。其他方法安装,参考这里

          用法1 - 在 QEMU 中运行 IDF 应用程序

          执行构建应用程序、启动 QEMU 、打开 IDF 监视器,并将 IDF 监视器连接到模拟的 UART 端口。你可以看到应用程序的控制台输出并与之交互。

          用法2 - 在QEMU 中调试应用程序

          执行构建应用程序,启用 GDB 服务器,并启动 QEMU,开启交互式 GDB 会话。这样就能像在真实的硬件上一样,通过 GDB 调试应用程序。
          在 QEMU 中调试的同时查看控制台输出,可使用两个终端。
          1. 在第一个终端运行:
            1. 启动 QEMU 并等待 GDB 连接,控制台输出会显示在此终端。
          1. 在第二个终端运行:
            1. 自动连接到 QEMU 的 GDB 服务器。
          1. 在 GDB 中不要用 run,直接用 continue(c)让程序继续运行。
              • run 适用于本地调试(GDB 直接加载 elf),
              • continue 适用于远程调试(GDB 已经 attach 到目标)。
          1. 可以设置断点(break)、单步调试(next/step)、查看变量(print)等。

          用法3 - 图形支持

          QEMU 支持虚拟帧缓冲设备。帧缓冲设备在真实的 ESP32-S3 硬件中并不存在,但可以用于在 QEMU 中测试图形应用程序。
          请使用以下命令,启动带有虚拟帧缓冲设备的 QEMU:
          idf.py qemu --graphics monitor
          当启用 --graphics 选项时,QEMU 会打开一个额外的窗口,显示帧缓冲内容。
          要在应用程序中使用虚拟帧缓冲设备,可以将 espressif/esp_lcd_qemu_rgb 组件添加到项目中。此组件为虚拟帧缓冲设备提供了一个与 esp_lcd 兼容的驱动程序。
           
          其他功能可以阅读参考文献。
          上一篇
          基于Docker搭建ESP32开发环境(Windows)
          下一篇
          ESP-IDF VS Code扩展 Cheet Sheet

          Comments
          Loading...