LittleFS

SPIFFSで警告が

最近SPIFFSを使ったスケッチをコンパイルすると、

SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems.

と言う警告が出るようになりました。この警告の意味は、”SPIFFSは非推奨です。LittleFSか他のファイルシステムを考慮ください”。以前は警告無くコンパイル出来ていたのですが。スケッチ自体は問題無く動くのですが、コンパイルで警告が出るのはあまり気分の良いものでは無いので、LittleFSについて調べて見ました。

LittleFS

Webで検索すると、”https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html”を見つけました。SPIFFSと比較して違いを説明しています。

  • SPIFFSは現在非推奨で将来削除される可能性がある。
  • LittleFSの方がSIPFFSより何倍も高速
  • LittleFSがファイル名として使用出来のは32文字。実際には31文字+terminating
  • SPIFFSはdirectoryをサポートしていないが、LittleFSはサポートしている
  • Subdirectoryはスケッチ上から任意に製作、削除が可能。
  • SystemへのUploadは、ESP8266 LittleFS Data Uploadを使用
  • SPIFFSからLittleFSに変換するには、SPIFFS.begin()をLitt​​leFS.begin()に、SPIFFS.open()をLitt​​leFS.open()の様に行う

簡単に、”SPIFFS”から”LittleFS”に移行できそうです。

実際のスケッチ

簡単にスケッチを書いて見ました。

#include "LittleFS.h" 

void setup() 
{
  File dataFile;
  String buf;
  
    Serial.begin(115200);
    delay(500);

    LittleFS.begin();
    Serial.println("LittleFS started");

    dataFile = LittleFS.open("test.txt", "w");
    dataFile.println("root_dir");
    dataFile.close();
    
    dataFile = LittleFS.open("123/test.txt", "w");
    dataFile.println("sub_dir");
    dataFile.close();
    
    dataFile = LittleFS.open("test.txt", "r");
    buf = dataFile.readStringUntil('\n');
    dataFile.close();
    Serial.println("buf=" + buf);

    dataFile = LittleFS.open("123/test.txt", "r");
    buf = dataFile.readStringUntil('\n');
    dataFile.close();
    Serial.println("buf=" + buf);
    
}

void loop() 
{
  
}
  • 1行 #include “LittleFS.h”
    • ヘッダーの読み込み
  • 5行 File dataFile;
    • File型変数の宣言
  • 11行 LittleFS.begin();
    • LittleFSの開始
  • 14から16行 ファイルの新規作成(ルートディレクトリ) 
    • ルートディレクトリに、”root_dir”と書いた”test.txt”ファイルを作成。
  • 18から20行 ファイルの新規作成(サブディレクトリ) 
    • サブディレクトリに、”sub_dir”と書いた”test.txt”ファイルを作成。
  • 22から25行
    • ルートディレクトリの”test.txt”ファイル読み出しと表示。
  • 27から30行
    • サブディレクトリの”test.txt”ファイル読み出しと表示。

今回はESP8266を使用しています。スケッチを実行して下さい。シリアルモニタに

と結果が表示されます。正しく動作している様です。

データのUpload

SystemへデータをUploadするには、ESP8266 LittleFS Data Uploadをインストールする必要が有ります。”https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html”にインストール方法が説明されています。

  • Download the 2.6.0 or later version of the tool: https://github.com/earlephilhower/arduino-esp8266littlefs-plugin/releases
    • ダウンロードしたファイルを解凍すると、ESP8266LittleFS-2.6.0/ESP8266LittleFS/tool/esp8266littlefs.jar”が出来る。
    • コピーするのは解凍したファイルの、”ESP8266LittleFS”ホルダー。
  • スケッチのディレクトリに ”tools” ディレクトリがなければ製作。
    • スケッチディレクトリの場所ですがIDEで、ファイル>環境設定と選択すると、開いたウインドウの上部に、”スケッチブックの保存場所”が表示されます。
    • そこに”tools” ディレクトリがなければ製作。
  • ダウンロードしたファイルを解凍して”tools”にコピー
    • tools” ディレクトリに”ESP8266LittleFS”ホルダーをコピー
  • Arduino IDEを再起動。
  • スケッチを開いて、”スケッチ > スケッチフォルダーの表示”を選択
  • そこに、”data”フォルダーを製作。その中にデータファイルを保存。
  • ボードが正しく選ばれていることを確認.。シリアルモニタは閉じる。
    • IDEで、ツール>flash size を選択するとボードに合ったFlash Sizeを選択出来ます。
  • ボードを書き込み状態に設定。
  • IDEで、ツール>ESP8266 Sketch Data Uploadを選択してデータをUploadする。

SubDirectryを持ったデータのUpload

Upload するデータはスケッチ内の”data” ディレクトリに保存します。

  • ”data” ディレクトリに、”test.txt”を作成
    • ファイルの中身は、”root_dir” とする。
  • ”data” ディレクトリにSubDirectry、”123”を作成して、その中に、”test.txt”を保存
    • ファイルのパス: 123/test.txt
    • ファイルの中身は、”sub_dir” とする。

これで、”root_dir” と書かれた”test.txt”がルートディレクトリに、”sub_dir”と書かれた”test.txt”が、サブディレクトリ “123/” に保存された事になります。下記は各々のファイルを表示するスケッチです。

#include "LittleFS.h" 

void setup() 
{
  File dataFile;
  String buf;
  
    Serial.begin(115200);
    delay(500);

    LittleFS.begin();
    Serial.println("LittleFS started");

    dataFile = LittleFS.open("test.txt", "r");
    buf = dataFile.readStringUntil('\n');
    dataFile.close();
    Serial.println("buf=" + buf);

    dataFile = LittleFS.open("123/test.txt", "r");
    buf = dataFile.readStringUntil('\n');
    dataFile.close();
    Serial.println("buf=" + buf);
    
}

void loop() 
{
  
}

このスケッチをコンパイル。次に、ESP8266 Sketch Data Uploadを使ってデータをUploadした後、実行して下さい。シリアルモニタに想定通りの文字が表示されます。

最後に

確かにLittleFSはSPIFFSより機能が豊富です。でも一番嬉しいのは、サブディレクトリが使えることです。今後は、File systemとしてこの推奨されている、LittleFS を使って行きたいと思います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする