Forum: Mikrocontroller und Digitale Elektronik Flash pages?


von Dennis S. (eltio)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Dennis S. (eltio)


Lesenswert?

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

von Steffen R. (steffen_rose)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von zWimk (Gast)


Lesenswert?

>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....

von Steffen R. (steffen_rose)


Lesenswert?

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).

von Dennis S. (eltio)


Lesenswert?

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
Noch kein Account? Hier anmelden.