SD-Karte defekt nach Aufspielen eines Sketches per HTTP_UPDATE

Hi zusammen,

mir ist es nun schon zum zweiten Mal passiert, dass eine SD-Karte nach dem Aufspielen eines Sketchs per HTTP_UPDATE nicht mehr lesbar war (ESP32). Erst nach Formatieren der Karte war diese wieder verwendbar.

Kann es sein, dass durch das plötzliche Wegfallen des Stroms nach dem Aufspielen des Updates die SD-Karte geschrottet wird?

Hier ist Sketch, den ich zum Aufspielen des Updates verwende:

void update_sketch() {
 update_messwerte(); // Hier wird die aktuelle Messung eines Sensors abgeschlossen und die entsprechende Datei mit file.close() geschlossen

  WiFiClientSecure client;
  client.setInsecure();

  t_httpUpdate_return ret = httpUpdate.update(client, sketch_url);

  switch (ret) {
    case HTTP_UPDATE_FAILED:
      Serial.println("HTTP_UPDATE_FAILED Error (%d): %s\n", httpUpdate.getLastError(), httpUpdate.getLastErrorString().c_str());
      break;

    case HTTP_UPDATE_NO_UPDATES:
      Serial.println("HTTP_UPDATE_NO_UPDATES");
      break;

    case HTTP_UPDATE_OK:
      Serial.println("Update erfolgreich durchgeführt!");
      const char * httpType PROGMEM = "text/html";
      server.send_P(200,  httpType, indexPage); // Die Startseite des GUI wird aufgerufen
      break;
  }
}

Müsste ich noch evtl. sowas wie SD.end() machen um den SD.Kartenleser ordentlich "auszuhängen"? Oder sonst was beachten? Oder ist die Karte (Intenso, 4GB) einfach zu billig und ich sollte eine höherwertige kaufen.

Danke für eure Tipps

kann ich mir schon vorstellen.
Ich würde alle HW relevanten Vorgänge schließen bevor das Update begonnen wird.

Hi @noiasca ,

Dateien schließe ich alle mit file.close();

Was ist noch HW relevant?
Ein SD.end()?

sieht man nicht.

Was hast du noch an HW? LEDs, Servos, Stepper ...
Ich meine eben ALLES in einen definierten ruhenden Zustand bringen.

wenn es in der SD lib (welche genau? verlinken!) ein .end() gibt ... dann ja.

Hi,

ich verwende die SD-Standard Lib des ESP32.
Da gibt es ein SD.end(), das werde ich auf jeden Fall mal in den Sketch einbauen.

Sollte nur ne Info sein :wink:

Es Könnte sein das die SD wird "Rausgeworfen" und muss im Sketch neu mit SD.begin() initialisiert werden.
Nicht dass das ist so wie bei einem Rechner "karte rauswerfen" dann muss man die neu eistecken damit man die lesen kann, habe aber nicht geschaut was die Funktion macht.

Ja, die Funktion ist quasi ne Art "Aushängen".
Aber nach dem Aufspielen des Sketches per HTTP_UPDATE führe ich wieder ein SD.begin() aus.
Somit sollte das passen.

Wenn zB. PC System abstürzt sind auch USB Sticks, und Festplatten "defekt", habe Linux auf Externer USB SSD, bei Absturz war finite, musste die am Rechner reparieren danach tat die wider :wink:

Wenn im falschen Moment der Strom weg ist, kann die Datenstruktur eine Speicherkarte inkonsistent werden (FAT und Daten stimmen nicht zusammen) .

Grüße Uwe

Stimmt, Win und Linux können das reparieren, natürlich vorausgesetzt, wie groß ist der Schaden

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