ESP32的arduino IDE代码使用flash download tool进行烧录

news2024/9/25 11:12:21

ESP32的arduino IDE代码使用flash download tool进行烧录

  • 前言
  • arduino代码烧录
  • arduino下载了一些什么文件
  • flash download tool工具烧录
  • 总结

前言

       最近遇到用户在使用 arduino IDE开发环境编写了ESP32的代码,希望提供编写好的程序给用户烧录,但是又不希望让客户看到源代码。
       可以肯定的是这显然是可以实现的,这里我们拿一块最新的ESP32-S3的开发板作为一次操作示例。

arduino代码烧录

       首先我们在arduino IDE中编写一个串口输出 Hello World! 的代码并烧录(arduino中添加ESP32-S3开发板可以参考我们往期的文章),代码如下

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello World!");
  delay(500);
}

       arduino中的代码烧录比较简单,只需要选对芯片型号和端口号就可以直接烧录。
在这里插入图片描述
       烧录之后我们打开串口助手软件,配置好115200的波特率和对应的端口号,看是否定期500ms返回了Hello World!即可。

在这里插入图片描述
       如果没有任何信息返回可以尝试按一下复位按键。

arduino下载了一些什么文件

       相信大家关心的并不是arduino怎么样烧录程序,网上教程太多而且这并不复杂。
       下面我们看到arduino烧录的时候编译上传的详细信息输出,我们可以看到以下的内容,以及红框中的内容,这是重要的
在这里插入图片描述
       这里面记录着arduinoESP32-S3开发板中如何进行烧录的,详细放到下面我们着重解析,如果烧录的时候没有像我下面这么详细的信息,在arduino IDE中的首选项打开详细信息输出就好

H:\arduino\hardware\espressif\esp32/tools/esptool/esptool.exe --chip esp32s3 --port COM7 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0 
C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.bootloader.bin 0x8000 C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.partitions.bin 0xe000 H:\arduino\hardware\espressif\esp32/tools/partitions/boot_app0.bin 0x10000 C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.bin 

       内容非常多,我们把里面的重要信息拆分成多行方便查看

H:\arduino\hardware\espressif\esp32/tools/esptool/esptool.exe
--chip esp32s3 --port COM7 --baud 921600 
--before default_reset --after hard_reset write_flash -z 
--flash_mode dio --flash_freq 80m --flash_size 4MB 
0x0 
C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.bootloader.bin 
0x8000 
C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.partitions.bin 
0xe000 
H:\arduino\hardware\espressif\esp32/tools/partitions/boot_app0.bin 
0x10000 
C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.bin 

       下面这两行为端口号波特率,我们一会在flash download tool配置成一样的就好,这里不是很重要

--chip esp32s3 --port COM7 --baud 921600 
--before default_reset --after hard_reset write_flash -z

       下面这行是arduino在烧录时配置的参数,一会我们使用flash download tool也可以配置成一样的,相当于是照抄一遍arduino IDE配置的参数和进行的操作

--flash_mode dio --flash_freq 80m --flash_size 4MB 

       上面两段内容相信很多人也知道如何配置,那么下面是比较重要一些的内容,包含了烧录了哪些文件ESP32以及烧录到哪里,我们详细操作

0x0 
C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.bootloader.bin 
0x8000 
C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.partitions.bin 
0xe000 
H:\arduino\hardware\espressif\esp32/tools/partitions/boot_app0.bin 
0x10000 
C:\Users\18748\AppData\Local\Temp\arduino_build_578225/sketch_dec13a.ino.bin 

       1、arduino IDE将储存在电脑 C:\Users\18748\AppData\Local\Temp\arduino_build_578225 下名称为 sketch_dec13a.ino.bootloader.bin 的文件烧录到了地址 0x0

       2、arduino IDE将储存在电脑 C:\Users\18748\AppData\Local\Temp\arduino_build_578225 下名称为 sketch_dec13a.ino.partitions.bin 的文件烧录到了地址 0x8000

       3、arduino IDE将储存在电脑 H:\arduino\hardware\espressif\esp32/tools/partitions 下名称为 boot_app0.bin 的文件烧录到了地址 0xe000

       4、arduino IDE将储存在电脑 C:\Users\18748\AppData\Local\Temp\arduino_build_578225 下名称为 sketch_dec13a.ino.bin 的文件烧录到了地址 0x10000

       那么我们需要做的是将上面提取出来的地址中找到对应的四个文件复制出来给他们放一起就好

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
       整理出下面四个文件

