Le système de fichiers SPIFFS
publication: 12 février 2023 / mis à jour 21 avril 2023
Appel à collaboration
Vous développez des montages, simples ou complexes avec ESP32 et ESP32forth.
Partagez-les ici sur ce site.
ESP32forth ne pourra se développer qu'avec la collaboration active de toutes les bonnes volontés.
Vos montages peuvent aider d'autres développeurs.
Les montages des autres développeurs peuvent vous aider.
Pour proposer un article ou un montage, cliquez ici
ESP32 contient un système rudimentaire de fichiers sur mémoire Flash interne. Les fichiers sont accessibles via une interface série dénommée SPIFFS pour Serial Peripheral Interface Flash File System.
Même si le système de fichiers SPIFFS est simple, il va vous permettre d'accroitre considérablement la souplesse de vos développements avec ESP32Forth:
- gérer des fichiers de configuration
- intégrer des extensions logicielles accessibles sur demande
- modulariser les développements en modules fonctionnels réutilisables
Et bien d'autres usages que nous vous laisserons découvrir...
Accès au système de fichiers SPIFFS
L'accès au système de fichiers SPIFFS a déjà été abordé dans cet article
Visual editor: édition des fichiers sources dans ESP32forth.
Dans cet article, il est expliqué comment éditer et sauvegarder un fichier, ici dumpTool.txt. Une fois sauvegardé, pour compiler son contenu, taper:
include /spiffs/dumpTool.txt
Le mot include
doit toujours être utilisé depuis le terminal.
Pour voir la liste des fichiers SPIFFS, utilisez le mot ls
:
ls /spiffs/ \ display: \ dumpTool.txt
Ici, nous avons sauvegardé le fichier dumpTool.txt. Pour SPIFFS, les extensions de fichier n'ont aucune importance. Les noms de fichiers ne doivent pas contenir de caractère espace, ni le caractère /.
Editons et sauvegardons un nouveau fichier myApp.txt. Réexécutons ls
:
ls /spiffs/ \ display: \ dumpTool.txt \ myApp.txt
Le système de fichiers SPIFFS ne gère pas les sous-dossiers comme sur un ordinateur sous Linux. Pour créer un pseudo
répertoire, il suffit de l'indiquer au moment de créer un nouveau fichier. Par exemple, éditons le fichier other/myTest.txt.
Une fois édité et sauvegardé, exécutons ls
:
ls /spiffs/ \ display: \ dumpTool.txt \ myApp.txt \ other/myTest.txt
Si on veut visualiser seulement les fichiers de ce pseudo répertoire other, il faut faire suivre /spiffs/ du nom de ce pseudo répertoire:
ls /spiffs/other \ display: \ myTest.txt
Il n'y a pas d'option de filtrage des noms de fichiers ou de pseudo-répertoires.
Manipulation des fichiers
Pour effacer intégralement un fichier, utiliser le mot rm
suivi du nom de fichier à supprimer:
rm /spiffs/other/myTest.txt ls /spiffs/ \ display: \ dumpTool.txt \ myApp.txt
Pour renommer un fichier, utilisez le mot mv
:
mv /spiffs/myApp.txt /spiffs/main.f ls /spiffs/ \ display: \ dumpTool.txt \ main.f
Pour copier un fichier, utilisez le mot cp
:
cp /spiffs/main.f /spiffs/mainTest.f ls /spiffs/ \ display: \ dumpTool.txt \ main.f \ mainTest.f
Pour voir le contenu d'un fichier, utilisez le mot cat
:
cat /spiffs/dumpTool.txt
\ display content of dumpTool.txt
Pour enregister le contenu d'une chaîne dans un fichier, agir en deux phases:
- créer un nouveau fichier avec
touch
- enregistrer le contenu de la chaine avec
dump-file
touch /spiffs/mTest \ create new file mtest ls /spiffs/ \ display: \ dumpTool.txt \ main.f \ mainTest.f \ mTest \ write string "Insert my text in mTest" in mTest r| ." Insert my text in mTest" | s" /spiffs/mTest" dump-file include /spiffs/mTest \ display: Insert my text in mTest
Organiser et compiler ses fichiers sur la carte ESP32
Nous allons voir comment gérer des fichiers pour une application en cours de mise au point sur une carte ESP32 avec ESP32forth installé dessus.
Il est convenu que tous les fichiers utilisés sont au format texte ASCII.
Les explications qui suivent ne sont données qu'à titre de conseils.
Ils sont issus d'une certaine expérience et ont pour but de faciliter le développement de grosses applications avec ESP32forth.
Edition et transmission des fichiers source
Tous les fichiers sources de votre projet sont sur votre ordinateur. Il est conseillé d'avoir un sous-dossier dédié à ce projet. Par exemple, vous travaillez sur un afficheur OLED SSD1306. Vous créez donc un répertoire nommé SSD1306.
Concernant les extensions des noms de fichiers, nous conseillons d'utiliser l'extension fs ou txt.
L'édition des fichiers sur ordinateur est réalisée avec n'importe quel éditeur de fichiers texte.
Dans ces fichiers codes, ne pas utiliser de caractères non inclus dans les caractères du code ASCII. Certains codes étendus peuvent perturber la compilation des programmes.
Ces fichiers sources seront ensuite copiés ou transférés sur la carte ESP32 via la liaison série et un programme de type terminal:
- par copié/collé en utilisant
visual
sur ESP32forth, à réserver pour les fichiers de petite taille; - avec une procédure particulière qui sera détaillée plus loin pour els fichiers importants.
Ces manipulations de fichiers à transmettre sont expliquées en détail ici:
Installer et utiliser le terminal Tera Term sous Windows
Organiser ses fichiers
Dans la suite de cet article, tous nos fichiers auront l'extension fs.
Partons de notre répertoire SSD1306 sur notre ordinateur.
Le premier fichier que nous allons créer dans ce répertoire sera le fichier main.fs. Ce fichier contiendra les appels à chargement de tous les autres fichiers de notre application en cours de développement.
Exemple de contenu de notre fichier main.fs:
\ OLED SSD1306 128x32 dev and display test
s" /SPIFFS/config.fs" included
En phase de développement, le contenu de ce fichier main.fs sera chargé manuellement en exécutant include
comme ceci:
include /spiffs/main.fs
Ceci provoque l'exécution du contenu de notre fichier main.fs. Le chargement des autres fichiers sera exécuté depuis ce fichier main.fs. En l'occurence, ici on exécute le chargement du fichier config.fs dont voici un extrait:
\ ********************************************************************* \ Configuration for OLED SSD1306 128x32 display \ ********************************************************************* \ for SSD1306_128_32 128 constant SSD1306_LCDWIDTH 32 constant SSD1306_LCDHEIGHT
Dans ce fichier config.fs on mettra toutes les valeurs constantes et divers paramètres utilisés par les autres fichiers.
Notre prochain fichier sera SSD10306commands.fs. Voici comment charger son contenu depuis main.fs:
\ OLED SSD1306 128x32 dev and display test
s" /spiffs/config.fs" included
s" /spiffs/SSD10306commands.fs" included
Le contenu du fichier SSD10306commands.fs fait près de 230 lignes de code. Il est exclu de copier ligne à ligne dans l'éditeur visual
de ESP32forth le contenu de ce fichier. voici une méthode pour copier et enregistrer sur ESP32forth en une seule fois le contenu de ce gros fichier.
Transférer un gros fichier vers ESP32forth
Pour permettre cette transmission de gros fichier, compilez ce code dans ESP32forth:
: noType 2drop ; visual : xEdit ['] noType is type edit ['] default-type is type ;
Ce code Forth très court permet de transférer un programme FORTH très long depuis l'éditeur sur PC vers un fichier dans la carte ESP32 :
- compiler avec ESP32forth, le code FORTH, ici les mots
noType
etxEdit
- ouvrir sur votre PC le programme à transférer dans un fichier sur la carte ESP32
- ajoutez en haut du programme la ligne permettant ce transfert rapide :
xEdit /spiffs/SSD10306commands.fs
- copier tout le code de votre programme édité sur votre PC,
- passer dans le terminal connecté à ESP32forth
- copiez votre code
Si tout se passe bien, rien ne devrait apparaître sur l'écran du terminal. Attendez quelques secondes.
Ensuite, tapez : CTRL-X, puis appuyez sur "Y"
Vous devriez reprendre le contrôle.
Vérifiez la présence de votre nouveau fichier : ls /spiffs/
Vous pouvez maintenant compiler le contenu de votre nouveau fichier.
Conclusion
Les fichiers enregistrés dans le système de fichiers SPIFFS de ESP32forth sont disponibles de manière permanente.
Si vous mettez la carte ESP32 hors service, puis la rebranchez, les fichiers seront disponibles immédiatement.
Le contenu des fichiers est modifiable in situ avec visual edit
.
Cette commodité rendra les développements beaucoup plus rapides et faciles.
Legal: site web personnel sans commerce / personal site without seling