Wann ist ein Flash-Chip "unprogrammed"?

Gast #5058222
Lesenswert?

Vor dem Schreiben muss man ja üblicherweise einen größeren Bereich 
löschen. Kann dann aber kleinere Datenblöcke nach und nach schreiben.

"Unprogrammiert" ist üblicherweise 0xFFFFFFFF. Aber was passiert, wenn 
ich dann dort 0xFFFFFFFF schreibe? Kann ich die gleiche Zelle dann 
nochmal beschreiben, z.B. mit 0xD00FAFFE? Oder muss ich wieder löschen, 
obwohl es vorher 0xFFFFFFFF war?
#5058235
Lesenswert?

Hey,

kommt das nicht auf den Chip an?

Beim Atmel SAM4E ist es im Flash zumindest so, dass der Flash Controller 
nur Bits löschen kann, nicht setzen.
Sprich: Aus 0xFF (gelöscht) kann 0xFE und danach auch 0xFC werden
(theoretisch, nicht getestet).

Möchte man dann ein Wert schreiben, der im Gegensatz zum Wert im Flash 
ein Bit gesetzt hat, müsste man diesen vorher erst löschen (0xFF).

Gruß
#5058260
Lesenswert?

Bernd schrieb:
> Das beruhigt. Also kann man guten Gewissens auf 0xFFFFFFFF prüfen, um
> festzustellen, ob es "unprogrammed" ist und muss nichts weiter beachten.

Wenn der Flash mit einer ECC Checksumme geschützt ist, kann es Probleme 
geben. Im unprogrammierten Zustand ist diese auch unprogrammiert. Mit 
dem Schreiben von 0xFF wird diese jedoch geschrieben und kann nicht mehr 
geändert werden.

Am besten im Handbuch nachschauen unter welchen Umständen ein 
Überschreiben des Flash möglich ist und welche Muster erlaubt sind.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren