Speicher im Flash oder im RAM??

Gast #712622
Lesenswert?

Die Variable a liegt im Normalfall im RAM, das kann man schon sagen.
Variable die ein Compiler oder Linker ins FLASH oder ins ROM geben soll, 
müssen in ein eigenes Segment oder mittels eines Modifiers 
gekennzeichnet werden.
Diese Variablen können aber dann nicht einfach durch Zuweisung
a = 5;
geändert werden, so intelligent ist der Compiler nicht.
Es muß eine spezielle Funktion zum Schreiben des Flash aufgerufen 
werden.
Gast #712629
Lesenswert?

Ich versuche das mal einfach zu erklären.

>int a; sind das 2 Bytes im Flash??

Nein das sind zwei Bytes im RAM.

>int a = 10;???

Das sind zwei Bytes im RAM und zwei Bytes im Flash.

Warum ? Ein einfaches int a; bedeutet für den Compiler
eine Variable a mit Startwert 0. Das macht er im Startupcode.
Er löscht alle Variablen denen kein Wert zugeordnet wird einfach
mit dem Wert 0.

>int a = 10;???

Hier geht das nicht mehr. Der Wert 10 muss im Flash liegen
damit a der Wert 10 zugewiesen werden kann. Woher sollte
der Wert 10 sonst kommen ?

Ganz so einfach ist es aber dann doch nicht !
Wenn mehrere Variablen den Wert 10 haben kann der
Compiler das zusammenfassen indem nur einmal der
Wert 10 im Flash gespeichert wird.

Ich hoffe das war verständlich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren