Ho bisogno di capire come usare littlefs.
Al momento sono in grado di fare le operazioni comuni.
Vorrei capirne di più, ad esempio, apro un percorso esistente e voglio ricavare il path assoluto.
Tipo:
comando cd mauro/home
comando pwd
/mauro/home
PS: al momento ho una shell su pi-pico funzionante con cd, mkdir, ls, cat, pwd ecc, ma non mi piace tanto come ricavo il path assoluto.
Puoi spiegare meglio qual'è l'esatta esigenza? Perchè così come l'hai scritta sembra una domanda senza senso (se apri un percorso esistente sai già il path assoluto, o no?). Chiedo perchè anch'io mi troverò fra breve a dover armeggiare con LittleFS su un pico, per il momento sto usando la libreria Preferences, derivata da quella per ESP32 per salvare delle impostazioni, ma poi avrò bisogno di un log o simili.
Esatto, la mia non è tanto una esigenza, come al solito cerco di andare in profondità solo perché ho interesse. Ok, apri la console dei comandi (bash) e scrivi:
:~$ pwd
/home/mauro
Come vedi pwd mi stampa la directory corrente.
Poi:
:~$ ls ../../etc
Io scrivo questi comandi sul serial monitor e il programma si comporta più o meno come la console bash. (Ubuntu).
Se usi il core arduino per pi-pico tutto è molto semplificato, io sto usando la sdk con cmake, picotool ecc.
Con mio ide preferito:
PS: non sono sicuro, ho corretto alcune cose riguardo malloc che mi sembravano sbagliate, devo verificare. lfs_free((void*)dir); non viene mai eseguito (memory leak).
`lfs_free() e una funzione wrap che chiama malloc direttamente.
int pico_dir_close(int dir) {
return lfs_dir_close((lfs_dir_t*)dir);
lfs_free((void*)dir);
}
Ecco perché sto usando direttamente il repo originale di littlefs.
Forse ho trovato qualcosa in uno dei link di Guglielmo:
// Filesystem:
// testdir/
// file1
Dir d = LittleFS.openDir("testdir/");
File f = d.openFile("r");
// f.name() == "file1", f.fullName() == "testdir/file1"
f.fullName() dovrebbe restituire il path assoluto, vado a vedere cosa usa per risalire al path assoluto da uno relativo.
Ti capisco perfettamente, è quello che faccio anch'io quasi sempre, cioè "[non mi serve] | [non ne ho strettamente bisogno] ma se dovessi farlo, come farei?"
I file system sono affascinanti, complessi da comprendere, semplificando al massimo un malloc o realloc che al posto della memoria ram usa il disco o in questo caso la flash da 16MB della mia picopurple (così l'ho chiamata).
Ho dovuto modificare i nomi di molte funzioni per evitare il conflitto con la libreria LFS nonostante non abbia incluso nessuna libreria. Ho solo aggiunto una l (elle), es: llfs_format.
La cosa strana è il numero size che non ho capito se sono bit, byte o cosa.
Ora devo trovare il modo di estrarre il file system dalla flash con picotool, montarlo con fuse per poterlo modificare a piacere dal PC.
Poi devo provare a scrivere il file modificato in flash senza compromettere il firmware sempre con picotool.