Autres articles / Other articles

Le système de fichiers SPIFFS

publication: 12 février 2023 / mis à jour 21 avril 2023

Read this page in english

 


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:

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:

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:

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 :

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