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)
現在のパーティション設定
Arduino core for the ESP32 が 2.0.17 の場合、用意されているパーティション設定には、以下のようなものがあります。
パーティション設定名称 | パーティション設定ファイル | アップロード最大サイズ |
---|---|---|
Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) | default.csv | 1310720 |
Default 4MB with ffat (1.2MB APP/1.5MB FATFS) | default_ffat.csv | 1310720 |
8M with spiffs (3MB APP/1.5MB SPIFFS) | default_8MB.csv | 3342336 |
Minimal (1.3MB APP/700KB SPIFFS) | minimal.csv | 1310720 |
No OTA (2MB APP/2MB SPIFFS) | no_ota.csv | 2097152 |
No OTA (1MB APP/3MB SPIFFS) | noota_3g.csv | 1048576 |
No OTA (2MB APP/2MB FATFS) | noota_ffat.csv | 2097152 |
No OTA (1MB APP/3MB FATFS) | noota_3gffat.csv | 1048576 |
Huge APP (3MB No OTA/1MB SPIFFS) | huge_app.csv | 3145728 |
Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) | min_spiffs.csv | 1966080 |
16M Flash (2MB APP/12.5MB FATFS) | ffat.csv | 2097152 |
16M Flash (3MB APP/9.9MB FATFS) | app3M_fat9M_16MB.csv | 3145728 |
RainMaker | rainmaker.csv | 3145728 |
上記は、「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進表記。
実際の設定ファイルは以下にあります。
設定ファイルの中身。
各パーティションの開始オフセットとサイズが記載されています。
パーティション設定追加方法
boards.txt
「boards.txt」に追加します。
「testPartitionScheme」という名称で追加しています。
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」というファイル名称で追加しています。
今回は、「アプリ: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系 でそれぞれ出来ることが異なるため、結局どちらも使用することになってます。
コメント