ESP32 SDK的配置

本文将直接摘抄和引用ESPRESSIF官网文档对ESP32 SDK配置的描述,并对具体执行步骤加一些自己的备注和注意事项。

本文中以Ubuntu为Linux系统的代表,在所有安装步骤apt-get install及涉及到其他读写cpmkdirrm的操作中,如遇到Permission denied等权限不够的问题,请在命令开头添加sudo或直接另起一行输入sudo -s,然后输入密码(有些命令不需要输入密码)获取 root 权限。

Eclipse的使用可以在三大平台上进行,但是用.bin文件烧录到开发板的过程目前仅在Windows平台找得到烧录工具,望悉知。

为方便描述,本文定义终端为MSYS2及Terminal的统称,XXXXX为你电脑的用户名,*为你的端口号数字。

本文分为三部分: - 工具及SDK的下载及配置 - 使用终端运行工程 - 使用Eclipse运行工程

一、工具及SDK的下载及配置

本节共有五部分: - 工具(MSYS2和Git) - ESP-IDF - Xtensa - 环境变量设置 - python依赖包

1. 工具

此部分在官方文档里面称为“设置工具链”。

1.1 MSYS2(for Windows only)

跟Git Bash Shell同理,直接从MSYS2官网下载和安装到C盘根目录C:/下即可。或者直接下载ESPRESSIF提供的.zip文件,解压到C:/

能不能放到其他盘,暂时没有试验过,对于使用MSYS2的开发者而言,最好是到C:\msys32\mingw32.exe文件属性中设置好管理员权限。

本下载仅用于windows平台,对于Mac及Linux平台而言,可以直接调用Terminal进行后续步骤。

1.2 Git(for Mac & Linux)

此步骤要在Terminal中进行,便于将ESPRESSIF保存在Github的ESP-IDF下载到本地。

运行以下命令安装(Debian/Ubuntu):

1
apt-get install git
以及(Mac):Git下载

ESP-IDF 是ESP32设备的SDK,另外,MSYS2自带Git工具。如果已经安装过Git工具了,可以使用gitgit version语句进行查看。

2. ESP-IDF

在创建文件夹esp的过程中,确保自己没有使用到root权限来创建文件夹,查看的方法是打开Files应用,看看esp文件夹上面是否有个锁的图表。因为后续添加的环境变量局限于 XXXXX 用户,而执行文件因为在创建的过程中就属于 root 用户了,就不能够识别个人用户创建的环境变量IDF_PATH。为ESP-IDF的获取创建好文件夹,运行以下命令:

1
2
3
cd ~/
mkdir -p esp
cd esp
如果使用了 root 权限来创建esp文件夹,请使用命令rm -d -f ~/esp来删除 空的esp文件夹 或 使用命令rm -r -f ~/esp非空的esp文件夹。然后重启终端,使用普通用户权限再次创建。

msys2-terminal-window 然后运行下面语句,ESP-IDF 将会被下载到 ~/esp/esp-idf 目录下。

1
git clone --recursive https://github.com/espressif/esp-idf.git

注意: 上面克隆仓库的语句中有个 --recursive 选项。如果你克隆 ESP-IDF 时 没有带这个选项 ,你还需要运行额外的命令(如下)来获取子模块:

1
2
cd esp-idf
git submodule update --init

3. Xtensa(for MAC & Linux only)

Windows平台因为使用MSYS2的原因,自带了Xtensa,因此可以忽略此步骤。

Linux平台 Xtensa-Linux-64bit下载解压。 执行如下命令:

1
2
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz

MAC平台 Xtensa-MAC

1
2
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz

4. 环境变量设置

Windows平台: 寻找到路径C:/msys32/etc/profile.d/,然后使用记事本或其他文本工具新建一个名为export_idf_path.sh的文件,然后将你的esp-idf路径写入文件中,如:

1
export IDF_PATH="C:/msys32/home/XXXXX/esp/esp-idf"

安装vim工具或使用其他文本工具,打开~/.profile文件。使用vim工具的话,单击i健进行插入,鼠标点击粘贴以下代码后,按ESC键,然后输入:w进行保存,再次输入:q推出vim工具,ubuntu平台的vim工具安装命令:

1
apt-get install vim

Linux平台

1
2
export PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH"
export IDF_PATH=~/esp/esp-idf

MAC平台

1
2
export PATH=$HOME/esp/xtensa-esp32-elf/bin:$PATH
export IDF_PATH=~/esp/esp-idf

完成修改后重启终端,并在终端中输入以下命令可以查看是否设置成功,如果不成功或者后续步骤中出现No such file or directory的错误提示,请尝试重启系统。

1
2
printenv IDF_PATH
printenv PATH

Environment_Setting_PATH

5. python依赖包安装

直接输入以下命令,安装依赖于Python的软件包:

1
python -m pip install --user -r $IDF_PATH/requirements.txt

