ESP32开发教程(0)— 搭建开发环境(Ubuntu图文版)

简介: ESP32开发教程(0)— 搭建开发环境(Ubuntu图文版)

前言

       最近虚拟机越用越卡,硬盘占用空间越来越大,整理了磁盘碎片也于事无补。那就重新搭建一遍环境,记录一下,以供交流学习。本文基于 Ubuntu 20.04 和 ESP-IDF 5.1,搭建 ESP32 最新代码的编译环境。

1 安装准备

(1) 编译 ESP-IDF 需要以下软件包支持,输入指令进行安装;

sudo apt-get install git wget flex bison gperf python3 python3-venv python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

cc609dda42fe46539ab616a270909c70.png

(2) 输入 Y/y,继续安装,直到所有软件包安装完成。

以上软件包安装成功以后,我们还需要确定两个软件包的版本是否满足 ESP-IDF 的需求。

1.1 Python版本

目前,ESP-IDF 4.3 以上的版本都是基于 python3 进行构建。所以我们需要检查一下 python3 有没有安装成功。输入指令查看:

python3 --version

671b423fb1e745de9125bd0f06bbf552.png

当输出 Python 3.8.10 时,python3 软件包安装成功。如果输出 Python 2.x.x,那么需要重新输入命令安装 python3,或者去 python 官网下载软件包手动安装。

1.2 Cmake版本

使用 ESP-IDF (5.1) 需要 CMake 3.16 或以上版本,输入指令查看:

cmake --version

f17f53d0f0fe4358b66cc31b1b169d84.png

当输出 cmake version 3.16.3 (高于 3.16)时,camke 软件包安装成功。

2 获取 ESP-IDF

在围绕 ESP32 构建应用程序之前,需要先获取乐鑫提供的软件库文件 ESP-IDF 仓库

获取 ESP-IDF 的本地副本:打开终端,切换到要保存 ESP-IDF 的工作目录,使用 git clone 命令克隆远程仓库。

(1) 打开终端,输入以下命令:

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

ac0d13427baf4dc18713b4a3ffc21cee.png

ESP-IDF 将下载至 ~/esp/esp-idf。

(2) clone 完成后,输入命令查看当前分支状态;

git status

f604e341336f4d8eaf7385215f55ad0c.png

当提示:nothing to commit,working tree clean,表示代码 clone 成功。

如果有同学代码 clone 失败,由于占用过多篇幅,这里不做介绍,感兴趣的可以参考:

git submodule update --init --recursive失败的处理办法

3 设置工具

除了 ESP-IDF 本身,还需要为支持 ESP32 的项目安装 ESP-IDF 使用的各种工具,比如编译器、调试器、Python 包等。


(1) ESP32 官方为我们提供了安装脚本 install.sh,输入以下指令安装:

1. cd ~/esp/esp-idf
2. export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
3. ./install.sh esp32


5088b545c062460d92d594f39568fac5.png

(2) 上述命令仅仅为 ESP32 安装所需工具。如果需要为多个目标芯片开发项目,则可以一次性指定多个目标,如下所示

cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh esp32,esp32s2

(3) 如果需要一次性为所有支持的目标芯片安装工具,可以运行如下命令:

1. cd ~/esp/esp-idf
2. export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
3. ./install.sh all

(4) 当提示:All done! You can now run: . ./export.sh,表示工具安装成功。



a3a1f3e0c57e415bb4cc2b44a7b221af.png

(目前,作者开发的硬件平台仅限于 esp32,所以这里指定目标芯片为 esp32)

ESP-IDF 工具安装器会下载 Github 发布版本中附带的一些工具,如果访问 Github 较为缓慢,可以设置一个环境变量,从而优先选择 Espressif 的下载服务器进行 Github 资源下载。

