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

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的,有疑问可以留言互相沟通学习,欢迎大佬们一键三连!

    物联沃分享整理
    物联沃-IOTWORD物联网 » ESP32的arduino IDE代码使用flash download tool进行烧录

    发表评论