小贴士
1. 项目目录统一为~/ESP/下,“~”代表用户文件夹。
2. 如果无特殊说明,$代表当前用户下执行的命令。
3. Windows下的串口号以映射到msys2中的为准。
4. 默认工程esp-idf路径为用户目录/ESP/esp-idf。
准备工作
1.一台PC,系统可以是Windows,macOS,Linux。
2. ESP32编译工具链。
3. 下载ESP-IDF工程。
4. 一个你喜欢的编辑器工具,例如ATOM,VSCODE,Eclipse。
5. 连接AIR的USB线到电脑。
安装串口驱动
串口是下载调试ESP32的不二之选,按照自己的操作系统下载驱动程序:
- Linux:系统自带
安装完后,检查是否正确识别串口:
macOS下:
$ ls /dev/cu.* /dev/cu.Bluetooth-Incoming-Port /dev/cu.SLAB_USBtoUART
Linux下:
$ ls /dev/ttyUSB* /dev/ttyUSB0
安装交叉编译工具链
交叉编译工具可以运行在三个系统平台上,但安装过程有些区别,下面我们区分系统来讲解。
macOS
终端中安装xcode command line tool
xcode-select --install
接下来按照引导步骤一步一步安装即可。
安装homebrew homebrew是mac上很好用的一款软件包管理工具 homebrew官网:https://brew.sh 安装方法:打开终端,将如下命令拷贝到终端后回车执行:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装编译依赖包 终端执行命令:
$ brew install gnu-sed gawk binutils gperftools gettext wget help2man libtool autoconf automaake git
安装python的串口扩展:
$ pip install pyserial
如果没有pip工具,可以使用如下方法安装:
localhost:ESP mango$ wget https://bootstrap.pypa.io/get-pip.py localhost:ESP mango$ sudo python get-pip.py localhost:ESP mango$ sudo pip install pyserial
下载安装编译工具链 假设我们要把工具链放到本用户目录的ESP文件夹下,创建文件夹:
$ mkdir ~/ESP $ cd ESP $ pwd /Users/mango/ESP
用wget命令下载工具链到此并解压:
$ wget https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz $ tar xzf xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz $ ls xtensa-esp32-elf xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz
添加环境变量,这一步就是告诉电脑在使用到esp的命令行时知道去~/ESP/xtensa-esp32-elf/bin中找。编辑~/.bash_profile,在末尾添加如下两行后保存:
export PATH=$PATH:$HOME/ESP/xtensa-esp32-elf/bin export IDF_PATH=$HOME/ESP/esp-idf
用source命令使生效:
$ source ~/.bash_profile
用gcc命令验证是否成功,提示如下算成功,否则会提示找不到此命令,这时你就要仔细看看是否哪里目录设置不对。
$ xtensa-esp32-elf-gcc -v Using built-in specs. ...... gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-61-gab8375a)
Linux
安装编译依赖包(不同的Linux发行版的包管理工具略有差异,这里拿ubuntu14.04 32bit举例): Ubuntu or Debian:
sudo apt-get update sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial
下载安装编译工具链 假设我们要把工具链放到本用户目录的ESP文件夹下,创建文件夹:
$ mkdir ~/ESP $ cd ESP $ pwd /home/mango/ESP
用wget命令下载工具链到此并解压:
for 64-bit Linux:
$ wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz $ tar xzf xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz
for 32-bit Linux:
$ wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz $ tar xzf xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz $ ls xtensa-esp32-elf xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz
添加环境变量,这一步就是告诉电脑在使用到esp的命令行时知道去~/ESP/xtensa-esp32-elf/bin中找。编辑~/.profile,在末尾添加如下两行后保存:
export PATH=$PATH:$HOME/ESP/xtensa-esp32-elf/bin export IDF_PATH=$HOME/ESP/esp-idf
用source命令使生效:
$ source ~/.profile
用gcc命令验证是否成功,提示如下算成功,否则会提示找不到此命令,这时你就要仔细看看是否哪里目录设置不对。
$ xtensa-esp32-elf-gcc -v Using built-in specs. ...... gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-61-gab8375a)
Windows
1. 安装兼容的GNU环境
Windows没有内置的“make”环境,所以你需要安装一个兼容GNU的环境,例如MSYS2。
下载地址:https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20170330.zip
下载完解压到C盘根目录,会得到一个msys32的文件夹:C:\msys32\
2. 进入命令行,运行C:\msys32\msys2.exe后,会看到命令行,输入看gcc是否工作正常
$ xtensa-esp32-elf-gcc -v Using built-in specs. ...... gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-61-gab8375a)
3. 创建项目目录
$ mkdir ~/ESP
4. 添加环境变量
打开C:\msys32\etc\profile.d\esp32_toolchain.sh编辑,多添加一行IDF_PATH后保存:
export IDF_PATH=$HOME/ESP/esp-idf
再次打开msys2.exe命令行,使用echo $IDF_PATH命令查看是否生效。
$ echo $IDF_PATH /home/mango/ESP/esp-idf
5. 安装python和pyserial 在msys2中执行以下命令更新源,执行完需要重启msys2窗口:
$ pacman --noconfirm -Syu
安装python:
$ pacman --noconfirm -S python2 tar
这里有个要注意的地方,就是默认安装完名字为python2.7,而我们想要的效果是命令行中敲python即可执行,所以进入/usr/bin/下copy一份名为python.exe即可:
$ cd /usr/bin $ cp python2.exe python.exe
下载pyserial:
$ wget https://github.com/pyserial/pyserial/releases/download/v3.2.1/pyserial-3.2.1.tar.gz $ tar xvf pyserial-3.2.1.tar.gz $ cd pyserial-3.2.1/ $ python setup.py install
查看映射到MSYS2下的串口:
$ ls /dev/ttyS* /dev/ttyS3
下载ESP-IDF工程代码
1. 使用git下载代码,视网络环境此步骤通常会占用1-10分钟:
$ cd ~/ESP $ git clone --recursive https://github.com/espressif/esp-idf.git
注意:如果忘了使用recursive参数,之前仅做过clone,需要进入esp-idf文件夹执行子模块更新:
$ cd ~/ESP/esp-idf $ git submodule update --init
工程代码保持与官方同步更新 因为官方开发非常活跃,几乎每天都有小幅度更新,习惯上保持最新代码的步骤是进入esp-idf文件夹依次执行如下命令:
$ cd ~/ESP/esp-idf $ git pull $ git submodule update
配置工程及串口
ESP-IDF中带了大量的例程,目录为“esp-idf/examples/”,进入具体的例程目录才可以配置工程,拿hello_world例程为例:
$ cd ~/ESP/esp-idf/examples/get-started/hello_world $ make menuconfig
menuconfig中的操作非常人性化:
- 使用上下方向键移动所选行。
- 使用回车键进入子目录。
- 使用‘?’查看某一项的帮助信息。
- 使用空格键决定某一项的选择、取消选择。
- 使用‘/’查找信息。
- 使用左右方向键切换底部的光标。
找到Serial flasher config > Default serial port,将串口设备路径填入,串口号填写:
- macOS:填写类似于:/dev/cu.SLAB_USBtoUART1
- Linux平台:填写类似于:/dev/ttyUSB0
- Windows平台填写的是映射进msys2的路径,例如/dev/ttyS3