装了个ESP-IDF,因为平时用VScode比较多,所以是通过它的插件安装的,结果装的我电脑到处都是Epressif文件夹(不知道直接装ESP-IDF会不会也到处都是它的目录)。后来改用Docker电脑干净多了,因为docker本来就是用来隔离环境的。本篇博客就来记录一下如何用Docker 搞定 ESP-IDF编译环境。

一. 下载docker

docker在Linux或者windows下都可以安装。
Windows去官网上安装docker desktop:
https://www.docker.com/products/docker-desktop/
在这里插入图片描述
Intel和AMD的电脑都选AMD64的那个。
Windows安装的话需要搞定wsl环境,这个你顺着安装自然就装上了,它安装半中间会跳出来一个Powershell的界面,如果没有wsl它会让你按回车装,回车之后它就会自动安装了。

Linux就用命令行安装:

# Ubuntu
sudo apt install docker.io
sudo systemctl start docker

二、拉取ESP-IDF官方镜像

因为我是在Windows系统下安装的,下面的步骤也都是Windows的docker desktop上操作的。

首先,docker desktop界面长这样,如果你不需要从类似git一样的拥有自己的docker远程仓库,那就不用注册和登录,它让你sign in不理它跳过就行了。
在这里插入图片描述
因为国内的网络可能存在限制,下载镜像可能下不下来,需要修改一个配置。(这里我和AI大战800回合,不管换啥都是403。最后上网搜到一个可以的,有的时候还是人类靠谱啊。。。)

通过右上角小齿轮点进设置 -> Docker Engine -> 改成下面这一段 -> Apply应用

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.1panel.live",
    "https://hub.rat.dev"
  ]
}

在这里插入图片描述

开始里输powershell,输入以下命令拉取官方的ESP-IDF镜像。冒号后面是它的镜像标签,一般就是版本号,如果有指定版本就放这里,如果没有想下载最新版就写latest。

docker pull espressif/idf:latest

# downloade old version
docker pull espressif/idf:v5.3.1

经过上面对docker engine的设置这里应该不会被卡住了。下载之后可以用docker images命令查看当前你有的docker。

docker images

三、使用镜像编译

运行docker的命令是docker run:

docker run --rm -v E:\workspace\esp32:/project -w /project espressif/idf:latest idf.py build

下面我列出每个参数的意思,大家可以按照自己的使用需求修改命令:

docker run \
  --rm \                            # 容器运行完自动删除,不留垃圾
  -v E:\workspace\esp32:/project \  # 把代码目录挂载到容器内的 /project下,因为我是windows环境路径用\,docker里面是linux环境路径用/
  -w /project \                     # 工作目录设为 /project
  espressif/idf:latest \            # 使用的镜像名
  idf.py build                      # 要执行的命令

后面就坐等编译完成了。

如果不想每次都输这么长的命令也可以做一个命令别名:

function idf {
    docker run --rm -v ${PWD}:/project -w /project espressif/idf:latest idf.py $args
}

之后再使用的时候就可以:

# 进入项目目录
cd my_esp_project

# 设置目标芯片
idf set-target esp32c3

# 编译
idf build

四、使用镜像烧录

烧录其实我还没试,我就只做了编译这部分,如果大家有需要还可以继续烧录:

# example: com 3
docker run --rm -v E:\project\esp32:/project -w /project --device=/dev/ttyS3 espressif/idf:latest idf.py flash

五、如何删除Docker镜像

当你需要删除docker的时候,执行以下操作:

# 查看所有镜像
docker images

# 删除指定镜像
docker rmi espressif/idf:latest

# 或者一键清理所有未使用的镜像、容器、网络
docker system prune -a

删除后,项目代码还在本地的,这个只是把ESP-IDF删了,代码完全不受影响。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