ESP32で不揮発なフラッシュメモリを利用する。

ESP32のフラッシュメモリにおいて、不揮発なデータ(電源オンオフやプログラムの再ロードでも消えない)を書き込む方法について調べるといくつか見つかるので、違いを整理しておく。

ESP32において、不揮発なデータを書き込める領域は2か所あるみたい。このサイズはパーティション設定によって異なるのかも。

  • nvs: 20KiB?
  • spiffs: 大きめ

これをみると、nvsの方には設定などのデータ、spiffsの方にはキャッシュなど大き目のデータを保存しておくことになる?

書き込む方法(ライブラリ)もいくつかあります。

  • Preferences.h
  • EEPROM.h
  • SPIFFS.h

コードを読むとPreferences.hとEEPROM.hはnvsに書き込んでそうな関数コールがみつかった。(ので、nvsに書き込むと考えればよい?) ちなみに、EEPROM.hはDeprecatedになっているっぽい。

あとはフラッシュメモリの書き換え回数は1万回とか有限なので、頻繁に書きかえる用途で使うのはダメそう。