In einer eingebetteten Umgebung (mit MSP430) habe ich einige Datenfehler durch partielle Schreibvorgänge in nichtflüchtigen Speicher festgestellt. Dies scheint durch einen Stromausfall während eines Schreibvorgangs verursacht zu werden (entweder zu FRAM- oder zu Informationssegmenten).Wie verhindert man "partielle Schreib" Daten Korruption während des Stromausfalls?
Ich validiere Daten, die an diesen Orten mit einem CRC gespeichert sind.
Meine Frage ist, was ist der richtige Weg, um diese "teilweise schreiben" Korruption zu verhindern? Derzeit habe ich meinen Code so geändert, dass er in zwei separate FRAM-Speicherorte geschrieben wird. Wenn also eine Schreiboperation unterbrochen wird, die eine ungültige CRC verursacht, sollte die andere Stelle gültig bleiben. Ist das eine gängige Praxis? Muss ich dieses doppelte Schreibverhalten für jeden nichtflüchtigen Speicher implementieren?
Ich sehe, wie die Verwendung von Seq und Seq anstelle von CRC in bestimmten Situationen vorteilhaft sein könnte. Aber für Flash scheint mir, dass die CRC im Falle eines schlechten Speicherblocks helfen würde? – schumacher574
Es sei denn, Sie können einen Schreibfehler aufgrund eines fehlerhaften Speicherblocks zum Zeitpunkt des Schreibens feststellen, was verhindern würde, dass seq und seq geschrieben werden, und verhindern, dass diese Daten beim Start gelesen werden. – schumacher574
In meiner Implementierung wurden einzelne Datenelemente separat validiert; Es war wichtig, dass ein einzelner Datenelementfehler nicht dazu führte, dass alle Daten verworfen wurden. Das Problem, das hier gelöst wird, ist insbesondere eines der unvollständigen Schreibdetektion und nicht der Datenkorruption. Wenn Sie die Datenblockvalidierung und den Schutz vor unvollständigem Schreiben kombinieren möchten, ist ein CRC der richtige Weg. – Clifford