ESP32 系列之 ESP-IDF 官方构建方案

淘宝买了一块 ESP32S 的板子,刚到就迫不及待的心情准备搞波大的,准备搞一下 NanoFramework 框架,也就是.Net 的嵌入式系统,支持 C#语言的嵌入式开发,当然也支持(C,C++,Lua,js,At 指令,C#)等等吧,语言种类很多,但是,支持 C#,我感觉就很开心,因为熟悉啊。.

基于此,我就写写 ESP32 NanoFramework 框架的简单使用的例子。当然,后期为了对底层进行修改,我这里进行的是官方案例,根据官方的来的,所以,想搞简单方案的可以参考 VsCode 的相关例程。当然,后期我也会出一个。

关于买板子,其实都是根据一个模子出来的,型号选好即可。我这边的型号是 ESP32S,当然其他型号也可以,但是基本是 ESP32 开头。要不然,你自己就得多操心一下板子型号的相关问题。

ESP32 芯片简介

ESP32 SoC 芯片支持以下功能:

  1. 1. 2.4 GHz Wi-Fi

  2. 2. 蓝牙

  3. 3. 高性能 Xtensa® 32 位 LX6 双核处理器

  4. 4. 超低功耗协处理器

  5. 5. 多种外设

ESP32 采用 40 nm 工艺制成,具有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用场景和不同功耗需求。

乐鑫为用户提供完整的软、硬件资源,进行 ESP32 硬件设备的开发。其中,乐鑫的软件开发环境 ESP-IDF 旨在协助用户快速开发物联网 (IoT) 应用,可满足用户对 Wi-Fi、蓝牙、低功耗等方面的要求。

ESP-IDF 环境搭建

可以参考这篇文章

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html

当然,我也是参考这篇文章过来的。

本文档旨在指导用户搭建 ESP32 硬件开发的软件环境,通过一个简单的示例展示如何使用 ESP-IDF (Espressif IoT Development Framework) 配置菜单,并编译、下载固件至 ESP32 开发板等步骤。

准备工作

  1. 1. 一款 ESP32 开发板(我这边是 ESP32S)

  2. 2. USB 数据线 (A 转 Micro-B)

  3. 3. 电脑(Windows、Linux 或 macOS)(我这边是 Windows 其他的参考官方文档)

开发板插入到电脑USB上

ESP32 系列之 ESP-IDF 官方构建方案

显示COM5 (不一定非得是5,可能是其他数字)才是正常的,如果不正常,需要下载驱动,我这个板子需要的驱动可以从

https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers

下载 CP210x 通用 Windows 驱动程序,里面有 64.exe ,双击就OK,然后,插拔一下开发板即可。

安装 ESP-IDF

第一步:下载 ESP-IDF

地址:

https://dl.espressif.com/dl/esp-idf/?idf=4.4

我下载的是这个,看着相对小点(下载速度不是很快)

ESP32 系列之 ESP-IDF 官方构建方案

下载完

就简单了。直接双击运行

ESP32 系列之 ESP-IDF 官方构建方案

直接下一步,这个地方有环境变量,需要注意,另外会开启 windows 的防御机制,我后边又给关了,太耗性能了

ESP32 系列之 ESP-IDF 官方构建方案

我一般都选 D 盘,C 盘大的,就直接 C 盘了

ESP32 系列之 ESP-IDF 官方构建方案

全选,直接下一步

ESP32 系列之 ESP-IDF 官方构建方案

最后,桌面生成了我们需要的。

ESP32 系列之 ESP-IDF 官方构建方案

至此,安装是完毕了。

第二步安装其他工具

  1. 1. python (3.7 ++)

  2. 2. git

这两个是必须安装的,先安装了先。

第三步:设置环境变量

先设置新安装工具的环境变量

ESP32 系列之 ESP-IDF 官方构建方案

设置 ESP-IDF 的环境变量

在 D:\Espressif\frameworks\esp-idf-v4.3.3 目录下(其他目录下的 对应即可)

