ESP32环境配置

参考链接:

本人环境:

  • ubuntu 20.04
  • python3
  • IDF 4.2

安装准备

按照官方脚本安装对应工具:

参考链接:Linux 平台工具链的标准设置 - ESP32 - — ESP-IDF 编程指南 v4.3.1 文档

1
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
  • 仅适用于目前IDF版本,如果IDF更新,请按照官方文档安装对应工具

获取IDF

从下面的GitHub链接获取对应版本的IDF

安装

官方步骤

直接cd到刚刚下载的IDF目录,执行./install.sh脚本即可

1
2
3
cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets" # 使用 Espressif 下载服务器
./install.sh
  • 安装脚本./install.sh会自动下载对应版本的工具链到默认目录~/.espressif

    • 可以通过预先设置系统环境变量IDF_TOOLS_PATH修改上述目录,并确保之后运行的每个IDF脚本均可获得该环境变量
  • 通过设置环境变量IDF_GITHUB_ASSETS可以使用Espressif 下载服务器,加速下载(实测有时候不如GitHub官方速度)

  • ./install.sh脚本仅仅只会调用idf/tools/idf_tools.py install进行下载当前IDF版本对应的工具链与openocd,调用idf/tools/idf_tools.py install-python-env配置对应的虚拟环境,并不会导出IDF的环境变量

    • 在Ubuntu上,由于默认的python版本为python2,所以创建虚拟环境会用python2进行创建,此时会失败,所以需要删除该虚拟环境,并手动调用python3重新进行创建:

      1
      2
      rm -rf ~/.espressif/python_env/idf4.2_py2.7_env # 删除虚拟环境
      python3 ./tools/idf_tools.py install-python-env # 手动重新创建

手动导出对应IDF版本的环境变量:

1
source IDF目录/export.sh
  • 尝试设置环境变量IDF_PATH
  • 调用idf/tools/idf_tools.py export进行导出工具链的环境变量到系统PATH
    • 导出idf/tools到PATH
  • 导出以下几个工具到PATH中:
    • idf/components/esp_tool_py/esptool
    • idf/components/espcoredump
    • idf/components/partition_table
    • idf/components/app_update

上述export.sh脚本以及install.sh脚本最后都是调用的tools/idf_tools.py脚本,对于该脚本有如下参数:

  • list:列出需要的工具链及其版本
  • check:检查系统路径PATH下是否正确安装了工具链
  • export:导出该版本IDF的环境变量
  • install:安装对应的工具包
  • download:下载对应的工具包
  • install-python-env:安装虚拟环境
  • -h:帮助

自定义脚本

官方的安装步骤虽然简单,但是在Ubuntu上如果不修改默认的python版本,默认会使用python2.7,从而导致创建虚拟环境失败

所以本人使用bash脚本单独配置每个工程,在每个工程下放置如下export.sh脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

IDF_TOOLS=/home/null/.espressif
export IDF_PATH=/home/null/Code/ESP32/rtthread-esp-idf/esp-idf-v4.2

# 导出相关工具
export PATH=${IDF_PATH}/tools:$PATH
export PATH=${IDF_PATH}/components/esp_tool_py/esptool:$PATH
export PATH=${IDF_PATH}/components/espcoredump:$PATH
export PATH=${IDF_PATH}/components/partition_table:$PATH
export PATH=${IDF_PATH}/components/app_update:$PATH
# 导出虚拟环境
export IDF_PYTHON_ENV_PATH=${IDF_TOOLS}/python_env/idf4.2_py3.8_env
# 导出工具链
export PATH=${IDF_TOOLS}/tools/esp32s2ulp-elf/2.28.51-esp-20191205/esp32s2ulp-elf-binutils/bin:$PATH
export PATH=${IDF_TOOLS}/tools/esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin:$PATH
export PATH=${IDF_TOOLS}/tools/openocd-esp32/v0.10.0-esp32-20200709/openocd-esp32/bin:$PATH
export PATH=${IDF_TOOLS}/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin:$PATH
export PATH=${IDF_TOOLS}/tools/xtensa-esp32s2-elf/esp-2020r3-8.4.0/xtensa-esp32s2-elf/bin:$PATH
# 设置python
python=${IDF_PYTHON_ENV_PATH}/bin/python
# 检查工具链
# ${python} ${IDF_PATH}/tools/idf_tools.py check
# 设置idf
alias idf='${python} ${IDF_PATH}/tools/idf.py'

之后,只需要:

1
source export.sh

即可

创建工程并编译

IDF下一起带有默认的工程,直接拷过来用即可:

1
cp -r IDF路径/examples/get-started/hello_world ./

此时进入对应的工程,通过idf.py工具执行编译烧录即可:

1
2
3
4
5
6
7
8
9
10
11
12
# 1 设置对应芯片架构
idf.py set-target esp32
# 2 配置
idf.py menuconfig # 进行配置
idf.py menuconfig --style # 改变配置界面外观 防止显示不全
idf.py menuconfig --help # 配置帮助
# 3 编译
idf.py build
# 4 烧录
idf.py -p PORT [-b BAUD] flash
# 5 打开串口助手调试
idf.py -p PORT monitor # 使用快捷键 Ctrl+],退出 IDF 监视器