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


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

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

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

    ESP32 芯片简介

    ESP32 SoC 芯片支持以下功能:

    1. 2.4 GHz Wi-Fi
    2. 蓝牙
    3. 高性能 Xtensa® 32 位 LX6 双核处理器
    4. 超低功耗协处理器
    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. 一款 ESP32 开发板(我这边是 ESP32S)
    2. USB 数据线 (A 转 Micro-B)
    3. 电脑(Windows、Linux 或 macOS)(我这边是 Windows 其他的参考官方文档)

    开发板插入到电脑USB上

    显示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

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

    下载完

    就简单了。直接双击运行

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

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

    全选,直接下一步

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

    至此,安装是完毕了。

    第二步安装其他工具

    1. python (3.7 ++)
    2. git

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

    第三步:设置环境变量

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

    设置 ESP-IDF 的环境变量

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

    执行

    export.ps1
    
    • 1

    再执行

    install.ps1 all
    
    • 1

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

    构建系统

    构建命令

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

    1. CMake,配置待构建的项目
    2. 命令行构建工具(Ninja 或 GNU Make)
    3. esptool.py,烧录目标硬件设备

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

    1. 设置构建目标的平台,我这里的平台是esp32
    idf.py set-target esp32
    
    • 1
    1. 设置硬件平台相应的参数信息
    idf.py menuconfig
    
    • 1

    会如下图所示

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

    1. 构建命令
    idf.py build
    
    • 1
    1. 下载到ESP32上
    idf.py -p COM5 -b 115200 flash
    
    • 1

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

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

    1. 清除 或 全清除
    idf.py clean
    idf.py fullclean
    
    • 1
    • 2

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

    构建样例

    复制

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

    项目到

    H:\hello_world

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

    启动命令行

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

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

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

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

    然后,执行命令

    PS H:\hello_world> idf.py build
    
    • 1

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


    就等待它自己编译完。


    编译完输出上面那句话。

    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'
    
    • 1
    • 2

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

    1. build\bootloader\bootloader.bin 0x1000
    2. build\partition_table\partition-table.bin 0x8000
    3. build\hello-world.bin 0x10000

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

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

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

    idf.py -p COM5 -b 115200 flash
    
    • 1

    执行后,如下图所示:

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

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

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

    总结

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

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

    参考链接

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

    一键三连呦!,感谢大佬的支持,您的支持就是我的动力!

  • 相关阅读:
    既然有HTTP协议,为什么还要有RPC
    位于kernel的文件系统大管家--Virtual File System
    17.13 补充知识、线程池浅谈、数量谈、总结
    spy最新安装教程!!青龙+spy,东东豆豆多)
    51单片机学习:外部中断1实验
    深度学习:如何面对隐私和安全方面的挑战
    【网络编程】okhttp源码解析
    如何进行数据库分库分表
    15天深度复习JavaWeb的详细笔记(八)——jsp
    《opencv学习笔记》-- 形态学滤波:形态学梯度、开运算、闭运算、顶帽、黑帽
  • 原文地址:https://blog.csdn.net/kesshei/article/details/125531687