注意 在终端输入python可查看版本,如果你的电脑安装的是不同版本的Python,则调用不同的语句进行安装,如python2 python2.7Tools_Downloads_Python

1
python2.7 -m pip install --user -r $IDF_PATH/requirements.txt

如果在此步骤出现/usr/bin/python2.7: No module named pip的问题,则输入以下命令进行pip module安装:

1
apt-get install python-pip

二、使用终端运行工程

本节共有四部分: - 工程样例复制 - 开发板连接 - 工程参数设置 - 命令行烧录

1. 工程样例复制

C:/msys32/home/XXXXX/esp/esp-idf/examples/下面会有很多ESP-IDF自带的工程样例,按照用途分类。本节将使用/get-started/hello_world作为示范。

拷贝样例:

1
2
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .

要注意的是,拷贝样例的语句中,那个点.必不可少,且和前面的路径中有个空格

2. 开发板连接

将 ESP32 开发板连接到 PC,然后检查串口号,看看它能否正常通信。 ### 2.1 驱动 以下是乐鑫 ESP32 开发板驱动程序的链接:

ESP32-PICO-KIT 和 ESP32-DevKitC - CP210x USB to UART Bridge VCP Drivers ESP32-WROVER-KIT 和 ESP32 Demo Board - FTDI Virtual COM Port Drivers

装完驱动之后,Windows平台的设备管理器中是如下显示的: esp32-devkitc-in-device-manager1

2.2 端口号

Windows平台:设备管理器中查看端口并记录下其设备尾部标注的端口号COM*esp32-devkitc-in-device-manager1

Linux和Mac的平台: 在终端里面,分别运行查看端口命令两次,一次是在插入开发板前,一次是在插入开发板后。 Linux:

1
ls /dev/tty*
Mac:
1
ls /dev/cu.*
另外,Linux平台还需要为登录用户添加串口读写权限:
1
sudo usermod -a -G dialout $XXXXX

Putty工具 下载和使用Putty工具对开发板进行串口连接确认。

运行终端,设置串口:波特率 = 115200,数据位 = 8,停止位 = 1,奇偶校验 = N。

以下是设置串口和在 Windows 和 Linux 上传输参数(如 115200-8-1-N)的一些截屏示例。注意选择上述步骤中确认的串口进行设置。

putty-settings-windows1 putty-settings-linux1

3. 工程参数设置

在终端窗口中,输入cd ~/esp/hello_world进入hello_world所在目录,然后启动工程配置工具:

1
make menuconfig
project-configuration1

在菜单中,进入Serial flasher config>Default serial port输入之前记录下来的串口号(/dev/tty*/dev/cu.*/COM*),工程会加载到该串口上。输入回车确认选择,选择< Save >保存配置,然后选择< Exit >退出应用程序。

以下是menuconfig的使用小技巧: 1. 使用 up & down 组合键在菜单中上下移动 2. 使用 Enter 键进入一个子菜单,Escape 键退出子菜单或退出整个菜单 3. 输入 ? 查看帮助信息,Enter 键退出帮助屏幕 4. 使用空格键或 YN 键来使能 (Yes) 和禁止 (No) 带有复选框 “[*]” 的配置项 5. 当光标在某个配置项上面高亮时,输入 ? 可以直接查看该项的帮助信息 6. 输入 / 搜索配置项

注意 如果再此步骤出现<command-line>:0:12: fatal error: curses.h: No such file or directory的错误提示,则

4. 命令行烧录

4.1 烧录

这条命令会编译应用程序和所有的 ESP-IDF 组件,生成 bootloader、分区表和应用程序 bin 文件,并将这些 bin 文件烧写到 ESP32 板子上。

