2025年9月27日土曜日

SPIFFSからLittleFSへのプログラム変換

  SPIFFSが非推奨となり、今度はLittleFSに移行していきます。

 この時に、今まで作成してきたプログラムをLittleFSに対応させるためには、SPIFFSクラスの命令をすべて置き換える必要があります。ありがたいことに、SPIFFSの命令は、LitteleFSになっても、クラス名を変えるだけでそのまま利用できます。


SPIFFSのサンプルをLittleFSに対応させる

 プログラムの大きな変更をすることなく、LittleFSに対応させることを想定してブログアップしています。SPIFFSのサンプルプログラム「SPIFFS_Test」をもとにして、LittleFSに対応させる変更点です。

 
 まず、そのまま「SPIFFS_Test」を実行します。
 実行結果が右図です。下線部分はSPIFFSに1MBを書き込む時間と読み込む時間を表しています。

 書き込み 約37秒
 読み出し 約0.5秒


 LittleFSに変更させるため、プログラム変更します。

#include "FS.h"

#define LITTLEFS on
#ifdef LITTLEFS            //LITTLEFSが定義されている時実行
  #include "LittleFS.h"
  #define SPIFFS LittleFS
#else                   //LITTLEFSが定義されてない時
  #include "SPIFFS.h"
#endif

/* You only need to format SPIFFS the first time you run a
   test or else use the SPIFFS plugin to create a partition
   https://github.com/me-no-dev/arduino-esp32fs-plugin */
#define FORMAT_SPIFFS_IF_FAILED true

 3行目から9行目が追加した部分です。「#ifndef」 のディレクティを使い、「LITTLEFS」が定義されているときは5行目でLittleFSをインクルードし、6行目でプログラム中の「SPIFFS」を「LittleFS」に置き換えるように#defineにて定義しています。


 実行結果が右図です。プログラムをLittleFS対応に変更しましたので、下線部分はLittleFSに1MBを書き込む時間と読み込む時間を表しています。

 書き込み 約5秒
 読み出し 約0.2秒



 これの2つの実行結果を比較すると、LittleFSの方が書き込みで約7倍、読み込みで約2倍速いことが確認できます。

 この変更したプログラムでは、SPIFFSとLittleFSの両方に対応しており、3行目の「#define」文をコメントアウトすると、SPIFFS対応になります。

LittleFSに対応させるプログラム変更

 SPIFFSからLittleFSに変更するとき、プログラム中の「#include "SPIFFS.h"」の1行を次の2行に置き換えます。

#include "LittleFS.h"
#define SPIFFS LittleFS
 これだけの変更で、LittleFS対応となります。

0 件のコメント:

コメントを投稿

LEDマトリックス表示装置の設計・製作 9(画像表示)

  LEDマトリックスに画像を表示させるには、いろいろな画像形式を知る必要があります。現在、よく使われるJPG形式やPNG形式は圧縮処理されて保存されています。これに対して、BMP形式やTIFF形式は非圧縮形式で、画像データがそのまま保存されています。このため、ファイルは大きくな...