2024/06/03 電子書籍「電子書籍出版・技術文書作成を劇的に加速!秀丸エディタ + Markdown + Pandocの驚異」を出版

platformio.iniファイルのPartition Tableの設定方法

ESP32

PlatformIOで8Mバイトまたは16MバイトのM5StackやESP32を使用する場合は、Partition Tableを指定する必要があります。 アプリケーションのサイズやSPIFFSの指定など、Partition Tableを使用して変更することができます。

board_build.partitionsオプション

「platformio.iniファイル」の、「board_build.partitions」で、Partition Tableを指定します。

以下の記事も参考にしてください。

パーテーションファイルのサンプル

arduino-esp32/tools/partitionsに、パーテーションファイルのサンプルがあります。

ファイル名Flashapp0OTAspiffs/fatspiffs/fat
default.csv4M1,310,7201,441,792spiffs
default_ffat.csv4M1,310,7201,441,792fat
huge_app.csv4M3,145,728×917,504spiffs
min_spiffs.csv4M1,966,080131,072spiffs
no_ota.csv4M2,097,152×1,966,080spiffs
noota_3g.csv4M1,048,576×3,014,656spiffs
noota_3gffat.csv4M1,048,576×3,014,656fat
noota_ffat.csv4M2,097,152×1,966,080fat
default_8MB.csv8M3,342,3361,572,864spiffs
max_app_8MB.csv8M8,257,536×0
default_16MB.csv16M6,553,6003,538,944spiffs
large_spiffs_16MB.csv16M4,718,5927,208,960spiffs
app3M_fat9M_16MB.csv16M3,145,72810,354,688fat
ffat.csv16M2,097,15212,451,840fat
large_littlefs_32MB.csv32M4,718,59223,986,176spiffs
large_fat_32MB.csv32M4,718,59223,986,176fat

記述例

[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 をカスタマイズできます。

ESP32 partition calculator
Easily create or modify a partition table for the ESP32.

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のパーテーションファイルのサンプルがあります。

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