搭建ESP-IDF环境

本文主要侧重于Linux命令行形式的esp-idf,但也会粗略介绍windows命令行esp-idf和vs code的esp-idf插件。

1. 型号

上市日期 型号 内核 RAM ROM WiFi BT 备注
2016.09 esp32 单核或双核32bit xtensa LX6@240MHz 520KB 448KB 2.4GHz WiFi 4 BT 4.2
2020.05 esp32-s2 单核32bit xtensa LX7@240MHz 320KB 128KB 2.4GHz WiFi 4
2021.10 esp32-s3 双核32bit xtensa LX7@240MHz 512KB 384KB 2.4GHz WiFi 4 BT 5.0 ESP32-S3-N16R8 (8M+16M)
2022.10 esp32-c2 单核32bit risc-v@120MHz 272KB 384KB 2.4GHz WiFi 4 BT 5.0
2021.04 esp32-c3 单核32bit risc-v@160MHz 400KB 384KB 2.4GHz WiFi 4 BT 5.0 无 
2023.06 esp32-c5 单核32bit risc-v@160MHz 400KB 384KB 2.4GHz + 5 GHz WiFi 6 BT 5.0  双频WiFi
2023.06 esp32-c6 32bit risc-v@160MHz + risc-v@20MHz 512KB(H) + 16KB(L) 320KB 2.4GHz WiFi 6 BT 5.3 Zigbee 3.0, Thread 1.3
2024.09 esp32-c61 单核32bit risc-v@160MHz 320KB 384KB 2.4GHz WiFi 6 BT 5.0 c6的简化版
2023.03 esp32-h2 单核32bit risc-v@96MHz 320KB 128KB BT 5.3 Zigbee 3.0, Thread, Matter
2024.10 esp32-p4 双核32bit risc-v@400MHz + 单核risc-v@40MHz 768KB(H) + 32KB(L) 128KB(H) + 16KB(L) 无通信模组,可搭配如c6

Note: 上市日期不是发布日期,是量产投入市场的日期。

2. 开发环境

esp-idf是espressif官方推出的esp32的sdk,支持Windows/Linux/MacOS,且有多种方式部署开发环境:

  1. 安装VS Code插件方式;
  2. 安装Eclipse插件方式;
  3. 安装命令行方式;

本文会简单介绍第1种方式和第3种方式的Windows部分(步骤2.1,步骤2.2),并详细介绍第3种方式的Linux部分(步骤3及后续),这3种方式不存在耦合,选择感兴趣的其中一种即可。

2.1 方式1

因为VS Code跨平台,所以这种方式不区分平台,如果选用此种方式,后续步骤无需再看。

VS Code安装发布者为'Espressif Systems'的插件'ESP-IDF',安装完成后,执行:

Ctrl + P
    --> 输入 '> ESP-IDF: Configure ESP-IDF Extension'
    --> 选择 'EXPRESS'
    --> Select download server --> 'Espressif (Better speed for China)'
    --> Select ESP-IDF version --> 'v5.4.1 (release version)'
    --> Enter ESP-IDF container directory --> 选择你想要保存 esp-idf的目录
    --> Enter ESP-IDF Tools directory (IDF_TOOLS_PATH) --> 选择你想要保存idf tool的位置
    --> Select Python version --> 选择合适的python,一般需要 >=python-3.8
    --> Install

安装过程需要下载大概超过 2GiB 的数据,耐心等待安装完成后,我们就可以创建项目了。

以 hello world 示例为例,创建项目,执行如下:

Ctrl + P
    --> 输入'> ESP-IDF: Show Example Projects'
    --> get-started --> hello_world
    --> Select location for creating hello_world project --> 选择项目保存位置
    --> 进入项目后,vs code底部状态栏选择 (以下步骤均在底部状态栏查找按钮)
    --> Set Espressif Device Target (IDF_TARGET)
    --> 选择 'esp32c6' --> 选择 'ESP32-C6 chip (via ESP-PROG)'
    --> 选择 'ESP-IDF: Select Flash Methon' --> 选择 'UART'
    --> 选择 'Select Port to Use (COM, tty, usbserial)'
    --> 选择实际的端口(Windows上一般是COMx, Linux上一般是/dev/ttyACMx, /dev/ttyUSBx, MacOS上一般是/dev/cu.*usb*, /dev/tty.*usb*)
    --> 选择 'ESP-IDF: Build, Flash and Monitor'
    --> 之后,它将会编译,刷机和监控串口输出 (Ctrl + ']' 可以结束监控).

完成,如果选用此种方式,后续步骤无需再看。

