一、设置开发环境

1、乐鑫开发文档

ESP-IDF编程指南——快速入门 stable(4.4)版本 我使用的开发板为ESP32-WROOM-32D

esp32 linux内核 esp32装linux_嵌入式硬件


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

esp32 linux内核 esp32装linux_嵌入式硬件_02


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

esp32 linux内核 esp32装linux_开发板_03


如果查看本地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 可一次性为所有支持的目标芯片安装工具。

esp32 linux内核 esp32装linux_esp32 linux内核_04

5、设置环境变量
刚刚安装的工具尚未添加至 PATH 环境变量,无法通过“命令窗口”使用这些工具。因此,必须设置一些环境变量,这可以通过 ESP-IDF 提供的另一个脚本完成。
请在需要运行 ESP-IDF 的终端窗口运行以下命令:

. $HOME/esp/esp-idf/export.sh

esp32 linux内核 esp32装linux_开发板_05

二、创建工程
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*

esp32 linux内核 esp32装linux_esp32 linux内核_06


esp32 linux内核 esp32装linux_串口_07


3、配置

开始创建工程中提到的 hello_world 目录,并运行工程配置工具 menuconfig

cd ~/esp/hello_world
idf.py set-target esp32
idf.py menuconfig

打开一个新项目后,应首先设置“目标”芯片 idf.py set-target esp32。注意,此操作将清除并初始化项目之前的编译和配置(如有)。 也可以直接将“目标”配置为环境变量(此时可跳过该步骤)

如果之前的步骤都正确,则会显示下面的菜单:

esp32 linux内核 esp32装linux_开发板_08


hello_world 示例项目会以默认配置运行,因此可以跳过使用 menuconfig 进行项目配置这一步骤。

4、编译工程

使用以下命令,编译烧录工程:

idf.py build

运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成 bootloader、分区表和应用程序三个二进制文件。

esp32 linux内核 esp32装linux_开发板_09


5、烧录到设备

使用以下命令,将刚刚生成的二进制文件 (bootloader.bin, partition-table.bin 和 hello_world.bin) 烧录至ESP32 开发板:

idf.py -p PORT [-b BAUD] flash

将 PORT 替换为 ESP32 开发板的串口名称;可以将 BAUD 替换为希望的烧录波特率。默认波特率为 460800。

我在烧录过程中出现了没有权限打开串口:

esp32 linux内核 esp32装linux_嵌入式硬件_10


在Linux中,对于非root用户默认没有串口设备的读写权限,解决方法如下:

sudo usermod -a -G dialout 用户名

esp32 linux内核 esp32装linux_开发板_11


andy为我的用户名,要改为自己的用户名,然后在重启虚拟机上述命令生效,解决问题。

继续烧录,idf.py -p /dev/ttyUSB0 flash,烧录时记得按下开发板上的boot键进入烧录模式,烧录成功

esp32 linux内核 esp32装linux_开发板_12


6、监视器

使用 idf.py -p PORT monitor 命令,监视 “hello_world” 工程的运行情况。可以看到程序启动打印helloworld:

esp32 linux内核 esp32装linux_开发板_13


可使用快捷键 Ctrl+],退出 IDF 监视器。

也可以运行以下命令,一次性执行构建、烧录和监视过程:

idf.py -p PORT flash monitor

esp32 linux内核 esp32装linux_单片机_14


-b 921600 是下载的波特率,会更快一些,默认是460800。

至此,已搭建好ESP32的软件开发环境,完成入门的学习。