以下是在虚拟机VMWare虚拟机中安装的Ubuntu上搭建ESP-IDF开发环境。

1、获取ESP-IDF
  • 创建存放ESP-IDF的目录
1
2
3
cd ~
mkdir esp
cd esp

这里存放到用户目录 esp 文件夹下: ~/esp/

  • 从gitee仓库获取ESP-IDF主仓库:
1
git clone https://gitee.com/EspressifSystems/esp-idf.git
  • 切换版本

如果是产品开发则一般需要使用稳定版本;

1
2
3
cd esp-idf
git fetch
git checkout v4.4.1

这里切换到最新的稳定版,在这里查看版本说明:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/versions.html#

  • 下载esp-idf子模块

由于esp-idf下有很多子模块没有安装,需要如下方式安装:

1
2
cd ~/esp/esp-idf 
git submodule update --init --recursive
2、安装工具
  • 安装工具:
1
2
3
cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh
  • 导出环境变量
1
2
cd ~/esp/esp-idf
. ./export.sh //注意有一个空格

如果是需要在终端打开时自动开启该环境,需要在 ~/.profile 中添加:

1
. $HOME/esp/esp-idf/export.sh
  • 在VSCode中安装 ESP-IDF插件后配置即可完成。
3、测试使用

复制一个示例到其他目录下,进行编译、烧录操作:

1
2
3
4
5
cp ../esp-idf/examples/get-started/hello_world . -r

cd hello_world

idf.py build flash -p /dev/ttyUSB0
4、问题:
4.1 安装工具时候执行 install.sh 错误:
1
ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv

这个问题由于Python引起,根据以下方法解决:

python更换源:

1
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

更新再安装工具:

1
2
3
4
5
6
7
sudo apt update
sudo apt upgrade -y

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
sudo apt install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
sudo apt install -y git wget flex bison gperf python-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util
4.2 串口ttyUSB0不出现

使用 sudo dmesg|grep brltty,查看到CH340的USB转串口驱动被占用了,需要删除 brltty:

重新插拔即可出现

4.3 烧写时候串口权限问题

执行烧写命令后提示:PermissionError: [Errno 13] Permission denied: ‘/dev/ttyUSB0’;

虚拟机连接的设备默认是root用户,需要更改其权限,添加 dialout组:

1
sudo usermod -a -G dialout $USER

然后重启系统即可;

4.4 烧写时候提示没有启动boot模式

板子有自动烧写电路,但是直接烧写不成功,可以试以下方法:

  • 方法1

在提示 “ Connecting……………………………….. “ 的时候需要按一下rst按键,开始烧写;

  • 方法2

参考:https://github.com/espressif/esptool/issues/323)

在虚拟机中将硬件->USB控制器->usb兼容性更改为usb3:

再连接板子进行烧写,可以正常烧写成功。