ESP8266. Téléverser le dossier data (SPIFFS ou LittleFS) depuis PlatformIO • Domotique et objets connectés à faire soi-même

Il est nécessaire d’installer des outils complémentaires à l’IDE Arduino avant de pouvoir téléverser des fichiers SPIFFS ou LittleFS (depuis la version 2.6.0 du SDK ESP8266). Il n’y a rien de tel à faire avec PlatformIO. PIO intègre la commande Upload File System Image accessible depuis la barre latérale. Pour activer LittleFS, il faudra simplement ajouter dans le fichier de configuration l’option board_build.filesystem = littlefs!

Il n’est pas possible d’utiliser directement un projet Arduino avec PlatformIO, lisez ce tutoriel qui explique comment migrer un projet ESP32, ESP8266 (ou n’importe quelle autre plateforme) développé avec l’IDE Arduino

Mettre à jour le SDK ESP8266 à la v2.6.0 ou supérieur

LittleFS est supporté à partir de la version 2.6.0 du SDK ESP8266.

Si les fichiers à téléverser sont au format SPIFFS, il faut d’abord mettre à jour le SDK Espressif ESP8266.

Déplacer (créer) le dossier data dans un projet PIO

Le dossier data qui contiendra tous les fichiers à téléverser sur la mémoire flash de l’ESP8266 doit se trouver au même niveau que le dossier src.

Voici un exemple d’arborescence

Il est également possible de spécifier manuellement l’emplacement du dossier en ajoutant la clé data_dir dans le fichier platformio.ini

Comment modifier la taille du système de fichier (board_build.ldscript)

Avec l’IDE Arduino, il est très facile de choisir la taille de la zone de fichier depuis le menu Tools -> Flash Size

Pour spécifier la taille du File System (FS), il suffit d’ajouter l’option board_build.ldscript et de  spécifier la valeur sous la forme eagle.flash.***.ld

Toutes les configurations disponibles sont ici.

Voici un exemple pour un LoLin d1 mini équipée de 4Mo de mémoire Flash dont 3Mo sera attribué au système de fichier LittleFS.

[env:d1_mini_lite]
platform = espressif8266
board = d1_mini_lite
board_build.ldscript = eagle.flash.4m3m.ld

Activer le support de LittleFS dans le fichier Platform.io

Par défaut le fichiers sont téléversés au format SPIFFS. Pour activer le support de LittleFS, il faudra ajouter au fichier de configuration l’option

board_build.filesystem = littlefs

Ce qui donne par exemple pour la LoLin d1 mini

[env:d1_mini_lite]
platform = espressif8266
board = d1_mini_lite
board_build.filesystem = littlefs
board_build.ldscript = eagle.flash.4m3m.ld
framework = arduino
monitor_speed = 115200

Vous pouvez noter au passage l’option monitor_speed = 115200 qui permet de spécifier la vitesse du moniteur série. Bien évidemment, la valeur doit correspondre à la vitesse spécifiée dans la commande Serial.begin() dans le code Arduino.

Téléverser les fichiers LittleFS (ou SPIFFS)

Tout comme pour l’IDE Arduino, il faut téléverser manuellement les fichiers SPIFFS et LittleFS dans la zone mémoire.

C’est la même commande dans les deux cas. PIO détermine le format de fichier à l’aide de l’option board_build.filesystem

On téléverse les fichiers depuis le menu PIO à l’aide de la l’option Upload File System Image ou en ligne de commande platformio run –target uploadfs

Un Terminal permet de suivre le bon déroulement de l’opération. Si vous n’avez qu’une seule carte ESP8266 connectée, PIO la détecte automatiquement.

Vous pouvez voir ici que PIO a généré un binaire nommé littlefs.bin, il contient tous les fichiers du dossier data.

Processing d1_mini_lite (platform: espressif8266; board: d1_mini_lite; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------------------------
PackageManager: Installing tool-mklittlefs @ ~1.203.0
tool-mklittlefs @ 1.203.200522 has been successfully installed!
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/d1_mini_lite.html
PLATFORM: Espressif 8266 2.6.2 > WeMos D1 mini Lite
HARDWARE: ESP8266 80MHz, 80KB RAM, 1MB Flash
PACKAGES: 
 - framework-arduinoespressif8266 3.20704.0 (2.7.4) 
 - tool-esptool 1.413.0 (4.13) 
 - tool-esptoolpy 1.20800.0 (2.8.0) 
 - tool-mklittlefs 1.203.200522 (2.3) 
 - tool-mkspiffs 1.200.0 (2.0) 
 - toolchain-xtensa 2.40802.200502 (4.8.2)
Converting test_with_text_file.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 30 compatible libraries
Scanning dependencies...
Dependency Graph
|--  0.1.0
Building in release mode
Building file system image from 'data' directory to .pio/build/d1_mini_lite/littlefs.bin
skipping .DS_Store
/test.txt
Looking for upload port...
Auto-detected: /dev/cu.usbserial-1410
Uploading .pio/build/d1_mini_lite/littlefs.bin
esptool.py v2.8
Serial port /dev/cu.usbserial-1410
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: b4:e6:2d:13:f2:c9
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 65536 bytes to 301...

Writing at 0x000eb000... (100 %)
Wrote 65536 bytes (301 compressed) at 0x000eb000 in 0.0 seconds (effective 14974.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Erreur, les fichiers LittlesFS ne sont pas téléchargés correctement

LittleFS est supporté à partir de la version 2.6.0 du SDK ESP8266. Si PIO téléverse une image nommée spiffs.bin au lieu de littlefs.bin, vous devez  mettre à jour le SDK ESP8266.

Mises à jour

11/09/2020 Comment spécifier manuellement le chemin vers le dossier data

18/08/2020 Publication du tutoriel

Avez-vous aimé cet article ?