ESP32固件烧录:初学者指南

我一开始入门esp32的时候找关于固件下载好长时间都没有找到适合入门的固件烧录教程。现在学了一段时间,所以想要写一篇关于esp32固件烧录的教程,去帮助一些入门的朋友。

这篇文章主要参考的官方文档的说明,如果想要了解更多的关于烧录知识或者完全适合你的开发板固件烧录的方法,你可以参考下面是链接:

  • ESP-AT下载指导

  • ESP-AT固件

  • flash文件中doc中工具使用指南(这个不是链接)

  • 为什么下载固件?

    首先到手一款esp32开发板的第一件事就是下载固件,自己写代码才可以烧录进去才可以运行。

    固件如何烧录到esp32中?

    我在网络上找的时候以为对于不同的编程语言要下载不同的固件。但是后来我发现我错了,对于固件而言,它是和你写代码时运用的编程语言是无关的,无论你使用的是C++,micropython还是Lua.

    下载的固件如何使用?

    我们可以从乐鑫的官网进行下载对应的固件,esp32烧录固件需要使用乐鑫专用的flash下载工具。
    flash工具链接
    乐鑫官网进入有些慢,请耐心等待。

    下载的是一个压缩包,内部包含flash下载工具和固件以及一些其他的东西。但是我们并不需要压缩包内部的固件,我们只需要它的flash下载工具。

    固件从哪里下载?

    下载真正需要的固件的链接,这是官方的固件,可以根据自己的开发板去下载对应的固件。

    烧录固件前期必要知识准备

    固件压缩包内部有很多的固件,我们可以根据自己的需要去安装。

  • factory/factory_xxx.bin 是这些特定功能的二进制文件的合集。您可以仅烧录factory/factory_xxx.bin 到起始地址为 0 的 flash 空间中,或者根据 download.config文件中的信息将若干个二进制文件烧录到 flash 中对应起始地址的空间中。

  • at_customize.bin 提供了用户分区表,该表列出了 ble_data.bin 分区、SSL 证书分区、MQTT 证书分区以及 factory_param_XXX.bin 分区和其它一些分区的的起始地址和分区大小。您可以通过 AT 命令 AT+FS 和 AT+SYSFLASH 来读和写该文件中罗列的分区里的内容。

  • factory_param_XXX.bin 指明了不同 ESP32 模组之间的硬件配置。请确保您的模组使用了正确的固件。

  • ble_data.bin 在 ESP32 工作于 Bluetooth LE 服务端的时候提供蓝牙服务;

  • server_cert.bin、server_key.bin 和 server_ca.bin 是 SSL 服务端示例证书;

  • client_cert.bin、client_key.bin 和 client_ca.bin 是 SSL 客户端示例证书;

  • mqtt_cert.bin、mqtt_key.bin 和 mqtt_ca.bin 是 MQTT SSL 客户端示例证书;
    如果有些功能你不需要,你可以选择不用烧录烧录。

  • 固件来源

    其实固件的来源不仅有官方,还有一些用户自行编译的,以及github上的,对于小白我建议使用官方的固件。
    当然如果你想要提升一下自己的能力去烧录其他来源的固件,你可以看这篇文章

    固件文件分析

    以ESP32-WROOM-32 对应的 ESP32-WROOM-32_AT_Bin_V2.2.0.0 固件,该固件的目录结构及其中各个 bin 文件介绍如下,其它 ESP32 系列模组固件的目录结构及 bin 文件也可参考如下介绍:
    .
    ├── at_customize.bin // 二级分区表
    ├── bootloader // bootloader
    │ └── bootloader.bin
    ├── customized_partitions // AT 自定义 bin 文件
    │ ├── ble_data.bin
    │ ├── client_ca.bin
    │ ├── client_cert.bin
    │ ├── client_key.bin
    │ ├── factory_param.bin
    │ ├── factory_param_WROOM-32.bin
    │ ├── mqtt_ca.bin
    │ ├── mqtt_cert.bin
    │ ├── mqtt_key.bin
    │ ├── server_ca.bin
    │ ├── server_cert.bin
    │ └── server_key.bin
    ├── download.config // 烧录固件的参数
    ├── esp-at.bin // AT 应用固件
    ├── esp-at.elf
    ├── esp-at.map
    ├── factory // 量产所需打包好的 bin 文件
    │ ├── factory_WROOM-32.bin
    │ └── factory_parameter.log
    ├── flasher_args.json // 下载参数信息新的格式
    ├── ota_data_initial.bin // ota data 区初始值
    ├── partition_table // 一级分区列表
    │ └── partition-table.bin
    ├── phy_init_data.bin // phy 初始值信息
    └── sdkconfig // AT 固件对应的编译配置

    download.config文件

    download.config 文件包含烧录固件的参数:(这个将会在利用烧录软件时用到,很重要

    --flash_mode dio --flash_freq 40m --flash_size 4MB
    0x8000 partition_table/partition-table.bin
    0x10000 ota_data_initial.bin
    0xf000 phy_init_data.bin
    0x1000 bootloader/bootloader.bin
    0x100000 esp-at.bin
    0x20000 at_customize.bin
    0x24000 customized_partitions/server_cert.bin
    0x39000 customized_partitions/mqtt_key.bin
    0x26000 customized_partitions/server_key.bin
    0x28000 customized_partitions/server_ca.bin
    0x2e000 customized_partitions/client_ca.bin
    0x30000 customized_partitions/factory_param.bin
    0x21000 customized_partitions/ble_data.bin
    0x3B000 customized_partitions/mqtt_ca.bin
    0x37000 customized_partitions/mqtt_cert.bin
    0x2a000 customized_partitions/client_cert.bin
    0x2c000 customized_partitions/client_key.bin
    

    –flash_mode dio 代表此固件采用的 flash dio 模式进行编译;
    –flash_freq 40m 代表此固件采用的 flash 通讯频率为 40 MHz;
    –flash_size 4MB 代表此固件适用的 flash 最小为 4 MB;
    0x10000 ota_data_initial.bin 代表在 0x10000 地址烧录 ota_data_initial.bin 文件。

    烧录开始

    准备工作以及必要知识储备完成,下面开始固件烧录
    下面我以windows为例,讲述烧录步骤

    1. 打开烧录工具:

    2. 选择和自己开发板相同的型号(例如ESP32)

    3. 选择烧录模式:(例如develop)

    4. 根据您的需求选择一种下载接口;(此处,我们选择 uart)其实无法选择

    5. 将 AT 固件烧录至设备,以下两种方式任选其一:
      第一:直接下载打包好的量产固件至 0x0 地址:勾选 “DoNotChgBin”,使用量产固件的默认配置;

      我推荐新手使用这个方案,虽然略有不足,但是基本上满足新手的需要。

    第二:分开下载多个 bin 文件至不同的地址:根据 download.config 文件进行配置请勿勾选 “DoNotChgBin”;(现在就知道 download.config的重要性了,我们固件烧录的地址就在这个地方存储,在烧录时需要填写正确的地址;)

    如果选择这种方案,烧录download.config文件中所包含的所有的固件。

    注意:记得在固件前面点上对勾,要不然不会烧录对应的固件。

    为了避免烧录出现问题,请查看开发板的下载接口的 COM 端口号,并从 “COM:” 下拉列表中选择该端口号。

    对于Linuix或者macOS的固件烧录,可以参考官方文档

    到现在固件烧录基本上已经完成了。

    烧录工具的使用说明

    如果你想要了解更多关于烧录软件的说明,在下载flash工具的文件夹中,有一个doc文件夹,内部有中文以及英文的烧录软件说明书。
    以及一些错误也可以参考烧录文件中的使用说明。

    如果文章中存在问题,请大家批评指正在评论区,让后来的朋友避免错误,也欢迎大家私信我,我会尽快对文章进行修改。如果读者存在问题,也可以私信我,我会尽我最大的能力去解决。

    物联沃分享整理
    物联沃-IOTWORD物联网 » ESP32固件烧录:初学者指南

    发表评论