ESP32 changement de schéma de partition

Bonjour à toutes et à tous,

Je fais divers essais avec mon ESP32 WROOM 32.

Jusque ici, j'étais toujours dans le schéma Default 4MB with spiffs(1.2 MB APP/1.5 MB SPIFFS). Je suis passé de SPIFFS à LittleFS --> pas de problème.

Ce matin, je change mon schéma pour No OTA(2MB APP/2MB SPIFFS) et là, ça ne fonctionne plus, lorsque j'appuie sur le bouton reset, j'ai le message suivant :

10:59:31.523 -> ets Jul 29 2019 12:21:46
10:59:31.523 -> 
10:59:31.523 -> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
10:59:31.523 -> configsip: 0, SPIWP:0xee
10:59:31.523 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
10:59:31.523 -> mode:DIO, clock div:1
10:59:31.568 -> load:0x3fff0030,len:4832
10:59:31.568 -> load:0x40078000,len:16460
10:59:31.568 -> load:0x40080400,len:4
10:59:31.568 -> load:0x40080404,len:3504
10:59:31.568 -> entry 0x400805cc
10:59:31.908 -> E (16) esp_littlefs: ./managed_components/joltwallet__littlefs/src/littlefs/lfs.c:1369:error: Corrupted dir pair at {0x0, 0x1}
10:59:31.908 -> 
10:59:31.908 -> E (17) esp_littlefs: mount failed,  (-84)
10:59:31.908 -> E (20) esp_littlefs: Failed to initialize LittleFS
10:59:31.908 -> An Error has occurred while mounting LittleFS

NOTA : le sketch est le suivant :

#include "WiFi.h"
#include "LittleFS.h"
#include "ESPAsyncWebServer.h"
  
const char* ssid = "XXXX";  // Enter SSID here
const char* password = "YYYY";  //Enter Password here
  
AsyncWebServer server(80);
  
void setup(){
  Serial.begin(115200);
  
  if(!LittleFS.begin()){
        Serial.println("An Error has occurred while mounting LittleFS");
        return;
  }
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
  
  Serial.println(WiFi.localIP());
  
  server.on("/download", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(LittleFS, "/EssaiHTML.html", "text/html", true);
  });
   
  server.on("/interpret", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(LittleFS, "/EssaiHTML.html", "text/html", false);
  });
  
  server.begin();
}
  
void loop(){}

D'où ma question : quels sont les schémas compatibles avec LittleFS ?

Cordialement.

Pierre.

Bonjour

Le message d'erreur indique que le système de fichiers LittleFS n'a pas pu être monté.

Est-ce que la partition qui devrait contenir ce système de fichiers a bien été formatée avec la commande LittleFS.format() ?

Non, a priori, je n'ai pas utilisé LittleFS.format() car, lorsque j'étais dans le premier schéma, j'ai utilisé le chargement de fichier dans la mémoire flash via l'IDE Arduino Upload LittleFS to Pico/ESP8266/ESP32 qui, me semble-t-il faisait un formatage lors de l'écriture du premier fichier.

Donc, si je comprends bien, il faut que :

  • je me place dans le schéma de partition voulu
  • je fais un formatage ou je transfert mon fichier dans la mémoire flash par la commande Upload LittleFS to Pico/ESP8266/ESP32 (formatage auto ?)
  • je relance mon sketch pour voir si ça fonctionne.

Pour autant, dans tous les schémas proposés, je suppose qu'il y en a qui sont incompatibles comme ceux faisant référence à la FATFS ?

Cordialement.

Pierre.

Je ne connais pas très bien encore les commandes de la bibliothèque LittleFS, mais j'ai vu que le système de fichiers pouvait aussi être formaté par défaut si le système de fichiers ne pouvait être monté et si la commande begin était formulée avec l'option formatOnFail à true
comme ça :

LittleFS.begin(true);

EDIT : Ceci dit, je réalise que ça n'explique pas pourquoi ta méthode n'a pas fonctionné, et le fait de formater le système comme je le propose ne résoudra pas non plus ton problème puisqu'il faudrait en plus qu'il y ait tes fichiers html dans le système de fichiers LittleFS.

Suite : j'ai choisi le schéma No OTA(2MB APP/2MB SPIFFS) et, dans cette configuration, j'ai relancé Upload LittleFS to Pico/ESP8266/ESP32.

Puis, j'ai relancé mon sketch de téléchargement. Cette fois-ci, ça fonctionné.

Au cours des quelques manips que j'ai faites, je confirme que Upload LittleFS to Pico/ESP8266/ESP32 formate bien la mémoire flash de données.

Donc, petit piège. Tous le fichiers qui doivent être inscrits dans la mémoire Flash doivent être présents dans le dossier "Data" du sketch utilisé. Si on vide ce répertoire pour y placer un nouveau fichier, Upload LittleFS to Pico/ESP8266/ESP32, ce nouveau fichier remplacera les anciens à cause du formatage.

Cordialement.

Pierre.

Oui, quand le système de fichiers est copié dans la partition cible, il écrase le système de fichiers (avec son contenu : les répertoires et fichiers éventuels) qui serait déjà dans la partition cible.

Et si le système de fichiers à copier ne contient ni répertoire(s) ni fichier(s), peut-être que le contenu de la partition cible est juste effacé et n'est ensuite même pas formaté (puisque vide) ce qui proque le problème rencontré au démarrage si on voulait monter le système de fichiers (qui est inexistant).

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.