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.
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