サイズの大きいESP32のプログラムを作成した場合に、デフォルトのパーティションテーブルままではフラッシュメモリのプログラム領域が不足してプログラムをアップロードできない場合がある。
PlatformIO IDE for VSCode を利用した開発でESP32のPartition Tableを指定する方法につて備忘録として書いておく。
パーティションテーブルの指定方法
PlatformIO IDE for VSCodeのプロジェクトの platformio.ini で partition table を指定することができる。たとえば、以下では、min_spiffs.csvにpartition table情報が含まれていることを表す。
[code]
board_build.partitions = min_spiffs.csv
[/code]
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 メモリサイズを大きくする方法」にも詳しい。