PR 記事には広告が含まれています
スポンサーリンク
Translate

16MBフラッシュのESP32-WROVERでSPIFFSを最大限使えるようにする設定方法

スポンサーリンク

ESP32-WROVERシリーズには、16MBのフラッシュを搭載したモデルがあります。

このフラッシュにSPIFFSで、大きなファイルやたくさんのファイルを保存ようとしたのですが、Arduino IDE環境では、16MB仕様のESP32-WROVERでSPIFFSを使用する設定がありません。

最大でも3MBとなってしまいます。そのため、せっかく広大なフラッシュメモリがあるのに、標準で用意されている設定は、SPIFFSで数MBしか利用することができません。

そこで、既存の設定ファイルを流用して、プログラムは2MB、OTA用が2MB、残り12MBを全てSPIFFSに利用できる設定を追加してみました。

スポンサーリンク

Partitionファイルを作る

フラッシュメモリにどのようにデータやプログラムを配置するかを設定するファイルです。

Macの場合、/Users/ユーザー名/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/tools/partitions/

に入っています。1.0.4はバージョンによって変わると思います。

ここに入っているファイルを参考に、APP:2MB OTA:2MB SPIFSS:12MBの設定ファイルを作ります。

no_ota.csvをコピーしてlarge_spiffs12MB_16MB.csvを作ります。中のパラメータを、以下のように修正します(赤字の部分を修正)。

# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x200000,
app1, app, ota_1, 0x210000,0x200000,
spiffs, data, spiffs, 0x410000,0xBF0000,

ここで作ったファイルは、こちらよりダウンロードもできます。

プログラムは2MB、OTA用が2MB、残りを全てSPIFFSにしています。

このファイルを先ほどの、

/Users/ユーザー名/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/tools/partitions/

に保存します。

スポンサーリンク

Boards.txtに追記する

ESP32WroverボードのPartition Schemeに先ほどの設定が表示されるように、設定を追記します。

Macの場合

/Users/ユーザー名/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/boards.txt

にあります。

「esp32wrover.menu.PartitionScheme....」という行の終わりの次の行(1.0.4の場合、204行目)に以下を追加します。

esp32wrover.menu.PartitionScheme.large_spiffs=16MB Flash (2MB APP/12MB SPIFFS)
esp32wrover.menu.PartitionScheme.large_spiffs.build.partitions=large_spiffs12MB_16MB
esp32wrover.menu.PartitionScheme.large_spiffs.upload.maximum_size=2097152

これで、先ほどのパーテション設定がメニューに表示されるようになります。

スポンサーリンク

Arduino IDEを再起動

設定を有効にするために、いったんArduinoを終了させてから、起動し直します。

[ツール]→[Partition Scheme]の最後に先ほど追加した設定が表示されるようになりました。

試しに3.4MB分のファイルをESP32 Sketch Data Uploadでアップロードしてみました。

上の図のメッセージのように12MBのデータが正常に書き込まれていることがわかりました。

スポンサーリンク

SPIFFSが12MB利用できるようになった

以上の設定で、SPIFFSが12MB利用できるようになりました。APPやOTAの領域を削減することで、もっと広いSPIFFSが利用できるようにもなります。

ESP32-WROVERシリーズの16MB仕様で、SPIFFSを最大限利用するための設定方法でした。