Hallo zusammen, ich habe einen Teil des Flashs eines STM32H743 für das nichtflüchtige Speichern einiger Programmdaten vorgesehen, d.h. sie werden alle paar Stunden geschrieben. Jetzt kann ich plötzlich, nachdem es einiege Zeit lang funktionierte, einen bestimmten Speicherbereich nicht mehr lesen. Die Speicherung erfolgt inkrementell, d.h. der nächste freie Speicherbereich wird beschrieben und alles gelöscht wenn der Sektor voll ist. Der aktuelle Bereich ist bisher nur ein einziges Mal beschrieben worden, es sollte daher also keine Verschleißerscheinung sein. Alles vor und hinter diesen paar Bytes ist aber weiterhin lesbar, es handelt sich also nur um diese paar Bytes. Im Bild kann man sehen, dass der Memory-Browser an diesen Stellen nur Fragezeichen anzeigt. Ich kann nicht ausschließen, dass das letzte Speichern der Daten in irgendeiner Weise unterbrochen wurde oder Fehlgeschlagen ist. Hat jemand so etwas schonmal gesehen? Kann man verhindern, dass der Prozessor dann direkt in einen Hard Fault geht?
Natürlich ist der Speicherbereich "lesbar". Es kann nur sein, dass bei Lesen ein ECC-Fehler auftritt (Einbit oder Mehrbit). Dabei wird aber nur ein Flag im Flash-Statusregister gesetzt und - falls nicht maskiert - ein Interrupt erzeugt. Vermutlich ist der also zwar eingeschaltet, aber der Interrupt-Handler nicht da oder der erzeugt absichtlich einen HardFault. Da immer ganze 32-Byte-Blöcke über ECC gesichert werden, darf man beim Schreiben nätürlich jeden dieser Blöcke nur EINMAL beim Programmieren "anfassen". Und wenn während der Schreiboperation etwas schiefläuft, ist mindestens der Inhalt dieses kompletten Blocks hinüber ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
