PlatformIOで8Mバイトまたは16MバイトのM5StackやESP32を使用する場合は、Partition Tableを指定する必要があります。 アプリケーションのサイズやSPIFFSの指定など、Partition Tableを使用して変更することができます。
board_build.partitionsオプション
「platformio.iniファイル」の、「board_build.partitions」で、Partition Tableを指定します。
以下の記事も参考にしてください。
パーテーションファイルのサンプル
arduino-esp32/tools/partitionsに、パーテーションファイルのサンプルがあります。
ファイル名 | Flash | app0 | OTA | spiffs/fat | spiffs/fat |
---|---|---|---|---|---|
default.csv | 4M | 1,310,720 | ○ | 1,441,792 | spiffs |
default_ffat.csv | 4M | 1,310,720 | ○ | 1,441,792 | fat |
huge_app.csv | 4M | 3,145,728 | × | 917,504 | spiffs |
min_spiffs.csv | 4M | 1,966,080 | ○ | 131,072 | spiffs |
no_ota.csv | 4M | 2,097,152 | × | 1,966,080 | spiffs |
noota_3g.csv | 4M | 1,048,576 | × | 3,014,656 | spiffs |
noota_3gffat.csv | 4M | 1,048,576 | × | 3,014,656 | fat |
noota_ffat.csv | 4M | 2,097,152 | × | 1,966,080 | fat |
default_8MB.csv | 8M | 3,342,336 | ○ | 1,572,864 | spiffs |
max_app_8MB.csv | 8M | 8,257,536 | × | 0 | |
default_16MB.csv | 16M | 6,553,600 | ○ | 3,538,944 | spiffs |
large_spiffs_16MB.csv | 16M | 4,718,592 | ○ | 7,208,960 | spiffs |
app3M_fat9M_16MB.csv | 16M | 3,145,728 | ○ | 10,354,688 | fat |
ffat.csv | 16M | 2,097,152 | ○ | 12,451,840 | fat |
large_littlefs_32MB.csv | 32M | 4,718,592 | ○ | 23,986,176 | spiffs |
large_fat_32MB.csv | 32M | 4,718,592 | ○ | 23,986,176 | fat |
記述例
[env:m5stick-c]
platform = espressif32
board = m5stick-c
framework = arduino
lib_deps =
m5stack/M5Unified@^0.1.10
earlephilhower/ESP8266Audio@^1.9.7
board_build.partitions = default.csv
monitor_speed = 115200
upload_speed = 1500000
board_build.f_flash = 80000000L
board_build.flash_mode = qout
パーテーションファイル
パーテーションファイル default.csv の中身は、
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x140000,
app1, app, ota_1, 0x150000,0x140000,
spiffs, data, spiffs, 0x290000,0x160000,
coredump, data, coredump,0x3F0000,0x10000,
となっています。
ESP32 Partition Calculator
ESP32 partition calculator を使用する事で、ESP32 の Partition をカスタマイズできます。
nvs
nvs は、Non-Volatile Storage の略で、不揮発性メモリの事です。nvsもFlashメモリ上に確保されます。元々、Flashメモリは、電源をOFFしても中身が消えないメモリです。
nvsの使い方の一つとして、Preferencesライブラリを使用して、アプリケーションのさまざまなパラメーターを保存することができます。
Preferencesライブラリの使い道としては、以下のようなものが挙げられます。
- アプリケーションの設定値やパラメーターを保存する
- ユーザーのログイン情報や設定を保存する
- 履歴や統計情報を保存する
- ゲームのハイスコアや記録を保存する
- センサーのデータを保存する
NVS及びPreferencesライブラリに関しては、以下のHP,記事も参照ください。
otadata
ESP32のotadataエリアは、OTA(Over-The-Air)アップデートに使用されます。OTAアップデートとは、ESP32のファームウェアを無線で更新する機能です。
otadataエリアは、ESP32のSPI Flashメモリの一部で、サイズは8KBです。otadataエリアには、OTAアップデートに必要なデータが保存されます。具体的には、以下のデータが保存されます。
- アップデートファイルのSHA256ハッシュ値
- アップデートファイルのサイズ
- アップデートファイルの署名
ESP32のarduinoライブラリィの中に、espota.exe がありこのアプリを使用して、OTAでのアプリケーションのアップデートが可能です。
app0, app1
ESP32のapp0とapp1は、ESP32のSPI Flashメモリの一部であり、それぞれアプリケーションを保存するために使用されます。app0は、ESP32が起動時に最初に起動するアプリケーションであり、通常はメインアプリケーションです。app1は、app0に代わるアプリケーションであり、OTAアップデートやテスト目的で使用されます。
パーテーションファイルによっては、アプリケーションのエリアサイズを確保するためにapp0しかない場合があります。その場合は、OTAアップデートは出来ませんので注意してください。
spiffs or fat
ESP32のファイルシステムには、以下の2種類があります。
- SPIFFS:ESP32のSPI Flashメモリに独自のファイルシステムを搭載する構成です。
- FAT:WindowsやmacOSなどのOSで一般的に使用されているFATファイルシステムを搭載する構成です。
ESP32のアプリケーション開発において、ファイルシステムは以下の用途に活用できます。
- 設定ファイルの保存
- ログファイルの保存
- データベースの保存
- 画像や音声ファイルの保存
spiffs
ESP32のSPIFFSは、ESP32のSPI Flashメモリにファイルシステムを搭載する構成です。ファイルシステムとは、データをファイルやディレクトリに整理して保存するための仕組みです。
SPIFFSを使用すると、ESP32のSPI Flashメモリに、テキストファイル、画像ファイル、音声ファイル、その他のデータファイルを保存することができます。また、ディレクトリを作成して、ファイルを整理することもできます。
SPIFFSを使用するメリットとしては、以下のようなものが挙げられます。
- データを簡単に保存・管理できる
- アプリケーションのサイズを小さくできる
SPIFFSの基本的な使い方
以下に、SPIFFSの基本的な使い方を説明します。
SPIFFSを有効にする
#include <SPIFFS.h>
void setup() {
// SPIFFSを有効にします
SPIFFS.begin();
}
ファイルを作成する
// ファイルを作成します
File file = SPIFFS.open("my_file.txt", "w");
// ファイルにデータを書き込みます
file.write("Hello, world!");
// ファイルを閉じます
file.close();
ファイルを読み込む
// ファイルを開きます
File file = SPIFFS.open("my_file.txt", "r");
// ファイルからデータを読み込みます
String data = file.readString();
// ファイルを閉じます
file.close();
ディレクトリを作成する
// ディレクトリを作成します
SPIFFS.mkdir("/my_directory");
ディレクトリからファイルを削除する
// ファイルを削除します
SPIFFS.remove("/my_file.txt");
ディレクトリを削除する
// ディレクトリを削除します
SPIFFS.rmdir("/my_directory");
FAT
FAT を使用すると、spiffsと同様にESP32 の SPI Flash メモリに、テキストファイル、画像ファイル、音声ファイル、その他のデータファイルを保存することができます。また、ディレクトリを作成して、ファイルを整理することもできます。
参考URL
以下のHPも参考にしてください。
espressif/arduino-esp32のPartition Tablesの公式リファレンスです。
espressif/arduino-esp32のパーテーションファイルのサンプルがあります。
ESP32のPartition Tableの書き方について詳細な説明してくれています。
ESP32のPartition Tableについての説明してくれています。それから、Arduino IDEで、独自のPartition設定を行う方法についても説明してくれています。