一、设置开发环境
1、乐鑫开发文档
ESP-IDF编程指南——快速入门 stable(4.4)版本
我使用的开发板为ESP32-WROOM-32D
2、安装准备(Linux、Ubuntu)
(先安装好虚拟机、Ubuntu和Git,然后可以进行如下操作)
Linux 平台工具链的标准设置:
编译 ESP-IDF 需要以下软件包,在ubuntu下使用如下命令安装工具(下载教慢可能要多试几次)
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
3、获取ESP-IDF
在围绕 ESP32 构建应用程序之前,先获取乐鑫提供的软件库文件 ESP-IDF 仓库(由于放在GitHub上下载极慢,建议开VPN,可能也要操作好多次,IDF组件可能下载不全)
Linux下打开终端,后运行以下命令:
mkdir -p ~/esp
cd ~/esp
git clone -b v4.4 --recursive https://github.com/espressif/esp-idf.git
如果查看本地IDF版本使用命令(在设置好环境变量之后才能使用):
idf.py --version
如果IDF组件模组没有下载全可以进入esp-idf文件夹用一下下面的命令:
git submodule update --init --recursive
4、设置工具
除了 ESP-IDF 本身,还需要安装 ESP-IDF 使用的各种工具,比如编译器、调试器、Python 包等
cd ~/esp/esp-idf
./install.sh esp32
通过一次性指定多个目标,可为多个目标芯片同时安装工具,如运行 ./install.sh esp32,esp32c3,esp32s3。 通过运行 ./install.sh 或 ./install.sh all 可一次性为所有支持的目标芯片安装工具。
5、设置环境变量
刚刚安装的工具尚未添加至 PATH 环境变量,无法通过“命令窗口”使用这些工具。因此,必须设置一些环境变量,这可以通过 ESP-IDF 提供的另一个脚本完成。
请在需要运行 ESP-IDF 的终端窗口运行以下命令:
. $HOME/esp/esp-idf/export.sh
二、创建工程
1、开始创建工程
现在可以开始准备开发 ESP32 应用程序了。从 ESP-IDF 中 examples 目录下的 get-started/hello_world 工程开始。
将 get-started/hello_world 工程复制至本地的 ~/esp 目录下:
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
2、连接设备查看端口
查看 ESP32 开发板(或外部转串口适配器)的串口设备名称,请将以下命令运行两次。首先,断开开发板或适配器,首次运行以下命令;然后,连接开发板或适配器,再次运行以下命令。其中,第二次运行命令后出现的端口即是 ESP32 对应的串口:
ls /dev/tty*
3、配置
开始创建工程中提到的 hello_world 目录,并运行工程配置工具 menuconfig
cd ~/esp/hello_world
idf.py set-target esp32
idf.py menuconfig
打开一个新项目后,应首先设置“目标”芯片 idf.py set-target esp32。注意,此操作将清除并初始化项目之前的编译和配置(如有)。 也可以直接将“目标”配置为环境变量(此时可跳过该步骤)
如果之前的步骤都正确,则会显示下面的菜单:
hello_world 示例项目会以默认配置运行,因此可以跳过使用 menuconfig 进行项目配置这一步骤。
4、编译工程
使用以下命令,编译烧录工程:
idf.py build
运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成 bootloader、分区表和应用程序三个二进制文件。
5、烧录到设备
使用以下命令,将刚刚生成的二进制文件 (bootloader.bin, partition-table.bin 和 hello_world.bin) 烧录至ESP32 开发板:
idf.py -p PORT [-b BAUD] flash
将 PORT 替换为 ESP32 开发板的串口名称;可以将 BAUD 替换为希望的烧录波特率。默认波特率为 460800。
我在烧录过程中出现了没有权限打开串口:
在Linux中,对于非root用户默认没有串口设备的读写权限,解决方法如下:
sudo usermod -a -G dialout 用户名
andy为我的用户名,要改为自己的用户名,然后在重启虚拟机上述命令生效,解决问题。
继续烧录,idf.py -p /dev/ttyUSB0 flash,烧录时记得按下开发板上的boot键进入烧录模式,烧录成功
6、监视器
使用 idf.py -p PORT monitor 命令,监视 “hello_world” 工程的运行情况。可以看到程序启动打印helloworld:
可使用快捷键 Ctrl+],退出 IDF 监视器。
也可以运行以下命令,一次性执行构建、烧录和监视过程:
idf.py -p PORT flash monitor
-b 921600 是下载的波特率,会更快一些,默认是460800。
至此,已搭建好ESP32的软件开发环境,完成入门的学习。