esp8266 esp32 docker 开发环境搭建

esp-build

中文介绍

乐鑫WiFi(蓝牙)芯片程序构建环境

  • 支持芯片:
    • ESP8266 (tested)
    • ESP8285
    • ESP31B
    • ESP32 (tested)
  • 环境中包含的工具
    • xtensa-lx106-elf toolchain
    • xtensa-esp108-elf toolchain
    • xtensa-esp32-elf toolchain
    • esptool-ck
    • python and pyserial

用法:

(一) 安装docker

按照这个步骤进行安装--> https://docs.docker.com/engine/installation/

举个例子,使用apt工具安装

sudo apt install docker.io

(二) 将集成了开发环境的docker镜像拉取到本地

docker pull neucrack/esp-build

或者

docker pull daocloud.io/neucrack/esp-build
  • 第一个国内拉去的过程可能比较慢或者出错,请耐心尝试,可以使用国内的daocloud镜像加速服务或者直接使用第二个命令

(三) 运行容器

基本操作

  • 使用docker run命令运行,配合合适的参数即可开始使用咯,可以使用man docker-run进行查看,最常用的几个参数如下:
  • -v : 挂载宿主机文件目录到容器文件目录
  • -i : 交互模式
  • -t : 使用终端进行交互
  • --rm : 容器结束后删除容器及其产生的相关文件
  • --name : 为容器取名,如果没有这个参数,docker会自动生成一个名字
  • --device : 挂载宿主机设备到容器中 参数格式:宿主机设备名:容器设备名

eg:/dev/ttyUSB1:/dev/ttyUSB0 即将宿主机的串口1映射到容器的串口0

  • -e : 运行容器时添加环境变量到容器中

  • 退出容器:

exit
  • 如果没有使用--rm参数,在退出容器后想继续进入容器
docker start 容器名(或者ID号)
docker attach 容器名(或者ID号)

若不知道旧的容器名,使用docker ps -a 查看

针对模块具体举例:

1. 运行开发esp8266的容器

使用SDK:

docker run -ti --name esp8266-builder -e SDK_BASE=/build/esp8266/ESP_RTOS_SDK/ --device /dev/ttyUSB0:/dev/ttyUSB0 -v /data/esp:/build neucrack/esp-build /bin/bash
  • -name指定运行容器的名字
  • -e添加环境变量(具体的环境变量由SDK决定,阅读SDK的使用说明即可,将SDK下载或者克隆到相应文件夹下,比如这里/build/esp8266/ESP_RTOS_SDK/),如果是使用nonos版本的SDK,可以不设置环境变量
  • --device将宿主机的/dev/ttyUSB0设备挂载到容器/dev/ttyUSB0(这里是USB转串口设备,具体的设备名可以使用 ls /dev/*|grep ttyUSBdmesg|grep ttyUSBdmesg|grep ttyS 查看
    )
  • -v 将/data/esp文件夹挂载到容器的/build文件夹中,即宿主机这个文件夹和容器的build文件夹实现了同步和共享
2. 运行开发esp32的容器

使用esp-idf:

将官方的库克隆到本地

cd /data/esp/esp32
git clone --recursive https://github.com/espressif/esp-idf.git
  • 注意文件夹路径不能有空格
  • 注意使用--recursive将子模块一同引进来
    如果没有使用,可以使用如下命令进行更新
cd /data/esp/esp32/esp-idf
git submodule update --init
docker run -ti --name esp32-builder -e IDF_PATH=/build/esp32/esp-idf --device /dev/ttyUSB0:/dev/ttyUSB0 -v /data/esp:/build neucrack/esp-build /bin/bash
  • -name指定运行容器的名字
  • -e添加环境变量(设置IDF_PATH的地址为/data/esp/esp32/esp-idf,所以将)
  • --device将宿主机的/dev/ttyUSB0设备挂载到容器/dev/ttyUSB0(这里是USB转串口设备,具体的设备名可以使用 ls /dev/*|grep ttyUSBdmesg|grep ttyUSBdmesg|grep ttyS 查看
    )
  • -v 将/data/esp文件夹挂载到容器的/build文件夹中,即宿主机这个文件夹和容器的build文件夹实现了同步和共享
3. 运行同时可以开发多个芯片的容器

在前两者的基础上改改环境变量和文件夹映射就可以

(四) 编写 下载 应用程序

在已经运行了并进入容器之后(所以下面的命令都在容器中执行,不是在宿主机中哦),根据SDK的使用说明使用

比如:

esp8266 RTOS SDK

开始可以使用example/下的例子直接测试,使用方法见具体例子下的readme,注意环境变量的要求,执行gen_misc.sh脚本编译程序,生成二进制文件*.bin.
然后使用下载工具下载到模块,
eg:

esptool -cc esp8266 -cp /dev/ttyUSB0 -cd nodemcu -ca 0x00000 -cf 00000.bin -ca 0x40000 -cf 40000.bin
  • 参数使用man esptool进行查看。二进制文件文件名及地址参考SDK说明
  • 注意在下载的时候串口不能被占用哦~(比如串口助手正在使用串口)否则会下载失败滴
  • 注意如果使用nodemcu,下载模式要使用DIO哦
esp32 SDK

根据example/文件夹下的readme内容进行操作

  • 进入具体的example目录,比如hello-world/目录下,然后make menuconfig设置参数
  • 然后使用make flash进行编译丶链接丶烧写

注意在下载的时候串口不能被占用哦~(比如串口助手正在使用串口)否则会下载失败滴

  • 下载完成之后按复位键(EN脚失能后使能)即可运行

  • 在宿主机或者容器内打开串口助手查看(容器内默认没有安装串口助手哦),有输出信息。串口助手可以使用minicom,也可以在宿主机上使用带GUI的软件

    minicom安装使用

    安装

sudo apt-get install minicom

设置(*设置好了记得保存设置*)
```bash

sudo minicom -s

运行
```bash

sudo minicom

参考

来自vowstar/esp8266,

推荐阅读更多精彩内容