PlatformIO IDE for VSCode におけるESP32 Partition Tableの指定方法

サイズの大きいESP32のプログラムを作成した場合に、デフォルトのパーティションテーブルままではフラッシュメモリのプログラム領域が不足してプログラムをアップロードできない場合がある。

PlatformIO IDE for VSCode を利用した開発でESP32のPartition Tableを指定する方法につて備忘録として書いておく。

パーティションテーブルの指定方法

PlatformIO IDE for VSCodeのプロジェクトの platformio.ini で partition table を指定することができる。たとえば、以下では、min_spiffs.csvにpartition table情報が含まれていることを表す。

board_build.partitions = min_spiffs.csv

http://docs.platformio.org/en/latest/platforms/espressif32.html#partition-tables にpartition tableの指定方法が記載されている。

次のスクリーンショットでは、パーティション情報を min_spiffs.csv で指定している。 min_spiffs.csv はプロジェクトのホームディレクトリ(platformio.iniと同じディレクトリ)に置いておく必要がある。

Arduino core for ESP32のパーティションテーブル

Arduino core for the ESP32 の arduino-esp32/tools/partitions/ にArduino IDEなどで選択する際に利用されるパーティションテーブルの CSVファイルがある。

https://github.com/espressif/arduino-esp32/blob/master/boards.txt の記述によれば Arduino IDE の ツールメニューから Partition Scheme を選ぶ際の選択肢とファイル、最大サイズとの対応関係は以下の通り。

Arduino IDE での Partition Schemeの選択肢 CSVファイル 最大アップロードサイズ
Default [初期値] default.csv
Minimal (2MB FLASH) minimal.csv
No OTA (Large APP) no_ota.csv 2097152
Minimal SPIFFS (Large APPS with OTA) min_spiffs.csv 1966080

上記とは異なるパーティション構成が必要な場合には以下に示すパーティションテーブル構造に従って、自分でCSVファイルを作成する必要がある。

ESP32のパーティションテーブル構造

パーティションテーブルの構造は、ESP-IDF Programming Guide の Docs » API Guides » Partition Tables に記載してある。

また、「ESP-WROOM-32 ( ESP32 ) SPIFFS メモリサイズを大きくする方法」にも詳しい。