执行

export.ps1

再执行

install.ps1 all

执行完之后,用户的环境变量里已经有数据了

ESP32 系列之 ESP-IDF 官方构建方案

构建系统

构建命令

idf.py 命令包含了以下相应的功能

  1. 1. CMake,配置待构建的项目

  2. 2. 命令行构建工具(Ninja 或 GNU Make)

  3. 3. esptool.py,烧录目标硬件设备

构建的时候,我们使用的命令是

  1. 1. 设置构建目标的平台,我这里的平台是esp32

idf.py set-target esp32
  1. 1. 设置硬件平台相应的参数信息

idf.py menuconfig

会如下图所示

ESP32 系列之 ESP-IDF 官方构建方案

可以通过此菜单设置项目的具体变量,包括 Wi-Fi 网络名称、密码和处理器速度等. hello_world 示例项目会以默认配置运行,因此可以跳过使用 menuconfig 进行项目配置这一步骤。

  1. 1. 构建命令

idf.py build
  1. 1. 下载到ESP32上

idf.py -p COM5 -b 115200 flash

命令很简单,com5就是我这边的串口名,你可以改成你自己的

115200就是我设置的串口的波特率,你也可以设置成一样的,或者其他都可以。

  1. 1. 清除 或 全清除

idf.py clean
idf.py fullclean

我试了两个命令都可以起到重新编译项目的目的。

构建样例

复制

D:\Espressif\frameworks\esp-idf-v4.3.3\examples\get-started\hello_world

项目到

H:\hello_world

我这边是这样的目录,你那边可以随意。

启动命令行

ESP32 系列之 ESP-IDF 官方构建方案

启动任意一个,我启动powershell的

它会自动输出一堆,不用管。

ESP32 系列之 ESP-IDF 官方构建方案

直接到刚才复制的项目目录下

PS D:\Espressif\frameworks\esp-idf-v4.3.3> cd H:\hello_world
PS H:\hello_world>

然后,执行命令

PS H:\hello_world> idf.py build

它会自己输出很多,还有 编译的过程,链接的过程。

ESP32 系列之 ESP-IDF 官方构建方案

就等待它自己编译完。

ESP32 系列之 ESP-IDF 官方构建方案

编译完输出上面那句话。

D:\Espressif\python_env\idf4.3_py3.8_env\Scripts\python.exe D:\Espressif\frameworks\esp-idf-v4.3.3\components\esptool_py\esptool\esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32  write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 build\bootloader\bootloader.bin 0x8000 build\partition_table\partition-table.bin 0x10000 build\hello-world.bin
or run 'idf.py -p (PORT) flash'

这句话的意思里面有一个重点,重点是它其实是生成了三个bin文件

  1. 1. build\bootloader\bootloader.bin 0x1000

  2. 2. build\partition_table\partition-table.bin 0x8000

  3. 3. build\hello-world.bin 0x10000

这三个bin文件分别是: bootloader,分区表,应用程序 三个文件,后边应该就是它们存储的内部Flash地址了。

为啥是这样的结构呢,且听以后分解(有些大佬肯定是知道的)。

当然,其实系统也提供一条命令执行

idf.py -p COM5 -b 115200 flash

执行后,如下图所示:

ESP32 系列之 ESP-IDF 官方构建方案

然后,可以通过串口助手查看一下(需要注意串口占用的问题,尽量只有一方在使用)。

其中,原示例代码,我已经改了。暂时没有支持中文的串口助手,以后再说。

ESP32 系列之 ESP-IDF 官方构建方案

通过串口助手,我们已经看到,结果跟我们想的一样。

ESP32 系列之 ESP-IDF 官方构建方案

总结

我们已经基于 ESP32官方的 ESP-IDF工具来完成了ESP32的项目逻辑修改,编译,生成,和下载。官方示例很多,也可以多试几个,学习一下。

接下来会把 NanoFramework 给烧成并生成出来,这个时候,才可以用C#。目前还是C。一步一步来。

参考链接

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html