> 文章列表 > Ubuntu20.04/22.04 ESP32 命令行开发环境配置

Ubuntu20.04/22.04 ESP32 命令行开发环境配置

Ubuntu20.04/22.04 ESP32 命令行开发环境配置

ESP32 芯片系列

ESP32分三个系列

  • ESP32-S
    • ESP32-S3: Xtensa® 32位 LX7 双核 240 MHz, 384KB ROM, 512KB SRAM, QFN7x7, 56-pin, 2.4G Wi-Fi + BT
    • ESP32-S2: Xtensa® 32位 LX7 单核 240 MHz, 128KB ROM, 320KB SRAM, QFN7x7, 56-pin, 2.4G Wi-Fi
  • ESP32-C
    • ESP32-C3: RISC-V 32位 单核 4流水线 160 MHz, 384 KB ROM, 400 KB RAM, QFN5x5, 28-pin/32-pin, 2.4 GHz Wi-Fi + BT
  • ESP32
    • ESP32-D0xx: Xtensa® 32位 LX6 双核 80-240 MHz, 448 KB ROM, 520 KB SRAM, QFN5x5/QFN6x6/LGA7x7, 48-pin, 2.4 GHz Wi-Fi + BT
    • ESP32-S0xx: Xtensa® 32位 LX6 单核 80-240 MHz, 448 KB ROM, 520 KB SRAM, QFN5x5, 48-pin, 2.4 GHz Wi-Fi + BT

在开发环境下, 这些属于不同的target, 需要单独指定, 例如

cd ~/esp/esp-idf
./install.sh esp32,esp32c3,esp32s3

配置环境

安装环境依赖

sudo apt install git wget flex bison gperf python3 python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

如果网络不太好, 最好先设置下代理

git config --global https.proxy "socks5://127.0.0.1:1080"
git config --global http.proxy "socks5://127.0.0.1:1080"

导出esp-idf项目仓库

mkdir -p ~/Esp
cd ~/Esp
git clone --recursive https://github.com/espressif/esp-idf.git

如果导出中途中断, 可以用这个命令继续初始化子模块, 导出子模块的过程中可以中断, 已经导出成功的不受影响, 下次执行会从未完成的模块处继续导出

git submodule update --init --recursive

如果中断后, 主仓库有变化导致子模块也有更新, 在pull主仓库时要加上 --recurse-submodules 参数

git pull --recurse-submodules

如果子模块出现版本不一致导致的dirty, 在主目录下git status能看到这些子模块列表, 到这些子模块目录下, 执行以下命令撤销修改

# 查看修改被 staged 的情况
git status
# 取消这些文件的 stage
git restore --staged ./*
# 恢复这些文件
git checkout -- .

安装工具链, 这个脚本会下载工具链, 并把工具链安装到~/.espressif/ 目录, 差不多要占用500M空间

cd ~/Esp/esp-idf
# 指定使用 Espressif 下载服务器, 否则从 github 下载会非常慢
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
# 指定要安装的是esp32, 如果不指定会安装全部
./install.sh esp32

在esp-idf目录下运行export.sh设置环境变量, 注意前面有个.

. ./export.sh

注意: 如果之前有设置过ESP8266的IDF_PATH, 上面的命令会运行失败, 此时先要把IDF_PATH清空再运行

echo $IDF_PATH
/home/milton/Esp/ESP8266_RTOS_SDK
export IDF_PATH=
~/Esp/esp-idf$ echo $IDF_PATH

编译

准备

# 复制样例项目
cd ~/esp
cp -r esp-idf/examples/get-started/hello_world/ .
cd hello_world
# 设置类型, esp32, esp32s2
idf.py set-target esp32
# 设置编译选项
idf.py menuconfig
# -> Serial flasher config -> Flash size, 修改为4M
# -> Component config -> FreeRTOS -> Run FreeRTOS only on first core

如果烧录对象是solo, 需要勾选Component config -> FreeRTOS -> Run FreeRTOS only on first core

编译

idf.py build

写入

idf.py -p /dev/ttyUSB0 flash

CP2012

会自动重启, 全程无需手工reset, 如果原固件有大量串口输出导致写入无反应, 可以先断电, 再按住IO0加电进入烧录状态

简易核心板

有不同情况, 可以分别尝试

  1. 按住IO0->执行flash->按下再松开RESET, 会开始写入
  2. 如果上面的操作不行, 断电->执行flash命令->按住IO0->上电
  3. 如果上面的操作, 上电提示错误的, 可以尝试先按住IO0->上电, 然后执行flash命令
  4. 烧录结束后, 需要按一下Reset键, 才会开始执行

ESP32 S2 Mini

按住0按钮, 然后执行烧录命令, 按下Reset然后再松开, 这时候ESP32 S2就进入了 Device Firmware Upgrade (DFU) 模式, 在 dmesg 里能看到 ttyACM0: USB ACM device 设备. 然后开始烧录. 参考 https://embeddedcomputing.com/technology/open-source/development-kits/hands-on-with-the-wemos-s2-mini-esp32-development-board

查看串口输出

idf.py -p /dev/ttyUSB0 monitor
# 如果要烧录加查看
idf.py -p /dev/ttyUSB0 flash monitor

如果要退出串口输出模式, 按Ctrl+]

升级ESP-IDF环境

升级 ESP-IDF最简单的方式就是删除esp-idf目录, 重新clone一份, 运行install.sh脚本, 再通过export.sh更新环境变量

参考

  • 环境搭建和安装,编译,烧录说明
    https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html
  • 开发板产品页
    https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html
  • 使用ESP32做DSP处理
    https://github.com/espressif/esp-dsp
  • Xtensa 处理器架构,产商Tensilica
    https://blog.csdn.net/tugouxp/article/details/113816681
  • WeMos Mini ESP32-S2FN4R2介绍 https://blog.csdn.net/weixin_42880082/article/details/127710574