搭建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,且有多种方式部署开发环境:
- 安装VS Code插件方式;
- 安装Eclipse插件方式;
- 安装命令行方式;
本文会简单介绍第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为例,可以参考如下链接:
- [idf 4.4安装包](https://dl.espressif.com/dl/esp-idf/?idf=4.4)
- [快速入门](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.4.1/esp32c6/get-started/index.html)
- [Windows安装步骤](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.4.1/esp32c6/get-started/windows-setup.html)
如果想要下载最新的,请在搜索引擎搜索'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包:
- [esp-idf](https://dl.espressif.com/github_assets/espressif/esp-idf/releases/download/v5.4.1/esp-idf-v5.4.1.zip)
代码或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. 建议
很多项目都支持跨平台了,不要去在乎在哪个平台编译速度快,应该去在乎,哪个平台编译出来的文件运行的速度快。

浙公网安备 33010602011771号