はじめに
Arduinoでコンパイルしたバイナリを複数のESP32に連続書き込みする方法です。
毎回,コンパイル→リンク→UPLOADすると時間がかかり過ぎますが,
esptool.exe に引数を書くのは難しく,ある程度,簡単に実現できる方法をメモします。
開発環境
Arduino IDE 2.00(beta.9) on windows10 2021/07/21 確認
IDE のバージョンは問わないと思いますので読み替えてください。
手順
1.Arduino IDE 設定
2.コンパイル→書き込みスクリプトコピー
1回目は通常のコンパイル→UPLOADを実行します。
成功するとUPLOADスクリプトが生成され実行され ESP32に書き込まれるので,
画像の行をクリップボードにコピーします。
ダブルクリックすると1行まるごと選択されますが,かなり長いです。
3.スクリプト編集
(Arduino 1.x 系はここは不要と思います)
スクリプトにダブルクオーテーション(") が含まれるので消去します。
メモ帳を開き,コピーしたスクリプトをペースト。
編集(E)→置換(R) (CTRL+H) により(") を消去します。
4.upload
コマンドプロンプトを開き,3で修正したスクリプトを実行します。
・スタートメニューに"cmd" と入力するとコマンドプロンプト(通称:黒い画面)が現れます。
・コピーしたスクリプトはコマンドプロンプト画面で右クリックすると,いきなり実行されますので,ESP32を接続しておくと良いでしょう。
5.繰り返し
コマンドプロンプト画面でカーソルの上を押すたびに履歴が表示されますので,1つ前の履歴を表示,そのままENTERキーで連続書き込みができます。
後は無心で書込マシーンになりましょう。
何をやっているの?
スクリプトを見てみます。
esptool.exe を実行,大量の引数が生成されていて,
おおまかに以下の2ブロックになっています。
・ESP32の設定 (ArduinoIDE の設定から変更できます)
・それぞれのアドレスに4つのバイナリを書込
C:\Users\xxxx\-------\esp32\tools\esptool_py\3.0.0/esptool.exe
--chip esp32
--port COM3
--baud 921600
--before default_reset
--after hard_reset write_flash
-z
--flash_mode dio
--flash_freq 40m
--flash_size detect
0xe000 C:\Users\xxxx-------\esp32\1.0.6/tools/partitions/boot_app0.bin
0x1000 C:\Users\xxxx-------\esp32\1.0.6/tools/sdk/bin/bootloader_qio_40m.bin
0x10000 C:\Users\----\Temp\arduino-sketch-xx/ABCD.ino.bin
0x8000 C:\Users\-----\Temp\arduino-sketch-xx/ABCD.ino.partitions.bin
書込アダプタに依存しますが,baud 1500000 などでちょっとだけ高速化できます。
まとめ
ESP系は特にコンパイルが遅いので何台か作る時は有効なので,覚えておくと良いでしょう。
注意事項
・書込エラーを見逃しやすいので,注意しましょう。