在这里插入图片描述

       值得说明的是上面这四个文件的路径以及文件的名称会随着您的工程arduino安装的路径以及windows的账户名发生改变,因此您没有办法直接复制我上面现成的路径。

       您的arduino工程至少需要编译一遍以获得上面的信息来找到四个文件的位置以及烧录到的对应地址。

flash download tool工具烧录

       乐鑫官网下载 flash download tool工具,切记选择对应型号的芯片,避免出现选择默认的ESP8266去烧录ESP32的代码的情况

在这里插入图片描述
       选择对应的文件,后面的框中填入对应的地址,其他的选项照抄即可,影响不是很大,参照下图

在这里插入图片描述

       烧录成功后打开串口助手软件,同样的打开对应的端口选择正确的波特率,按一下开发板上的复位按键即可看到返回的信息

在这里插入图片描述
       或许您会觉得四个文件四个地址过于麻烦不是很方便,那么我们可以勾选DoNotChgBin(烧录的时候勾选也可以),并点击下方的CombineBin按钮,此时会打开一个文件夹,并在文件夹中生成一个target.bin的文件。
       这个文件我们只需要直接烧录到0x0的地址中即可,如下方所示
在这里插入图片描述

       烧录之后的代码效果并没有什么区别,方便了我们用户烧录出错的情况。

总结

       如果您也是使用arduino IDE开发ESP32的产品,希望我们的文章能对您有所帮助,理论上来讲,虽然我们此次使用的ESP32-S3做的示例,但这个流程应当是适用于目前所有的ESP的包括8266在内的SOC的,有疑问可以留言互相沟通学习,欢迎大佬们一键三连!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/97781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin + SpringBoot + JPA 服务端开发

Kotlin SpringBoot JPA 服务端开发 本篇主要介绍一下 kotlin springboot的服务端开发环境搭建 1.概述 Kotlin 是一个基于JVM的编程语言, 是IDEA开发工具 jetbrains 公司开发的语言,也被google选为android开发的首选语言, 因为它是完全兼容Java的 所以也可以做后端开发 比如…

[Java] 如何理解和设置ThreadPoolExecutor三大核心属性?什么情况下工作线程数会突破核心线程数?任务拒绝策略都有哪些?

文章目录前言ThreadPoolExecutor类是什么?ThreadPoolExecutor的三大核心属性1. 核心线程数(corePoolSize)属性2. 任务队列(workQueue)属性3. 最大线程数(maximumPoolSize)属性总结:T…

【开发百宝箱之猿如意使用指南】「工欲成其事,必先利其器」一文教你如何通过“猿如意”便捷的使用数据库管理工具DBeaver

开发百宝箱之猿如意使用指南欢迎您使用“猿如意”百宝箱大家科普一下什么是猿如意?赶快趁热下载个【猿如意】吧每个程序猿值得拥有的学习开发工作必备“良药”没有猿如意的“我们”(猿如意帮我们解决了哪些问题?)【如何快速下载自…

非零基础自学Golang 第12章 接口与类型 12.2 接口的创建与实现 12.2.1 接口创建

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.2 接口的创建与实现12.2.1 接口创建第12章 接口与类型 12.2 接口的创建与实现 Go语言接口是方法的集合,使用接口是实现模块化的重要方式。 下面将重点介绍如何创建和实现一个Go语言接口。 12…

Pytest用例执行的先后顺序

[内部资源] 想拿年薪30W的软件测试人员,这份资料必须领取~ 温馨提示 「本篇约1600字,看完需3-5分钟,学习学半小时,加油!」 先看普通函数运行顺序 import pytestdef test_one():print("我是清安")def tes…

React学习27(react-redux多组件共享数据)

项目结构 准备工作 1)定义一个person组件,和count组件通过redux共享数据 2)为person组件编写:reducer ,action和contant常量 3)重点:Person的reducer和Count的reducer要用combineReducers进行…

深度学习-优化器

优化器 文章目录优化器1. 引言1. SGD1.1 vanilla SGD1.2 SGD with Momentum1.3 SGD with Nesterov Acceleration2. AdaGrad3. RMSProp4. AdaDelta5. Adam优化器选择出处1. 引言 优化算法可以分成一阶优化和二阶优化算法,其中一阶优化就是指的梯度算法及其变种&#…

