Gast
#2463783
Hallo, nach meine Beobachtungen haben gelöschte Flash Seiten den Wert "0" in den einzelnen Bytes. Aber in welchen ST Dokument ist das dokumentiert? Bin für Hinweise dankbar!
|
Anzeige
|
STM32 : Welches Dokument erwähnt den Zustand der Flash Zellen nach Löschen?
Gast
#2463783
Hallo, nach meine Beobachtungen haben gelöschte Flash Seiten den Wert "0" in den einzelnen Bytes. Aber in welchen ST Dokument ist das dokumentiert? Bin für Hinweise dankbar! Gute Frage... Üblich ist bei Flashbit ja 1, nicht 0. Aber beim querlesen habe ich das auch nirgends explizit erwähnt gefunden. Allerdings steht drin, dass man programmierte Zellen genau und nur mit 0x0000 überbraten kann. Daraus kann man schliessen, dass es wie üblich gelöscht auf 0xFFFF steht. Auch der Code der AN für EEPROM Emulation geht davon aus, dass gelöschte Bits auf 1 stehen.
Gast
#2463824
Bei diesem Chip wird Flash untypischerweise nach 0 gelöscht, steht auch so in der Flash Programming AN.
Gast
#2463826
Welcher AN? Danke In der AN2594 steht jedenfalls: #define ERASED ((uint16_t)0xFFFF) /* PAGE is empty
Gast
#2463851
AN2594 bezieht sich auf die EEPROM Emulation in ST32F Bausteinen, und #define ERASED ((uint16_t)0xFFFF) /* PAGE is empty bezieht sich auf den Rückgabewert einer dieser Emulationsroutinen. Aber das definiert nicht den Wert gelöschten Flash Zellen. In der AN selbst wird der Inhalt gelöschter Zellen als FF gezeigt. Im Code wird der Makro ERASE für gelöschte Pages verwendet, und zwar direkt als Vergleichswert mit dem Inhalt vom Flash, nicht über ein API-Mapping. Der Code der AN nutzt dem Umstand, dass gelöschte Zellen auf 0xFFFF stehen und nacheinander auf 0xEEEE und danach 0x0000 programmiert werden. Uwe Bonnes schrieb: > bezieht sich auf den Rückgabewert einer dieser Emulationsroutinen. Aber > das definiert nicht den Wert gelöschten Flash Zellen. Geraten oder gewusst? Zur Ästhetik von STs Beispielcode gehört auch, dass der Programmierer wenig Sinn für saubere Trennung von Interfacedefinition und Implementierung hat und gefährlich unspezifische Namen wie ERASED für interne Zustände verwendet, sie aber ohne Schutz ins globale Include-File reinpinnt. Statt sie wie es sich gehört nur in die Implementierung zu schreiben. Diese 3 Namen stehen für das erste 16-Bit Wort einer Flash-Page, das den Blockzustand kennzeichnet. Sie werden ausserhalb der EE_xxx Funktionen nicht verwendet, auch nicht als Return-Wert:
Gast
#2463980
Argh: STM32L hat 0 als gelöschten Zustand, STM32F1/F4 0xff. Fuer F2 muss ich noch testen... Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|