草庐IT

ESP32固件烧录-初级入门

爱分享的粒子 2023-04-08 原文

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

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

为什么下载固件?

首先到手一款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文件夹,内部有中文以及英文的烧录软件说明书。
以及一些错误也可以参考烧录文件中的使用说明。

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

有关ESP32固件烧录-初级入门的更多相关文章

  1. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  4. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  5. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  6. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  7. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  8. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  9. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  10. ESP32学习入门:WiFi连接网络 - 2

    目录一、ESP32简单介绍二、ESP32Wi-Fi模块介绍三、ESP32Wi-Fi编程模型四、ESP32Wi-Fi事件处理流程 五、ESP32Wi-Fi开发环境六、ESP32Wi-Fi具体代码七、ESP32Wi-Fi代码解读6.1主程序app_main7.2自定义代码wifi_init_sta()八、ESP32Wi-Fi连接验证8.1测试方法8.2服务器模拟工具sscom58.3测试代码8.4测试结果前言为了开发一款亚马逊物联网产品,开始入手ESP32模块。为了能够记录自己的学习过程,特记录如下操作过程。一、ESP32简单介绍ESP32是一套Wi-Fi(2.4GHz)和蓝牙(4.2)双模解决方

随机推荐