Hallo, wenn man den Flash löscht, steht als default-Value 0xFF in jeder Zelle (alle Bits gesetzt). Jetzt kann ich meinen gewünschten Wert z.B. 0x0F reinschreiben (die ersten 4 Bits werden gelöscht). Jetzt meine Frage: Ist dieses 1 Byte im Flash nun bis zum nächsten Erase nicht mehr veränderbar (also nach einem Erase nur 1 Schreibzugriff) oder kann ich weiterhin Bits löschen z.B. 0x03 schreiben, dann 0x01, dann 0x00? (Also bis zu 8 Schreibzugriffe wenn ich jeweils nur 1 Bit lösche). mfg
Hallo Dies sollte bei einem STM32 möglich sein. Das Flash-Programming-Manual sagt dazu: Successive write operations are possible without the need of an erase operation when changing bits from ‘1’ to ‘0’. Im Zweifelsfalle sollte man aber immer das entsprechende Manual konsultieren. In den NXP Kinetis-Referenz-Manuals z.B. steht etwas anderes: Re-programming of existing 0s to 0 is not allowed as this overstresses the device. Worin genau die technischen Unterschiede zwischen den Flash-Controllern dieser Prozessoren bestehen, weiss ich auch nicht. Gruss, Christian
Felix F. schrieb: > Ist dieses 1 Byte im Flash nun bis zum nächsten Erase nicht mehr > veränderbar Kommt schwerstens auf den konkreten µC an. Der Flash wird bei jedem Schreibzugriff etwas gestresst. Mitunter findet man Angaben im Datenblatt, NordicSemi NRF52x erlaubt beispielsweise nur zweifaches Überschreiben - danach muss die Page gelöscht werden. Übrigens findet das Schreiben des Flash nicht unbedingt byte-weise statt. Moderne µC Flash Blöcke sind "breiter".
Gast
#5029239
Nach der üblichen Einleitung "RTF ..." ein klares "Jein": Aus PM0075 Programming manual STM32F10xxx Flash memory microcontrollers: "Standard programming ... FPEC preliminarily reads the value at the addressed main Flash memory location and checks that it has been erased. If not, the program operation is skipped and a warning is issued by the PGERR bit in FLASH_SR register ..." Dagegen aus RM0431 STM32F72xxx and STM32F73xxx: "Note: Successive write operations are possible without the need of an erase operation when changing bits from ‘1’ to ‘0’. Writing ‘1’ requires a Flash memory erase operation." Das ist wohl so zu verstehen, dass einzelne Bits nachprogrammiert werden können. Abgesehen davon jedoch: Einige (neuere!!!) Varianten haben beim Flash noch ECC, da scheidet dieses "Nachprogrammieren" sowieso aus. Wenn man den Controller also mal wechseln können möchte, sollte man auf solche Sperenzchen verzichten.
Gast
#5029257
Ich hatte das bei mir irgendwann mal ausprobiert (STM32F103CBT6) und bei dem konnte ich immer weiter Bits auf Null setzen. Also - Versuch macht klug.
Bei mir gehts speziell um einen F4. Hab jetzt auch im manual die note gefunden und hier steht, dass es funktioniert. mfg
Gast
#5030124
Dieter schrieb: > Ich hatte das bei mir irgendwann mal ausprobiert (STM32F103CBT6) und bei > dem konnte ich immer weiter Bits auf Null setzen. > > Also - Versuch macht klug. Kann sein dass es einige Male funktioniert, allerdings verträgt das nicht jedes Flash auf Dauer. Das Flash kann dabei Schaden nehmen. Zum Basteln kein Problem, aber in Serienfertigung lieber das Datenblatt und / oder den FAE konsultieren.
Gast
#5030196
Felix F. schrieb: > Bei mir gehts speziell um einen F4. Hab jetzt auch im manual die note > gefunden und hier steht, dass es funktioniert. Es funktioniert auch. Habe es kürzlich mit einem F446 getestet, da es mich selbst interessiert hat.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.