Flash pages?

OP #3916776
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
OP #3916794
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
#3920111
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.
Gast #3920918
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.
Gast #3920926
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....
#3921126
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).
OP #3925234
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.