概要
ESP32シリーズのフラッシュをブラウザから分析するためのツールを作ってみました。書き込みをするツールはあるのですが、ブラウザ上でフラッシュの内容を呼び出して保存してあるデータを分析が可能です。
作成物

上記のリポジトリになります。汎用的なJavaScriptライブラリとそれを利用した画面例になります。
実際に試せる画面

通常は上記に画面でブラウザから直接読み込んで使うことが可能です。やっていることはブラウザからWeb Serialを利用してESP32シリーズに接続しています。最初に先頭にあるパーティションテーブルを呼び出して、フラッシュの利用領域を確認しています。
その後にパーティション別に分析を行い画面に表示させています。ESP32のパーティションに関しては資料は用意されているのですが、あまり分析ツールがありません。
標準のESP32だと最後に接続したWi-FiアクセスポイントのSSIDやKEYがnvs上に保存されていたりと、中身を除かれない前提の作りになっています。しかしながらちょっと分析すればわかることなので、今回ブラウザ上で分析できるツールを公開してみました。
パーティションテーブル分析

左側に一覧がありますが、同じものを表示しています。

Hexタブを選択すると、実際のバイナリデータを確認できます。
nvs分析

NVSに保存しているデータの確認ができます。破線のデータは消えている過去データになります。編集から値を上書きをして、NVSデータを再生成して書き戻すことも可能です。設定値などをNVSに保存しているものは直接フラッシュ経由で上書きが可能です。
otadata

次にどっちのアプリ領域から起動するかなどが設定されている領域です。ここはまだ編集機能はつけていません。
FS

SPIFFSなどのファイルシステムも直接分析して、中に入っているファイルを確認したり、ファイルを入れ替えたり追加したりが可能です。こちらも編集したあとにパーティションのデータを再生成して、そのファイルを書き戻す処理になります。
コアダンプ

コアダンプ領域にはハングアップしたときの情報が保存されています。上記はBLEでリセットしたときのものですね。
まとめ
ブラウザ上からフラッシュの中身を確認したり、書き換えできるのは非常に便利です。反面Wi-Fiのアクセスポイントや各種設定が抜き出しできるのはちょっと怖いです。とはいえ、普通のESP32はこんな感じの保存方法なので分析すればすぐに確認できる内容となります。
逆にここまですぐに分析できることを知ってからESP32を使った方が便利に使えるとは思います。


コメント