[ESP32]Partition Scheme 新規パーティション設定追加 with Arduino IDE

ESP32

Partition Scheme 新規パーティション設定追加

はじめに

Arduino IDE で開発する場合、パーティション設定はいつくか用意されていますが、用意されているパーティション設定では満足できなくなる時がくるかもしれません。
その時は自分でパーティション設定を作成することができます。

開発環境

OS : Windows 11 Pro
ESP32:ESP32 C3 SuperMini
統合開発環境 : Arduino IDE 1.8.19
Arduino core for the ESP32:2.0.17
ボード設定:ESP32 Dev Module
使用ライブラリ:なし

本方法では、Arduino IDE 2.0 系では反映されません。そのため、パーティション設定を追加する場合は、Arduino IDE 1.0 系をお使いください。

使用パーツ

ESP32開発ボード(38Pin)

ESP32 Development Board ESP-32S NodeMCU-32S MICRO/TYPE-C Wireless Module WiFi+Bluetooth ESP-WROOM-32 IOT Expansion Board - AliExpress 502
Smarter Shopping, Better Living! Aliexpress.com

現在のパーティション設定

Arduino core for the ESP32 が 2.0.17 の場合、用意されているパーティション設定には、以下のようなものがあります。

パーティション設定名称パーティション設定ファイルアップロード最大サイズ
Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)default.csv1310720
Default 4MB with ffat (1.2MB APP/1.5MB FATFS)default_ffat.csv1310720
8M with spiffs (3MB APP/1.5MB SPIFFS)default_8MB.csv3342336
Minimal (1.3MB APP/700KB SPIFFS)minimal.csv1310720
No OTA (2MB APP/2MB SPIFFS)no_ota.csv2097152
No OTA (1MB APP/3MB SPIFFS)noota_3g.csv1048576
No OTA (2MB APP/2MB FATFS)noota_ffat.csv2097152
No OTA (1MB APP/3MB FATFS)noota_3gffat.csv1048576
Huge APP (3MB No OTA/1MB SPIFFS)huge_app.csv3145728
Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)min_spiffs.csv1966080
16M Flash (2MB APP/12.5MB FATFS)ffat.csv2097152
16M Flash (3MB APP/9.9MB FATFS)app3M_fat9M_16MB.csv3145728
RainMakerrainmaker.csv3145728

上記は、「boards.txt」に記載されています。

boards.txtArduino IDE インストール場所 →「C:\Users\xxxxxxxx\AppData\Local\Arduino15」)

Arduino IDE インストール場所\packages\esp32\hardware\esp32\2.0.17\boards.txt

esp32.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
esp32.menu.PartitionScheme.default.build.partitions=default
esp32.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
esp32.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
esp32.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS)
esp32.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
esp32.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
esp32.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
esp32.menu.PartitionScheme.minimal.build.partitions=minimal
esp32.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
esp32.menu.PartitionScheme.no_ota.build.partitions=no_ota
esp32.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
esp32.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
esp32.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
esp32.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
esp32.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
esp32.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
esp32.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
esp32.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
esp32.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
esp32.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
esp32.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
esp32.menu.PartitionScheme.huge_app.build.partitions=huge_app
esp32.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
esp32.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
esp32.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
esp32.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
esp32.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS)
esp32.menu.PartitionScheme.fatflash.build.partitions=ffat
esp32.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
esp32.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS)
esp32.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
esp32.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
esp32.menu.PartitionScheme.rainmaker=RainMaker
esp32.menu.PartitionScheme.rainmaker.build.partitions=rainmaker
esp32.menu.PartitionScheme.rainmaker.upload.maximum_size=3145728

「ESP32 Dev Module」の場合は、673行目付近に記載されていると思います。
各ボード毎に記載されているため、別のボードを使用している場合は、ボード名称で検索してみてください。

①esp32.menu.PartitionScheme.××××××××=○○○○○○○○
②esp32.menu.PartitionScheme.××××××××.build.partitions=△△△△△△△△
③esp32.menu.PartitionScheme.××××××××.upload.maximum_size=□□□□□□□□
××××××××:Arduino IDE が認識するための名称。
○○○○○○○○:Arduino IDE で表示する名称。
△△△△△△△△:設定ファイルの名称。この末尾に「.csv」を付与したファイルと紐づきます。
□□□□□□□□:Arduino IDE からアップロードする時の最大アプリサイズ。10進表記。

実際の設定ファイルは以下にあります。

パーティション設定ファイルArduino IDE インストール場所 →「C:\Users\xxxxxxxx\AppData\Local\Arduino15」)

Arduino IDE インストール場所\packages\esp32\hardware\esp32\2.0.17\tools\partitions\

設定ファイルの中身。

各パーティションの開始オフセットとサイズが記載されています。

パーティション設定追加方法

boards.txt

boards.txt」に追加します。
「testPartitionScheme」という名称で追加しています。

boards.txtArduino IDE インストール場所 →「C:\Users\xxxxxxxx\AppData\Local\Arduino15」)

Arduino IDE インストール場所\packages\esp32\hardware\esp32\2.0.17\boards.txt

esp32.menu.PartitionScheme.testPartitionScheme=TestPartitionScheme (1.5MB APP with OTA/1.0MB SPIFFS)
esp32.menu.PartitionScheme.testPartitionScheme.build.partitions=TestPartitionScheme
esp32.menu.PartitionScheme.testPartitionScheme.upload.maximum_size=1507328

アップロード最大サイズは、パーティション設定ファイルのアプリサイズに合わせて10進表記で記載してください。

パーティション設定ファイル

パーティション設定ファイルを追加します。
TestPartitionScheme.csv」というファイル名称で追加しています。

TestPartitionScheme.csvArduino IDE インストール場所 →「C:\Users\xxxxxxxx\AppData\Local\Arduino15」)

Arduino IDE インストール場所\packages\esp32\hardware\esp32\2.0.17\tools\partitions\TestPartitionScheme.csv

今回は、「アプリ:1.7Mbyte/OTAあり/SPIFFS:1.0Mbyte」という設定にしています。

サイズを変更すると、次のパーティション開始オフセットも合わせて変更してください。
OTAなしの場合は、app1の行を削除してオフセットとサイズを合わせます。

OTAとは、アプリを起動したまま更新アプリをESP32へインストールすることができる機能です。
そのため、起動中のパーティションと更新するためのパーティションの2つ(app0/app1)が存在します。
Wifiを使用して遠隔でアプリ更新する時などに使用します。

boards.txt」の修正と「TestPartitionScheme.csv」の追加が終われば、Arduino IDE を再起動して確認してみます。

おわりに

Arduino IDE 2.0系では対応していないのが残念です。Arduino IDE 1.0系 と Arduino IDE 2.0系 でそれぞれ出来ることが異なるため、結局どちらも使用することになってます。

コメント

タイトルとURLをコピーしました