M5Stack-SD-Updater
https://github.com/tobozo/M5Stack-SD-Updater
READMEにも”Gamebuino”みたいなのを作った! と書かれている通り、Gamebuinoのブートローダのような動きをするアプリケーション。
これを使うことでSDカードに入れてあるバイナリをM5Stack単体で焼き直すことができる。
Gamebuinoの時はメニューに戻る機能もブートローダーに入っていたように思うが、これの場合は、各アプリに実装する必要があるようだ。
これはブートローダに手を入れず、ESP32のOTAアップデートの機能を流用していることによる制限だろう。
これはOTAの仕組みを使ったものらしい
SDカードにあるファームウェアのバイナリを、OTA領域に書き込んでリブートする
あとはOTAと同様に起動時にOTA領域を実行領域に戻すのだろう。
これはESP8266の例だが・・たぶん似たようなもの https://arduino-esp8266.readthedocs.io/en/latest/ota_updates/readme.html#update-process-memory-view
パーティションテーブルはこれか?
https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv
最近の更新が無いので正しいのか気になる
対象となるプログラムにはあらかじめmenu.binを焼き戻す機能を実装しておく
これが無くてもmenu.binから焼きこむことはできるが、menu.binに戻る方法がなくなる
https://gyazo.com/16b38c2e38249019cd7576b050bbede5