(上述我们已经使用了:export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets")

(5) 上述所有工具安装在用户根目录下的 .espressif 隐藏文件夹中。在用户根目录下,我们使用快捷键 CTRL+H 显示所有隐藏文件和文件夹,进入文件夹,如下所示:


02d0570f9983413785a41846bac51d05.png

4 设置环境变量

此时,刚刚安装的工具尚未添加至 PATH 环境变量,无法通过“命令窗口”使用这些工具。因此,必须设置一些环境变量。这可以通过 ESP-IDF 提供的另一个脚本进行设置。

4.1 官方命令

(1) 在需要运行 ESP-IDF 的终端窗口运行以下命令:

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

db654363539f4487bac6018c99d8e036.png

当提示:Go to the project directory and run: idf.py build,表示环境设置有效。

4.2 别名设置

这样比较麻烦,每次获取 esp-idf 环境,都需要输入一大段命令。我们可以为执行 export.sh 创建一个别名,具体步骤如下:

(1) 使用 gedit 打开 .bashrc 配置文件;

sudo gedit ~/.bashrc

2ea7c2f5f8a24f3589b0376c7187bfc4.png

粘贴完成后,使用 CTRL+S 快捷键保存内容,然后点击右上角“x”,关闭 .bashrc 文档。

(3) 输入指令,刷新配置环境并重启;

1. source ~/.bashrc
2. reboot

66e1e55013de43c284e2ace7fbe02602.png

(4) 重启后,输入指令,查看环境配置;

get_idf

bdcba89f2fbb40cb9e466974b3f6518b.png

这样我们可以在任何终端窗口中运行 get_idf 来设置或刷新 esp-idf 环境。

5 开始创建工程

我们可以从 ESP-IDF 中 examples 目录下的 get-started/hello_world 工程开始。

输入以下指令,将 get-started/hello_world 工程复制至本地的 ~/esp 目录下:

1. cd ~/esp
2. cp -r $IDF_PATH/examples/get-started/hello_world .


1d1ff6519e9b4197a4fda4f49d4216ed.png

6 连接设备

(1) 输入命令,查看系统默认 USB 设备名;

sudo ls /dev/tty*

(2) 将 ESP32 开发板连接到 PC(虚拟机中),输入指令查看开发板使用的串口;

cc56107600bd4d92826b3f1efa81bdd6.png一般设备名称的最后一个,就是 ESP32 开发板在虚拟机上映射的串口名称(如 ttyUSB0 或者 ttyACM0)。记住该串口名,后续烧录和监控中需要使用。

7 配置工程

进入 hello_world 目录,设置 ESP32 为目标芯片,然后运行工程配置工具 menuconfig。

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

aeb756879de547b991f87627a42de760.png

当提示:Configuring done...,表示目标芯片设置成功。

可以使用 menuconfig 设置项目的具体变量,包括 Wi-Fi 网络名称、密码和处理器速度等。

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

8 编译工程

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

idf.py build

9aa09e5b496d4cb99662b2d366150426.png运行以上指令可以编译应用程序和所有 ESP-IDF 组件,接着生成引导加载程序(bootloader.bin)、分区表(partition-table.bin)和应用程序二进制文件(xxxx.bin)。

如果一切正常,编译完成后将生成 .bin 文件。

9 烧录到设备

(1) 运行以下指令,将刚刚生成的二进制文件烧录至 ESP32 开发板:

idf.py -p /dev/ttyUSB0 flash

99e737b8573a48cf913884a2d2f2e2d1.png

(2) 如果一切顺利,烧录完成后,开发板将会复位,应用程序 “hello_world” 开始运行;


e0d4dfa2217c4805855b9b7af83bf13a.png

10 监视输出

可以使用 idf.py -p PORT monitor 命令,监视 “hello_world” 工程的运行情况。注意,不要忘记将 PORT 替换为第 6 步查看的串口名称。

(1) 输入指令,监控开发板运行状况:

idf.py -p /dev/ttyUSB0 monitor

dd3f843f748b4b459362654070bc0d77.png

运行该命令后,IDF 监视器 应用程序将启动:

(2) 在启动日志和诊断日志之后,看到打印的 “Hello world!” 了;

9336fe9d7fb74ca5ba142dc6818e34e1.png

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

11 清除工程

当我们需要清除刚刚编译和配置的文件时,ESP-IDF 提供了两种清除指令。

11.1 idf.py clean

可以使用 idf.py clean 命令从生成目录中删除项目生成输出文件。

该项目将在下次构建时被完全重建。使用这个方法并不会删除构建文件夹中的 CMake 配置输出。

11.2 idf.py fullclean

运行此命令将删除整个 "build" 目录的内容。这包括所有的 CMake 配置输出。下次构建项目时,CMake 将从头开始配置它。注意,这个选项会递归地删除构建目录中的所有文件,所以要小心使用。项目配置不会被删除。


9d6316984f2844e2894fde367ba81903.png

总结

       完成以上 ESP-IDF 编译环境的搭建和 hello_world 工程的编译—>下载—>运行—>监控。恭喜,您已完成 ESP32 的入门学习!





相关文章
|
前端开发 Ubuntu Linux
【.NET6+Avalonia】开发支持跨平台的仿WPF应用程序以及基于ubuntu系统的演示
随着跨平台越来越流行,.net core支持跨平台至今也有好几年的光景了。但是目前基于.net的跨平台,大多数还是在使用B/S架构的跨平台上;至于C/S架构,大部分人可能会选择QT进行开发,或者很早之前还有一款Mono可以支持.NET开发者进行开发跨平台应用。
870 0
【.NET6+Avalonia】开发支持跨平台的仿WPF应用程序以及基于ubuntu系统的演示
|
Ubuntu 编译器 芯片
FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
|
3月前
|
Ubuntu 网络协议 Linux
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
65 0
|
4月前
|
JavaScript Ubuntu 前端开发
百度搜索:蓝易云【ubuntu安装开发javascript ubuntu script教程】
现在,你已经在Ubuntu上成功安装了JavaScript开发环境,可以开始编写和运行JavaScript代码了。注意,在编写代码之前,建议先创建一个项目文件夹,并在其中初始化npm,这样你可以管理项目的依赖项和配置。
33 5
|
5月前
|
Ubuntu 数据库 C++
百度搜索:蓝易云【【嵌入式Qt开发入门】在Ubuntu下编写C++教程。】
请注意,这只是一个入门教程,Qt开发涉及到更广泛的主题和概念,例如信号与槽机制、界面设计、数据库操作等。建议参考Qt官方文档和教程,以深入了解和掌握嵌入式Qt开发。
145 0
|
7月前
|
网络协议 Ubuntu Linux
无公网IP内网穿透使用vscode配置SSH远程ubuntu随时随地开发写代码-2
无公网IP内网穿透使用vscode配置SSH远程ubuntu随时随地开发写代码
|
7月前
|
Ubuntu 网络安全 数据安全/隐私保护
无公网IP内网穿透使用vscode配置SSH远程ubuntu随时随地开发写代码-1
无公网IP内网穿透使用vscode配置SSH远程ubuntu随时随地开发写代码
|
8月前
|
人工智能 IDE Ubuntu
工欲善其事,必先利其器-基于ubuntu18.04 VScode开发100ASK-ESP32
工欲善其事,必先利其器-基于ubuntu18.04 VScode开发100ASK-ESP32
96 0
|
8月前
|
Ubuntu 编译器 网络安全
RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试
在之前的博文中已经搭建好了一个比较完善的ubuntu宿主机,都很完善了但是发现没有Qt交叉编译开发环境,所以还需要搭建一套Qt交叉编译开发环境。
|
8月前
|
Ubuntu 网络协议 数据安全/隐私保护
RK3568开发笔记(六):开发板烧写ubuntu固件(支持mipi屏镜像+支持hdmi屏镜像)
编译了uboot,kernel,buildroot后,可以单独输入固件,也可以整体打包成rootfs进行一次性输入,rootfs直接更新升级这个方式目前也是常用的。本篇刷了2个镜像,一个支持mipi屏幕得ubuntu固件,一个支持hdmi固件,但是都不支持笔者的usb触摸屏