2.2 方式3(Windows)

首先下载安装包,以esp-idf 5.4.1为例,可以参考如下链接:

如果想要下载最新的,请在搜索引擎搜索'esp idf getting started'或直接访问espressif官网.

分为在线和离线安装包,离线的安装简单,在线的可以安装较新版本,自行选择,下载完成后,直接双击安装即可。

安装完成后,会有两个命令行快捷方式,一个是cmd的,一个是powershell的,根据喜好自行选择,进行开发,开发常用命令:

$ idf.py set-target esp32c6
$ idf.py menuconfig
$ idf.py build
$ idf.py -p <PORT> flash
$ idf.py -p <PORT> erase-flash

其中<PORT>为具体的COM端口号,可以使用vs code编写代码,然后用这个命令行工具编译和刷机。

详细的命令行使用步骤可以参考下述的Linux部分。

3. Linux安装esp-idf

以下全部步骤为Linux平台安装,编译,测试esp-idf的示例。

$ sudo apt install build-essential flex bc gawk texinfo file libssl-dev libncurses-dev git wget gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

下载代码(改成实际版本,此处使用v5.4.1):

$ mkdir -p ~/esp
$ mkdir -p ~/esp/tools
$ cd ~/esp
$ git clone -b v5.4.1 --recursive https://github.com/espressif/esp-idf.git

或者,国内使用release包:

代码或Release包,可在github的相关项目主页查看。

4. 权限

后面步骤编译完刷机时,可能会遇到权限问题,无法刷机,我们把当前用户加入到dialout组或uucp组,这里我们以前者为例:

$ sudo usermod -a -G dialout $USER

重启或注销账户后重新登录生效。

5. 测试

安装环境:

$ export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
$ export IDF_TOOLS_PATH="$HOME/esp/tools"
$ cd ~/esp/esp-idf
# all,esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c5,esp32c6,...
$ ./install.sh esp32s3,esp32c6
$ . ./export.sh

其中‘IDF_GITHUB_ASSETS’为指定使用espressif的服务器,如果不指定,使用github的服务器,国内用户因网络问题,建议选择前者。

‘IDF_TOOLS_PATH’为指定的安装目录,如果不指定,则下载到$HOME目录。

上述命令中,同时安装了'eps32-s3'和'esp32-c6'的工具。

编译官方示例:

$ cp -rf $IDF_PATH/examples/get-started/blink .
$ cd ~/esp/blink
$ idf.py set-target esp32c6
$ idf.py menuconfig

需要注意menuconfig中的几个变量,默认值如下:

BLINK_GPIO=8
BLINK_LED_GPIO=n
BLINK_LED_STRIP=y

由于我购买的ESP32-C6-DevKit-1的板载LED的引脚是8,但控制这个LED的接口接了电阻(不接电阻板载LED有效,接电阻反之),无法使用板载LED,所以使用的是外置LED。

在实际使用中需要确定外接LED的引脚号,默认是pin 8,我们就接在pin 8上,如果接在别的pin上,就修改menuconfig中'BLINK_GPIO'的值.

我们把上述变量修改为:

BLINK_GPIO=8
BLINK_LED_GPIO=y
BLINK_LED_STRIP=n

然后编译:

$ idf.py build

刷机并监控串口输出:

$ idf.py -p <PORT> flash
$ idf.py -p <PORT> monitor

或者直接:

$ idf.py -p <PORT> flash monitor

注意,<PORT> 修改为真实驱动节点,比如我这个板子使用的是ch343,驱动节点是'/dev/ttyACM0',那么这条命令就是:

$ idf.py -p /dev/ttyACM0 flash monitor

如果仅更新app,而不更新固件,可以只刷app部分(首次请全刷):

$ idf.py app-build

擦除esp32:

# 擦除全部.
$ idf.py -p <PORT> erase-flash
# 擦除OTA.
$ idf.py -p <PORT> erase-otadata

6. 设置环境变量

在'$HOME/.bashrc'最下面添加如下内容:

export IDF_TOOLS_PATH="$HOME/esp/tools"
alias get_idf='. $HOME/esp/esp-idf/export.sh'

然后,执行:

$ cd ~
$ source .bashrc

后续重启计算机后,或者打开新的终端,直接执行:

$ get_idf

即可正常使用esp-idf了。

7. 模拟器

8. 建议

很多项目都支持跨平台了,不要去在乎在哪个平台编译速度快,应该去在乎,哪个平台编译出来的文件运行的速度快。

posted @ 2025-04-17 20:03  this毛豆  阅读(1643)  评论(0)    收藏  举报