ESP32烧录Arduino生成的bin文件

ESP32烧录Arduino生成的bin文件

前言

Arduino有着丰富的第三方库,因此开发起来非常的方便快捷,但是在实际的生产中,我们不可能使用Arduino IDE来进行固件的烧录,因为使用Arduino IDE烧录效率很低,而且要先帮工厂把环境搭建好,更重要的是烧录时必须要打开源代码,这可能会导致工厂泄露机密。因此,最好的方案还是将代码转成通用的bin文件烧录。
废话不多说,马上开始讲解。

1 Arduino生成bin文件

关于Arduino的环境搭建,库安装这些我就不介绍了,都走到量产这一步了不会有人还不知道吧。

打开Arduino IDE,打开 项目 -> 导出已编译的二进制文件,等待编译完成即可在工程目录下生成相应的bin文件。
在这里插入图片描述
编译成功后生成的bin文件:
在这里插入图片描述

2 bin文件烧录

2.1 下载烧录工具

烧录bin文件的时候我们需要用到乐鑫的flash烧录工具。
工具可以在乐鑫官网下载:
https://www.espressif.com/zh-hans/support/download/other-tools
在这里插入图片描述

2.2 集齐MCU需要烧录的固件

用Arduino IDE烧录ESP8266、ESP32、ESP32-S2或者其他ESP系列的MCU时给我们的感觉是它仅仅烧录了自己编写的代码以及底层支持库。但实际上除了这些,还包含了启动文件,bootloader,sdk等。
因此,如果我们只烧录Arduino生成的bin文件是无法正常运行的。我们还需要找到另外几个文件。
这几个文件都在你安装的开发板库里面。比如你用的ESP32,那就是在esp32库。

我这里以ESP32-S2为例讲解,其他ESP系列的MCU也是一样的。

首先我们要打开库文件对应的文件夹。
这个路径可以在Arduino IDE的首选项里面看到。点击一下这个路径就可以弹出文件窗口。
在这里插入图片描述
在这里插入图片描述
在packages文件夹可以看到所有已安装的开发板库。比如我这里安装了esp32和esp8266的库。
在这里插入图片描述
进入相应的库,找到partitions和sdk这两个文件夹。
在这里插入图片描述
提示:我这个是esp32 v2.0.1版本的库,其他MCU或者其他版本的库文件框架可能会有区别,但是大体上应该都是类似的。

1)第1个文件:boot_app0
在partitions文件夹里面。
在这里插入图片描述
2)第2个文件:bootloader
在sdk文件夹里面。
特别说明一下:目前esp32是有3个MCU的sdk的,选择自己要用的即可。我这里用的是esp32-s2。
在这里插入图片描述
提示:dio、dout、qio和qout是spi的模式,40m和80m是flash的频率,比较常用的是dio和40m。当然,如果对性能有更高的要求可以选80m,在SPI作为主机时可以达到80MHz,但相应的对硬件的抗干扰能力也有更高的要求。

3)第3个文件:app
这个是你实际的应用代码,也就是用Arduino IDE生成的bin文件。

4)第4个文件:default
和第1个文件一样,也是在partitions文件夹里面。
在这里插入图片描述

2.3 烧录固件

打开乐鑫的烧录工具,选择对应的芯片和烧录方式。
提示:ESP32-S2除了串口以外,还可以通过USB下载。

在这里插入图片描述
依次添加烧录文件,并填写相应的烧录地址,配置好相应的模式。
我这里还是以ESP32-S2为例。
在这里插入图片描述
获取烧录文件地址的方法:这几个地址可以在Arduino IDE烧录时输出的日志中找到。
在这里插入图片描述

连接好硬件设备,并且进入下载模式。
进入下载模块的方法:按住boot键,然后再按reset键,最后松开boot键。或者按住boot键之后再上电。只要保证MCU启动时,boot脚是低电平即可。
在这里插入图片描述

通过串口打印的信息可以确定是否已进入下载模式。
进入下载模式时可以看到以下信息:
在这里插入图片描述

在烧录工具上选择好对应的com口,配置好波特率(波特率越大,下载速度越快)。
提示:ESP32-S2除了串口以外,还可以通过USB下载,要先进入下载模式才能检测到USB对应的com口,或者之前运行的代码有把USB配置成虚拟串口也可以看到对应的com口。

点击START开始烧录。
提示:烧录固件之前可以先全部擦除一遍。如果点击开始烧录之后才发觉MCU没有进入烧录模式,也可以在这里进入,进入之后马上就会开始烧录了。

在这里插入图片描述
等待下载完成后重启一下即可。

结束语

好了,关于Arduino生成bin文件及烧录方法的介绍就到这里。本文只列举了ESP32-S2的情况,ESP8266和ESP32我也试过,也是一样的,大家举一反三即可。如果这篇文章对你有帮助,可以点赞收藏,如果还有什么问题,欢迎在评论区留言或者私信给我。

Arduino开发教程汇总:
https://blog.csdn.net/ShenZhen_zixian/article/details/121659482

猜你喜欢

转载自blog.csdn.net/ShenZhen_zixian/article/details/123042029