一、摘要
其实不论在Linux还是Windows上搭建ESP32开发环境,都有依赖问题,导致环境搭建浪费大量时间,甚至最终还是失败,这是个痛点,让我们很烦躁,我们一直致力于ESP32开发的研究,本篇文章先彻底解决Linux开发环境搭建的所有问题(使用docker技术),之后会彻底解决Windows开发环境问题。
二、什么是docker?
docker是一种虚拟化技术,表面上看与虚拟机一样,是一个虚拟的系统,事实上他远远比一个操作系统消耗的资源少,因为docker只是一个Linux系统的一个服务进程。
三、为什么能解决所有Linux开发环境的问题?
docker是一种虚拟机技术,所以只要做一次好的ESP32的Linux环境,然后把这个环境做成一个docker镜像,那么不论你是什么样的Linux系统,只要你安装一个docker软件,然后使用做好的这个镜像,开启docker服务,那么你就有了一个完美的开发环境。
四、安装docker。
以ubuntu为例,安装docker:
step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
其他的Linux系统自行百度搜索即可快速安装。
注:如果安装缓慢,可以修改安装源,也可以百度。
五、获取esp-idf环境镜像。
我们提供了一个制作好的esp32-idf的docker镜像,名字为:idf_v4x_full_v3.tar。
百度网盘地址:
链接:https://pan.baidu.com/s/1u-5FiTGH51SuhrL0eOs_4g
提取码:z8e9
六、创建容器,使用docker进行开发。
注:代码包加速拉取参考文章:怎么加速拉取github代码包(以ESP-IDF为例)。
(1)加载镜像,创建容器。
加载镜像命令:sudo docker load -i idf_v4x_full_v3.tar
查看镜像:sudo docker image ls
使用镜像创建容器:sudo docker run -it -d d2098b4ed96c
,其中d2098b4ed96c
就是刚才加载的docker镜像的ID。
查看容器:sudo docker ps
注:容器需要使用到网络端口号,所以docker命令的运行需要超级权限,如果感觉麻烦可以使用Linux别名命令alias sdocker="sudo docker"
,之后直接使用sdocker即可。
(2)使用容器环境进行esp-idf开发。
(2.1)直接使用内部的esp-idf代码包。
在容器内部,我们已经提供了esp32-idf开发的代码包(已为v4.3版本),在目录下面,可以使用git pull
进行与github进行同步。
使用命令sudo docker exec -it dccbce0f4778 /bin/bash
,其中是刚才创建容器的ID号。
出现如下终端,说明成功进入容器,
到一个esp32-idf的一个例程下面输入 idf.py menuconfig
,就会弹出如下配置界面。
(2.2)挂在外部的esp-idf代码包。
如果在宿主机里面有了esp-idf的软件包,可以在创建容器的时候,把这个路径覆盖到容器的一个目录下面,使用命令:sudo docker run -it -v 宿主机路径:容器目录 -d d2098b4ed96c
到容器的目录下面就能看到宿主机的代码包,然后就可以进行继续开发了。
可以看到我们已经成功的把宿主机的目录挂载到容器中,
注:
(1)也可以把多个宿主机的目录覆盖到容器中,只要加-v选项,比如可以把宿主机的/dev覆盖到容器的/dev,此时,就可以在容器中使用idf.py flash
命令直接进行烧写代码。
由于/dev/下面都是设备文件所以,进行/dev覆盖的时候,还需要加参数--privileged
:
sudo docker run -it --privileged -v /dev:/dev -d d2098b4ed96c
(2)docker可以使用一个镜像创建无数多容器,容器使用还有很多其他操作,百度即可。
停止容器命令:docker kill 容器ID
删除容器命令:docker rm 容器ID
七、总结。
(1)安装docker软件。
(2)下载镜像环境包。
(3)加载docker镜像。
(4)创建容器。
(5)进入容器。
(6)进行开发。
QQ交流群:454308668