ブログ
ESP32 への書き込み:esptool・消去・ダウンロードモード
ESP32 への書き込み方法、トラブル時の消去方法、沈黙した基板を復活させる方法——書き込みは ESP32 プロジェクトなら誰もが頼る基礎スキルです。短い回答と実戦向けのコマンドでまとめました。
ESP32 に書き込むには?
まっとうな方法は 3 つあります。Arduino IDE、esptool.py、Flash Download Tool です。どれも同じバイト列を書き込みます。IDE は 460800 baud で esptool を呼び出しています。921600 でタイムアウトするときは、460800 でほぼ動きます。失敗する速度は基板次第です。初めての基板なら、はじめての ESP32 ガイドでみんなが飛ばすドライバー手順を先に確認してください。
書き込み時、実際に何が書き込まれるの?
3 つです。ブートローダー(0x1000)、パーティションテーブル(0x8000)、アプリケーション(0x10000)。0x0 はフラッシュの先頭で、デフォルトでは何も置かれていません。消去すると 3 つとも消えるので、消した直後のチップは 3 つが戻るまで起動しません。Arduino IDE はアップロードのたびに全部を組み直してくれます。
ESP32 に書き込む手順は?
今まで私が最も失敗しなかった手順です。まず USB チップ用のドライバーを入れます。安価な基板の多くは CH340、その他は CP2102 が多いです。挿して COM ポートを確認し、esptool.py --port COM5 write_flash 0x1000 bootloader.bin 0x8000 partitions.bin 0x10000 app.bin を実行します。それとケーブルも確認してください。私は充電専用の USB ケーブルで 1 晩潰したことがあります。基板に電源は入るのにデータが通らないやつです。
ESP32 WROOM に書き込むには?
WROOM モジュールには USB ブリッジがないので、書き込み方法は基板次第です。USB シリアルアダプターを TX、RX、EN、GPIO0 に配線し、電源投入時に GPIO0 を Low に保持してから、通常どおり書き込みます。「esp32 wroom にはフラッシュが入っているのか」という質問——答えは入っています。WROOM-32 なら 4 MB です。ただし自動リセット回路がないので、裸のモジュールは毎回手動でダウンロードモードに入れる必要があります。
Arduino で ESP32 に書き込むには?
Tools → Board で基板を選び、Tools → Port で COM ポートを選び、Tools → Upload Speed で 460800 を選び、Upload を押すだけです。IDE はブートローダー、パーティション、アプリを 1 クリックで書き込み、自動リセット回路のある基板ならダウンロードモードにも自動で入れてくれます。止まるときはドライバーかケーブルが原因です。
ESP32 Flash Download Tool の使い方は?
Espressif の Flash Download Tool は、IDE より古い Windows 用の GUI ツールです。.bin ファイルを追加し、それぞれの横にアドレスを入力します。0x1000 がブートローダー、0x8000 がパーティションテーブル、0x10000 がアプリです。SPI モードとフラッシュサイズを選んで START を押せば完了です。「esp32 s2 mini に espeasy を書き込む方法」を探していた方も、この手順が第 1 歩になります。
ESP32 のフラッシュを消去するには?
esptool.py erase_flash でチップをまっさらにできます。ブートループ、パーティション破損、新しいファームウェアを受け付けない基板の定番対処です。消したあとはブートローダー、パーティション、アプリが戻るまで起動しないので、IDE の次のアップロードでまとめて入れてください。ピンポイントで消したいなら、erase_region 0x9000 0x6000 で NVS 設定領域だけを消せます。
書き込みで基板が壊れることはある?
書き込み自体では壊れません。フラッシュのセルはセクターごとに約 10,000 回の消去サイクルに耐えます。「ESP32 は壊れるまで何回書き込めるのか」の答えは数千回です。開発中にそこまで到達することはありません。基板を本当に壊すのは、3.3V ピンへの 5V 印加や電源の逆接続です。
アップロード成功なのに動かないのはなぜ?
たいてい Flash Size の設定ミスです。IDE が 4 MB だと思っていて実際は 2 MB だと、ブートローダーはアプリを間違った場所に探しに行きます。モジュールに合わせて設定し直して再アップロードしてください。「ESP32 のフラッシュを確認する方法」を知りたいなら、esptool.py read_flash 0x0 0x400000 dump.bin でアプリがどこに書かれたか分かります。イメージが正しいのに起動時にクラッシュするなら、それはデバッグの領域です。デバッグ FAQ をご覧ください。
Flash Download Tool を使うなら esptool は不要?
不要です。どちらも同じフラッシュを書き込むので、1 つあれば足ります。自動化なら esptool.py が勝ち、Windows なら GUI が勝ちます。Arduino IDE は最初から esptool を内蔵しているので、多くの方はどちらにも触れません。書き込みのナレッジベースに両方の手順があります。変わったチップの場合は、どちらも挙動が怪しいことがあるくらいです。