Hallo, ich habe ein kleines Verständnisproblem beim Flash-Speicher. Im Reference Manual vom STM32F1xx sind die Speicheradressen der Flashmodule angegeben. Diese sind unterteil in 1K pages. Sind diese "pages" die in [1] erwähnten "Sektoren"? Sprich: wennn ich beim STM32 den Flash-Speicher löschen möchte, dann geht das nur in 1Kb-Schritten? Gruß Dennis [1] http://www.mikrocontroller.net/articles/Speicher#Flash-ROM
Ich kenne den STM32 nicht, aber bei Flash Speichern ist es üblich, das er nur Blockweise gelöscht werden kann. Und Löschen ist vor den Beschreiben notwendig.
Stefan us schrieb: > Und Löschen ist vor den Beschreiben notwendig. Danke für die Zusatzinfo. Im Manual steht
1 | The Flash memory erase operation can be performed at page level or on |
2 | the whole Flash area (mass erase). Mass erase does not affect the |
3 | information blocks. |
Das klingt ja stark danach, dass "Sektoren" und "pages" für das Gleiche stehen. Gruß Dennis
ST verwendet 'pages' bei den STM32's, bei den alle 'pages' gleich groß sind. Sektoren nutzen sie bei den größeren Typen. Hier können die Sektoren unterschiedlich groß sein. Im Prinzip musst du eine Erase Page bzw. einen Sektor löschen, bevor du ihn beschreiben kannst. Insofern hast Du recht. Jedoch unterscheidet sich das 'wie' im Detail.
Steffen Rose schrieb: > Im Prinzip musst du eine Erase Page bzw. einen Sektor löschen, bevor du > ihn beschreiben kannst. Nicht unbedingt. Wenn vom alten Inhalt zum neuen Inhalt nirgendwo in der Page ein Bit zurückgesetzt werden muß (also beim alten 0 war und beim neuen 1 werden muß), dann braucht man nicht löschen, bevor man schreiben kann. Je nach Art der Daten kann es sich durchaus lohnen, zu prüfen, ob das der Fall ist. Oder andersrum: Wenn man weiß, daß die Daten im Flash gespeichert werden sollen, kann man schon im Vorfeld überlegen, ob es eventuell möglich ist, die Daten so zu organisieren/präsentieren, daß möglichst selten solche Wechsel vorkommen, die das Löschen zwingend erforderlich machen.
>enn vom alten Inhalt zum neuen Inhalt nirgendwo in der >Page ein Bit zurückgesetzt werden muß (also beim alten 0 war und beim >neuen 1 werden muß), dann braucht man nicht löschen, bevor man schreiben >kann. Umdrehen den Schuh....
c-hater - hier muss man zwischen Erase page und der Größe des gleichzeitig zu beschreibenden Flash unterscheiden. Wenn von gelöschtem Flash die Rede ist, meint man dass der zu beschreibende Bereich gelöscht ist. Ist dieser Bereich nicht gelöscht, und das meinst Du sicherlich, muss man vorsichtig sein. Hier muss man jeweils schauen, ob bei diesem Flash das Überflashen erlaubt ist und wie dieses zu erfolgen hat. Und wie zWimk schon aufmerksam macht, muss man jeweils schauen, welchen Wert der gelöschte Speicher hat. laut- PM0075 - CD00283419.pdf ist beim STM32F1 ein Überschreiben nur mit 0x0000 erlaubt, Standard programming In this mode the CPU programs the main Flash memory by performing standard half-word write operations. The PG bit in the FLASH_CR register must be set. 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 (the only exception to this is when 0x0000 is programmed. In this case, the location is correctly programmed to 0x0000 and the PGERR bit is not set).
Steffen Rose schrieb: > ST verwendet 'pages' bei den STM32's, bei den alle 'pages' gleich > groß > sind. Sektoren nutzen sie bei den größeren Typen. Hier können die > Sektoren unterschiedlich groß sein. > > Im Prinzip musst du eine Erase Page bzw. einen Sektor löschen, bevor du > ihn beschreiben kannst. Insofern hast Du recht. Jedoch unterscheidet > sich das 'wie' im Detail. Okay, abgesehen von der interessanten (danke dafür!) nebenläufigen Diskussion über das WIE, scheint Steffens Antwort am Ehesten auf meine Frage abzuzielen --> Egal ob "pages" oder "Sektoren", es ist immer ein größerer Speicherbereich gemeint, der in einem Rutsch gelöscht wird / werden muss. Gruß Dennis
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.