搭建 ESP32 开发环境 —— Hello World
阅读原文时间:2021年04月20日阅读:1

这里以 Ubuntu 为例,其它系统请参考中文文档:

  • file:///home/work/esp/esp-idf-doc-zh/docs/_build/html/get-started/linux-setup.html

【安装依赖包】

整个 ESP-IDF 环境需要用到很多软件,例如 git make``python等,因此我们需要先将这些软件预装好。

sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial

虽然需要用到这么多软件,但是只需要这样一条简单的命令,系统自动就会帮我们装好,多方便啊,这就是 Linux 对我的魅力之所在(PS:本人长期使用 Ubuntu 作为自己的工作、生活、娱乐的操作系统)。想一想,如果 windows 需要安装这么多软件,是不是烦都烦死了。

【安装工具链】

64 位操系统和 32 位操作系统所使用的工具链不相同,所以请根据你自己对系统选择对应的方法。

【64 位系统】

乐鑫是默认将工具链安装在 ~/esp/ 目录的,我们也将工具链安装到这里吧。

先创建并进入该目录:

mkdir -p ~/esp
cd ~/esp 

使用 wget 命令下载 64 位的工具链:

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
### 强迫症,解压后把工具链的压缩包删掉 ###
rm xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz

解压后的工具链位于路径~/esp/xtensa-esp32-elf下面。该目录下面的bin目录就是我们用来编译 ESP-IDF 工程所需的可执行程序。如果要使系统直接能够这些程序,需要将这个bin文件夹路径添加到系统的环境变量PATH中去。这里直接使用echo命令将其添加到脚本文件~/.bashrc中(系统每次启动刚时都会执行这个脚本)。

echo "export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin" >> ~/.bashrc

第一次添加后需要对该脚本执行source ~/.bashrc操作,让该脚本立即生效。今后重启系统后不需要再执行该操作。

【32 位系统】

乐鑫是默认将工具链安装在 ~/esp/ 目录的,我们也将工具链安装到这里吧。

先创建并进入该目录:

mkdir -p ~/esp
cd ~/esp 

使用 wget 命令下载 32 位的工具链:

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
### 强迫症,解压后把工具链的压缩包删掉 ###
rm xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz

解压后的工具链位于路径~/esp/xtensa-esp32-elf下面。该目录下面的bin目录就是我们用来编译 ESP-IDF 工程所需的可执行程序。如果要使系统直接能够这些程序,需要将这个bin文件夹路径添加到系统的环境变量PATH中去。这里直接使用echo命令将其添加到脚本文件~/.bashrc中(系统每次启动刚时都会执行这个脚本)。

echo "export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin" >> ~/.bashrc

第一次添加后需要对该脚本执行source ~/.bashrc操作,让该脚本立即生效。今后重启系统后不需要再执行该操作。

【下载ESP-IDF(即SDK)】

ESP-IDF 的全称是 Espressif IoT Development Framework(乐鑫 IoT 开发框架),即我们通常所说的 SDK,它里面提供了丰富的可供我们调用的库和API。

我们直接使用 git 进行 clone:

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

注意 clone 后面的参数--recursive,它表示递归克隆该仓库的子仓库,这是一种在开源界非常流行的做法,可以方便地对多个仓库进行控制。如果你是‘老鸟’,在 clone 时没看到这个参数(说明你还只是半老鸟,^_^),也可以使用下面的命令来手动更新该仓库的子模块:

git submodule update --init

ESP-IDF 下载完成后,我们还需要导出环境变量IDF_PATH —— 我们今后在编译自己的工程代码时会使用这个变量来查找 ESP-IDF 所在路径。同样使用echo命令将其追加到脚本文件~/.bashrc的默认(完成后不要忘记执行source ~/.bashrc命令哦)。

echo "export IDF_PATH=~/esp/esp-idf" >> ~/.bashrc

另外,多花几分钟看看 ESP-IDF 目录下的各文件都是干嘛的吧

【编译 Hello world】

ESP-IDF 为我们提供了丰富的 demo 程序,位于路径examples下面。我们这里先试试经典款hello world。进入 hello world 所在目录,然后编译:

cd examples/get-started/hello_world/
make

如果是第一次执行make命令,系统会弹出一个图形配置界面,如下图所示。

我们可以通过键盘上的tab键在下面的菜单中进行跳转。当光标跳转到<Exit>菜单后,按下回车键,退出配置菜单,然后系统会自动编译 ESP-IDF 目录下的各个组件以及 hello world 目录下的源码。

编译完成后,我们可以在 hello wolrd 工程所在目录下生成一个 build 文件,用于存放编译过程中生成的临时文件以及最终可以直接烧写到开发板的.bin 文件。此外,系统还会直接在 hello world 工程所在目录生成一个配置文件 sdkconfig,它存放了我们在配置界面所配置的各种值(我们这里没有修改,所以是默认值)。

【烧写程序】

然后用 USB 将开发板与 PC 连接在一起,系统会识别到设备/dev/ttyUSB0

如果你用的是虚拟机,需要在虚拟机上面将该设备从 win 移动到虚拟机中。

我们先修改该设备的权限,然后烧写并监视串口输出:

sudo chmod 777 /det/ttyUSB0
make flash monitor

当然,你也可以根据自己的喜好使用选择串口工具,例如 minicom 等。

然后就看到系统启动消息了,大功告成!!!