Linux——vi,vim的使用

三种模式 正常模式 以vi或vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用 【上下左右】 按键来移动光标,你可以使用 【删除字符】或 【删除整行】来处理档案内容,也可以使用 【复制,粘贴】来处…

3D激光里程计其三:点云畸变补偿

3D激光里程计其三:点云畸变补偿1. 产生原因2. 补偿方法Reference: 深蓝学院-多传感器融合 1. 产生原因 一帧点云:通常指雷达内部旋转一周扫描得到的点的集合。 优点:有足够数量的点云才能进行匹配,且一周正好是周围环境的完整采…

认识Java中的异常处理

文章目录Java异常处理异常体系的介绍常见运行时异常常见编译时异常Java异常处理 异常体系的介绍 什么事异常处理? 异常是程序在“编译”或者“执行”的过程中可能出现的问题,比如: 数组索引越界、空指针异常、 日期格式化异常,等… 注意:语…

常用损失函数

常见损失函数 文章目录常见损失函数引言回归1. 均方差2.平均绝对误差(MAE)3. 均方根误差(RMSE)4. 交叉熵分类二分类多分类引言 无论在机器学习还是深度领域中,损失函数都是一个非常重要的知识点。损失函数(Loss Function)是用来估量模型的预测值 f(x) 与…

Eslint 8.23 Flat Config 新配置迁移升级指南

前言 直入正题,eslint 目前为止的配置文件格式( 如 .eslintrc.js ) 存在很多无法避免的历史问题: 配置格式混乱,层层不明确的继承,不易理解。 插件配置时不支持实体运用(不能传 function / ob…

学完框架后的反思—为什么要使用框架?

学习前端也有一定的时间了,最近在网上看到了一个问题让我反思了很久——为什么要使用前端框架? 我发现自己当初学习框架时并没有想那么多,只是看中了其在业界企业的应用,大部分公司开发页面基本上都是使用框架进行开发的,而最为被大厂广泛接受的就是 React 框架,所以我当…

二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮 DPPE-PEG-N3简介,可用于药物传递、基因转染和生物分子修饰。

二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮 DPPE-PEG-N3 中文名称:二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮基 英文名称:DPPE-PEG-N3 英文别名: 1,2-dipalmitoyl-sn-glycero-3-phosphoethanolamine-PEG-Azide 分子量(PEG)&a…

Linux——任务调度

at定时任务 基本介绍 at命令是一次性定时计划任务,at地守护线程atd会以后台模式运行,检查作业队列来运行默认情况下,atd守护进程没60秒检查作业队列,有作业时,会检查作业运行时间,如果时间于当前时间匹配…

Dubbo 1 分布式系统中的相关概念 1.2 集群和 分布式

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 1 分布式系统中的相关概念 文章目录Dubbo1 分布式系统中的相关概念1.2 集群和 分布式1.2.1 集群和分布式1.2.2 集群和分布式 【互联网 中】1.2 集群和 分布式 1.2.1 集群和分布式 集群:很…

使用synchornized和ReentrantLock来解决并发错误

文章目录什么是并发错误?并发错误是如何产生的?演示并发错误如何解决并发错误使用synchornized解决并发错误使用ReentrantLock解决并发错误什么是并发错误? 多个线程共享操作同一个对象的时候,线程体当中连续的多行操作未必能够连…

下个文档还要马内?还好我会Python,教大家来一手强制复制粘贴

前因后果 公司有人阳了,今天在家上班,突然小姨子就问我有没有baidu文库会员,想下载点东西,我心想这还要会员?用Python不是分分钟的事情! 然后我非常自信的告诉她不用会员随便下载,结果她顺势想…

10两级电力市场环境下计及风险的省间交易商最优购电模型

参考文章: 两级电力市场环境下计及风险的省间交易商最优购电模型—郭立邦(电网技术2019) 主要内容: 为进一步推动电力市场建设,促进电力资源大范围优化配置,我国正逐步建成包含省间与省内电力交易的两级…

齿轮魔方、五阶齿轮魔方

齿轮魔方 1,魔方三要素 (1)组成部件 部件和三阶魔方完全对应,但每个棱块的朝向不止2种,而是有6种。 (2)可执行操作 只有3种操作,即上下层同时旋转180度、左右180度、前后180度。…