###### tags: `ESP32` # 使用命令列工具上傳檔案到 ESP32 開發板 [arduino-esp32fs-plugin](https://github.com/me-no-dev/arduino-esp32fs-plugin) 外掛目前並不支援 Arduino IDE 2, 不過其實可以依照以下的步驟[利用命令列工具上傳檔案](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/spiffs.html): 1. 從 Arduino 的 preferences.txt 找到目前選擇的控制板型號、晶片平台以及分割 (partition) 方式: ``` board=d32 ... custom_PartitionScheme=d32_default ... target_platform=esp32 ``` 1. 目前平台可用的分割方式可在平台的 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 工具功能表下的分割方式選項文字, 第二行是對應的分割設定檔名稱。 1. 利用上述資訊, 即可找到分割設定檔, 例如 default 設定檔在 packages\esp32\hardware\esp32\2.0.5\tools\partitions\default.csv: ```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](https://github.com/igrr/mkspiffs) 工具從指定的資料夾建立該資料夾的 spiffs 映像檔: ``` # .\mkspiffs -c .\test_dir\ -s 0x170000 test.bin ``` |選項|說明| |---|---| |-c|要建立映像檔的資料夾, 所有要上傳到 ESP32 開發板的檔案都要放在這個映像檔內| |-s|映像檔的大小, 這可從 partition 設定檔中取得| mkspiffs 工具在 packages\esp32\tools\mkspiffs 下。 5. 製作好的映像檔可以透過 [esptool](https://docs.espressif.com/projects/esptool/en/latest/esp32/index.html) 上傳到 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 下。