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
烧录的时候编译
和上传
的详细信息输出,我们可以看到以下的内容,以及红框中的内容,这是重要的
这里面记录着arduino
向ESP32-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
的,有疑问可以留言互相沟通学习,欢迎大佬们一键三连!