RP2350-Zero/LittleFS
LittleFS
Na rozdiel od EEPROM (jeden blok bajtov, adresovaný číslom) je LittleFS skutočný súborový systém – vieš v ňom mať viacero súborov s vlastnými menami, prípadne aj priečinky, podobne ako na počítači. Hodí sa vtedy, keď chceš uložiť viac dát (viac ako 4 kB) alebo dáta so štruktúrou (napr. samostatný súbor pre každé meranie).
Nastavenie dosky
Skôr než LittleFS použiješ, treba vo flash pamäti vyhradiť miesto pre súborový systém – v Arduino IDE to nastavíš cez Tools → Flash Size, kde zvolíš rozdelenie, ktoré obsahuje aj časť pre FS (napríklad niečo ako "2MB (Sketch: 1MB, FS: 1MB)" – presné položky menu sa môžu podľa verzie balíka pre RP2350 líšiť, tak si over aktuálny zoznam priamo v IDE). Bez tohto nastavenia LittleFS nemá kde fyzicky existovať a begin() zlyhá.
Štruktúra súborov
Všetky cesty v LittleFS začínajú od koreňového priečinka / – napríklad súbor data.txt uložený priamo v koreni má cestu /data.txt. LittleFS podporuje aj podpriečinky, takže si vieš dáta usporiadať napríklad takto:
/
├── config.txt
└── logs/
├── log_01.txt
└── log_02.txt
Priečinok si vytvoríš pomocou LittleFS.mkdir("/logs"), súbor v ňom potom otvoríš cestou /logs/log_01.txt.
Pred prvým použitím treba súborový systém "nabehnúť" (a pri prvom spustení na novej doske sa automaticky naformátuje):
#include <LittleFS.h>
void setup() {
Serial.begin(115200);
delay(1000);
if (!LittleFS.begin()) {
Serial.println("LittleFS sa nepodarilo spustit!");
return;
}
Serial.println("LittleFS pripraveny.");
}
void loop() {
}
Vytvorenie a zápis súboru
Mód "w" súbor vytvorí (ak neexistuje) alebo prepíše jeho obsah (ak existuje):
File f = LittleFS.open("/data.txt", "w");
if (f) {
f.println("Prvy riadok dat");
f.println("Druhy riadok dat");
f.close();
Serial.println("Zapisane.");
} else {
Serial.println("Nepodarilo sa otvorit súbor na zapis!");
}
Čítanie súboru
Mód "r" otvorí súbor len na čítanie – f.available() hovorí, či ešte zostávajú nejaké neprečítané bajty:
File f = LittleFS.open("/data.txt", "r");
if (f) {
while (f.available()) {
Serial.write(f.read());
}
f.close();
} else {
Serial.println("Súbor neexistuje!");
}
Appendovanie (pripájanie na konec)
Mód "a" na rozdiel od "w" existujúci obsah nevymaže – nový text sa pripíše na koniec súboru. Hodí sa napríklad na priebežné logovanie:
File f = LittleFS.open("/data.txt", "a");
if (f) {
f.println("Dalsi zaznam, ktory sa priplete na koniec");
f.close();
}
Poznámka: pred otvorením súboru sa oplatí overiť, či existuje, pomocou LittleFS.exists("/data.txt") – napríklad ak chceš pri prvom spustení vytvoriť súbor len raz a pri ďalších spusteniach doňho už len appendovať.