Arduino IDEでESP32フラッシュ削除プラグインを作ってみた

概要

Arduino IDEでメニューから「ESP32 Erase Flash」を選択すると、ESP32のフラッシュをすべて削除するプラグインを作ってみました。

開発環境構築

Arduino IDEはJavaで開発されているので、Javaの開発環境を準備する必要があります。

今回はArduio IDE自体をビルドできる環境を構築し、その環境で開発を行います。

上記オフィシャルWikiを参考に、CentOS7上で実験してみました。必要なパッケージをyumで導入すればビルド自体はすんなりできると思います。

プラグイン作成のサンプル解析

これ以外のプラグインを見たことがないのですが、ESP32のフラッシュ領域にdataフォルダに入っているファイルをアップするプラグインです。

これをコピーしてきて、見様見真似でコードを編集します。make.shの中身はちょっと編集しないと../../../と三階層上までjarファイルを探しに行っているところがあり、findが終わらなくなります。そして複数のファイルがあるとおかしな動きをします。。。

仕組み

フラッシュを削除する実行ファイルはesptoolで、オプションerase_flashを指定すると内容を削除してくれます。シリアルポートだけが必須で、転送速度はおそらく指定しなくても大丈夫だと思いますが、念の為指定しておきます。

esptool.py --port COM3 -b 1500000 erase_flash

作成物

上記が作成物です。使い方はArduino ESP32 filesystem uploaderとほぼ同じです。

正しく設置してからArduino IDEを再起動すると、上記のようにメニューに追加されます。

「ESP32 Erase Flash」を選択すると、ESP32のフラッシュが消されます!

esptool.py v2.6
Serial port COM3
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
MAC: ??:??:??:??:??:??
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 1500000
Changed.
Erasing flash (this may take a while)...
Chip erase completed successfully in 1.7s
Hard resetting via RTS pin...

まとめ

プラグインは結構かんたんに作ることができました。このプラグイン自体はあまり使うことがないのですが、プラグイン作成の流れがわかりました。

今後もう少し実用的なプラグインを作ってみたいと思っているので、その事前検証として実施してみました。

コメント

  1. くまじろう より:

    ESP-WROOM-32D開発ボードを使い始めたマイコン、プログラミング初心者です。

    最近、WiFiを使うスケッチを書き込むと、rebootingの繰り返しで起動しなくなりました。
    フラッシュメモリをクリアすることで解決するとの情報を他サイトで得ましたが、ESP-IDFをコマンドラインで扱うのは自分には敷居が高く、困っておりました。

    こちらのプラグインのおかげでWiFiが簡単に復活しました。
    大変助かりました。ありがとうございました。

    • たなかまさゆき より:

      復活してよかったですね!

      #include

      void setup() {
      Preferences preferences;
      preferences.clear();
      }

      ちなみに上記でもたぶん復活できます。

      M5StackのM5Burnerを使ってErase機能だけでもたぶん大丈夫です

      https://tanakamasayuki.github.io/WebSerialEsptool/Erase.html
      Chromeブラウザを使っている場合には、上記URLからWebSerialという機能を使ってEraseもできると思います。