DEV Community

codemee
codemee

Posted on

使用命令列工具上傳檔案到 ESP32 開發板

arduino-esp32fs-plugin 外掛目前並不支援 Arduino IDE 2, 不過其實可以依照以下的步驟利用命令列工具上傳檔案

  1. 從 Arduino 的 preferences.txt 找到目前選擇的控制板型號、晶片平台以及分割 (partition) 方式:

    board=d32
    ...
    custom_PartitionScheme=d32_default
    ...
    target_platform=esp32
    
  2. 目前平台可用的分割方式可在平台的 board.txt 檔中找到, 底下以 ESP 的 d32 板子為例, 檔案在 packages\esp32\hardware\esp32\2.0.5\boards.txt:

    d32.menu.PartitionScheme.default=Default
    d32.menu.PartitionScheme.default.build.partitions=default
    

    第一行是顯示在 Arduino 工具功能表下的分割方式選項文字, 第二行是對應的分割設定檔名稱。

  3. 利用上述資訊, 即可找到分割設定檔, 例如 default 設定檔在 packages\esp32\hardware\esp32\2.0.5\tools\partitions\default.csv:

    # Name,   Type, SubType, Offset,  Size, Flags
    nvs,      data, nvs,     0x9000,  0x5000,
    otadata,  data, ota,     0xe000,  0x2000,
    app0,     app,  ota_0,   0x10000, 0x140000,
    app1,     app,  ota_1,   0x150000,0x140000,
    spiffs,   data, spiffs,  0x290000,0x170000,
    

    就可以知道個別分割區的類型、起始位址、大小。

  4. 有了以上資訊就可以利用隨 ESP32 Arduino Core 就有的 mkspiffs 工具從指定的資料夾建立該資料夾的 spiffs 映像檔:

    # .\mkspiffs -c .\test_dir\ -s 0x170000 test.bin
    
    選項 說明
    -c 要建立映像檔的資料夾, 所有要上傳到 ESP32 開發板的檔案都要放在這個映像檔內
    -s 映像檔的大小, 這可從 partition 設定檔中取得

    mkspiffs 工具在 packages\esp32\tools\mkspiffs 下。

  5. 製作好的映像檔可以透過 esptool 上傳到 ESP32 開發板上, 例如:

    # ./esptool.exe --chip esp32 --port com4 --baud 921600  write_flash -z  0x290000 test.bin
    
    選項 說明
    --chip, -c 晶片型號, 可用 auto, esp8266, esp32, esp32s2, esp32s3beta2, esp32s3, esp32c3, esp32c6beta, esp32h2beta1, esp32h2beta2, esp32c2
    --port, -p 連接埠
    --baud, -b 上傳速率

    最後的兩個參數是 spiffs 分割區的位址以及映像檔的路徑, 分割區位址可由分割設定檔中取得。

    esptool 工具放在 packages\esp32\tools\esptool_py 下。

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is 100% worth it for your career.

Okay let's go

Community matters

Top comments (0)

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More