1
make flash
烧写成功的话,板子将会复位,应用程序 “hello_world” 开始启动,在终端显示如下:
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
esptool.py v2.0-beta2
Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000)...
esptool.py v2.0-beta2
Connecting........___
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Attaching SPI flash...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0220
Compressed 11616 bytes to 6695...
Wrote 11616 bytes (6695 compressed) at 0x00001000 in 0.1 seconds (effective 920.5 kbit/s)...
Hash of data verified.
Compressed 408096 bytes to 171625...
Wrote 408096 bytes (171625 compressed) at 0x00010000 in 3.9 seconds (effective 847.3 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 82...
Wrote 3072 bytes (82 compressed) at 0x00008000 in 0.0 seconds (effective 8297.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting...

4.2 端口监控

如果要查看 “hello_world” 程序是否真的在运行,输入命令 make monitor。这个命令会启动 IDF Monitor 程序(ESP-IDF自带工具),也可以使用其他串口助手进行查看。

1
make monitor
串口启动时,在终端显示如下:
1
2
3
4
5
6
7
8
9
$ make monitor
MONITOR
--- idf_monitor on /dev/ttyUSB0 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun 8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun 8 2016 00:22:57
...
开发板输出到串口的信息,在终端显示如下:
1
2
3
4
5
6
7
...
Hello world!
Restarting in 10 seconds...
I (211) cpu_start: Starting scheduler on APP CPU.
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...

三、 使用Eclipse运行工程

本节共有四部分: - JRE & Eclipse - Eclipse项目运行 - Build Project - Flash tools烧录

1. JRE & Eclipse

1.1 JRE安装

JRE(Java Runtime Environment)要在Eclipse之前安装,并在终端使用如下命令验证是否安装成功并查看版本:

1
java -version

1.2 Eclipse安装

Eclipse IDE 是一个可视化的集成开发环境,可用于编写、编译和调试 ESP-IDF 项目。

下载相应的Eclipse并安装到电脑:eclipse.org,在安装的过程中记得要选择Eclipse for C/C++ Development(有的版本也可能显示为 CDT)。

2. Eclipse项目运行

2.1 导入工程样例

  1. 运行 Eclipse,选择 File -> Import…

  2. 弹出的对话框中选择 C/C++ -> Existing Code as Makefile Project,然后点击 Next

  3. 在下个界面中 Existing Code Location 位置输入您的 IDF 项目的路径(如:C:/msys32/home/XXXXX/esp/hello_world)。 注意:这里应输入 ESP-IDF 项目的路径,而非 ESP-IDF 本身的路径。

  4. 在本界面,找到 Toolchain for Indexer Settings,选择 Cross GCC,最后点击 Finish

2.2 设置工程项目属性

Eclipse_Project_Properties

在本小节中,会 添加或修改三个主要的环境变量BTACH_BUILDIDF_PATHPATH。这些变量可以只在 项目属性 中修改,也可以直接到 系统环境变量 中修改。(添加到系统环境变量中的方法本文无讲解)

Eclipse_Project_Properties_Environment_Value
  1. 新项目将出现在Eclipse左侧的 Project Explorer 选项卡中。选择导入的项目,在右键菜单中选择 Properties

  2. 点击 C/C++ Build 下的 Environment 属性页,点击 Add… 按钮,输入 BATCH_BUILD1

  3. 点击 Add…,输入 IDF_PATH 中输入 ESP-IDF 所在的完整安装路径 C:/msys32/home/XXXXX/esp/esp-idf 。Linux及MAC平台的安装路径 /home/XXXXX/esp/esp-idf .

  4. 选择 PATH 环境变量,不要改变默认值。

Windows 用户:C:\msys32\mingw32\bin;C:\msys32\opt\xtensa-esp32-elf\bin;C:\msys32\usr\bi 添加到 PATH 环境变量的靠前位置(如果您将 msys32 安装到了其它目录,则需要更改对应的路径以匹配您的本地环境)。

  1. 在 macOS 平台上,增加一个 PYTHONPATH 环境变量,并将其设置为 /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages, 保证系统中预先安装的 Python (需安装 pyserial 模块)可以覆盖 Eclipse 内置的任何 Python。
Eclipse_Project_Properties_Preprocessor_Include
  1. 前往 C/C++ General -> Preprocessor Include Paths 属性页面,点击 Providers 选项卡:

选择 CDT Cross GCC Built-in Compiler Settings,将 Command to get compiler specs 修改为 xtensa-esp32-elf-gcc ${FLAGS} -std=c++11 -E -P -v -dD "${INPUTS}"

选择 “CDT GCC Build Output Parser,将 Compiler command pattern 修改为 xtensa-esp32-elf-(gcc|g\+\+|c\+\+|cc|cpp|clang)

Eclipse_Project_Properties_Indexer
  1. 前往 C/C++ General -> Indexer 属性页面,选择 Enable project specific settings 以启用本页上的其他设置。然后去除 Allow heuristic resolution of includes 勾选,因为启用此选项时,Eclipse 有时无法找到正确的头文件目录。
Eclipse_Project_Properties_Build_Behavior
  1. 点击 C/C++ Build -> Behavior 属性页,选中 Enable parallel build 以启用多任务并行构建。

  2. 保存项目属性并退出属性设置界面。

3. Build Project

选择菜单栏中的 Project -> Build Project。在此步骤中,将会调用ESP-IDF生成三个文件:bootloader.binpartition_singleapp.binhello_world.bin。分别对应的是启动程序、分区程序和应用主程序。

成功构建工程项目之后,Eclipse下方的 Console 选项卡将会显示如下: build_successfully

4. Flash tools烧录

Flash tools(仅在ESPRESSIF官网上找到Windows版本)下载并解压到相应位置,打开后进行如下配置。 正确配置后便可成功烧录,要注意的是,bootloader.bin对应放在地址0x1000的位置,partition_singleapp.bin对应放在地址0x8000的位置,helloworld.bin对应放在地址0x10000的位置。 flash_download

参考链接

  1. ubuntu下文件拷贝命令cp命令
  2. ubuntu rm命令
  3. mkdir命令