一、安装编译 ESP-IDF 需要的软件包和编译链:
sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev
注:使用 ESP-IDF 需要 CMake 3.5 或以上版本。较早版本的 Linux 可能需要升级才能向后移植仓库,或安装 “cmake3” 软件包,而不是安装 “cmake”。
1、下载交叉编译链
2、以下命令可以查询linux是32位还是64位
getconf LONG_BIT
3、解压下载的xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz
sudo tar -xvzf xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz
4、更改xtensa-esp32-elf 权限
chmod -R 777 xtensa-esp32-elf
5、添加环境变量
sudo vi /etc/profile
6、编辑/etc/profile,在最后一行添加环境变量路径
export PATH=~/esp/tools/xtensa-esp32-elf/bin
7、使新的环境变量立即生效
source /etc/profile
8、查看gcc版本信息
xtensa-esp32-elf-gcc -v
如果有gcc版本信息,即为添加成功,否则为失败。
9、在用户配置文件中添加 IDF_PATH 和 idf.py PATH (CMake)
使用基于 CMake 的构建系统和 idf.py 工具,用户需修改两处系统环境变量:
-
IDF_PATH
需设置为含有 ESP-IDF 目录的路径 - 系统
PATH
变量需包括含有idf.py
工具 (属于 ESP-IDF 一部分)的目录
export IDF_PATH=~/esp/esp-idf
export PATH="$IDF_PATH/tools:$PATH"
如图所示:
10、运行以下命令来检查 IDF_PATH
设置是否正确:
printenv IDF_PATH
11、确认 idf.py
目前是否在 PATH
中,可以运行以下命令:
which idf.py
这里应打印出类似 ${IDF_PATH}/tools/idf.py
的路径
二、获取 ESP-IDF
将ESP-IDF 将下载至~/esp/esp-idf
。
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
三、安装与设置工具
本步骤中介绍的脚本将 ESP-IDF 所需的编译工具默认安装在用户根文件夹中。
chmod -R 777 ~/esp/esp-idf
cd ~/esp/esp-idf
./install.sh
四、设置环境变量
刚刚安装的工具尚未添加至 PATH 环境变量,无法通过“命令窗口”使用这些工具。因此,必须设置一些环境变量,这可以通过 ESP-IDF 提供的另一个脚本(export.sh)完成。
. $HOME/esp/esp-idf/export.sh
五、开始创建工程
直接复制ESP-IDF 中 examples 目录下的 get-started/hello_world 工程到当前文件夹。
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
注:ESP-IDF 编译系统不支持带有空格的路径。
六、连接设备
- 将 ESP32 开发板连接到 PC,并查看开发板使用的串口。
- 查看 ESP32 开发板(或外部转串口适配器)的串口设备名称,运行两次以下命令。
- 首先,断开开发板或适配器,第一次运行命令;然后,连接开发板或适配器,第二次运行命令。其中,第二次运行命令后出现的端口即是 ESP32 对应的串口:
ls /dev/tty*
如图所示:
七、确认串口连接
1、安装串口工具putty
sudo apt install putty
2、在终端启动putty
putty
3、弹出界面如图所示:点击"OPEN"
4、可能出现的问题:Unable to open serial port /dev/ttyUSB0
原因:权限不够
解决:通过增加udev规则来实现。
1、创建以下文件
vi /etc/udev/rules.d/70-ttyusb.rules
2、编辑增加以下文字,保存。
KERNEL=="ttyUSB[0-9]*", MODE="0666"
3、重新插入USB转串口设备,普通用户就有权限访问了。
八、配置
ESP32执行make menuconfig报错The following Python requirements are not satisfied:问题解决
进入hello_world
工程目录使用"make menuconfig"命令进入配置工具 menuconfig。
make menuconfig
进入以下界面:
选择“Serial flasher config”进入,进入如下界面,可以看到默认USB0,可以根据自己需要修改。
九、编译烧录
执行make命令,第一次执行make命令默认会进入configuration界面。
make
本次编译总共生成了3个文件,分别为:
位于build/bootloader目录下的bootloader.bin
位于build目录下的partitions_singleapp.bin
位于build目录下的hello-world.bin