Forum: Mikrocontroller und Digitale Elektronik Wo werden Variablen gespeichert im RAM oder ROM


von Manuel F. (manuelbi)


Lesenswert?

Hi

wo werden Variablen gespeichert im RAM oder ROM?

Danke schonmal

Manu

von Inko Wonko (Gast)


Lesenswert?

Im RAM. Alles, was ein Programm verändern kann, wird im RAM abgelegt, 
ist aber nach dem Abschalten auch weg, falls nicht gepuffert.

von Weingut P. (weinbauer)


Lesenswert?

variabel ... also veränderlich ...

und passt zu

R <-- read
O <-- only
M <-- memory

?????

von Programmierer (Gast)


Lesenswert?

Manuel Findig schrieb:
> wo werden Variablen gespeichert im RAM oder ROM?

In welchem Zusammenhang taucht bei dir die Frage auf? Da wir hier 
meistens über AVRs reden: Jede initialisierte Variable bzw. die dafür 
nötige Initialisierung benötigt auch etwas Platz im ROM. Doch erzähl mal 
mehr über den Kontext.

von Harald W. (wilhelms)


Lesenswert?

Manuel Findig schrieb:

> wo werden Variablen gespeichert im RAM oder ROM?

Natürlich im RAM, sonst wäre sie ja nicht variabel. :-)
Gruss
Harald
PS: Man könnte sie natürlich auch in ein WOM schreiben...

von Tom (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> in ein WOM schreiben...

Vermute Du meinst WORM (=Write Once Read Multiple) ??

von Daniel F. (df311)


Lesenswert?

Harald Wilhelms schrieb:
> PS: Man könnte sie natürlich auch in ein WOM schreiben...

also ich speichere datein grundsätzlich nach /dev/null. seit ich damit 
angefangen habe gibts keine probleme mehr dass zuwenig speicehrplatz 
verfügbar ist ;-)

von (prx) A. K. (prx)


Lesenswert?

Tom schrieb:
> Vermute Du meinst WORM (=Write Once Read Multiple) ??

Eher nicht: http://portal.national.com/rap/Story/WOMorigin.html

von Hannes (Gast)


Lesenswert?

>>wo werden Variablen gespeichert

das liegt in deiner Hand wo du eine Variable speicherst. Du kannst sie 
in einer anderen Variablen speichern also im RAM, im EEPROM oder sie 
auch ins ROM programmieren.



Hannes

von Hannes (Gast)


Lesenswert?

...wo ich den Inhalt einer Variablen speichere liegt doch zu jedem 
Zeitpunkt in meiner Hand. Da manche Controller sich selbst flashen 
können, kann ich doch den Momentanwert einer Variablen auch ins "ROM" 
oder "Flash" speichern. Wenn wirklich ein ROM gmeint war, was ich 
bezweifle - ich denke es war das "flash" gemeint...also der 
Programmspeicher...

Hannes

von Stefan F. (sfrings)


Lesenswert?

Die Ursprüngliche Frage zielte sicher auf gewöhnliche Variablen in C 
oder Basic ab. Die liegen im RAM. Wenn sie allerdings einen Initialen 
Wert haben, dann liegen sie im RAM und im ROM. Beim Programmstart wird 
der initiale Wert aus dem ROM ins RAM kopiert. Erst dann startet das 
eigentliche Programm (die main() Funktion).

int i=1;

i liegt im RAM
1 liegt im ROM.

von Kein Name (Gast)


Lesenswert?

Und für den Fall, dass der init Wert niemals geändert wird, haben MC 
Compiler Erweiterungen wie z.B:
rom char[] txt = "Hallo";

von Michael A. (Gast)


Lesenswert?

Manuel Findig schrieb:
> wo werden Variablen gespeichert im RAM oder ROM?

Schalt mal die Versorgungsspannung kurz ab und wieder an. Dann weißt 
du's.

von Manuel F. (manuelbi)


Lesenswert?

Hi

Vielen Dank jetzt hab ichs kapiert.
Wobei jetzt noch was anfällt

@Hannes "Wenn wirklich ein ROM gmeint war"

Was ist der unterschied zwischen ROM und Flash-ROM oder auch nur Flash?

von Peter D. (peda)


Lesenswert?

Manuel Findig schrieb:
> Was ist der unterschied zwischen ROM und Flash-ROM oder auch nur Flash?

ROM ist wie der Name schon sagt, nicht beschreibbar. Er wird ab Werk mit 
dem Programm versehen.
Eine Abart ist OTP, den kannst Du selber beschreiben, aber nur einmal.
Dann gibt es noch EPROM, der ist mit UV-Licht löschbar und kann dann 
wieder beschrieben werden.
Flash ist elektrisch schreib und löschbar (einige male).

All diese sind für Variablen schreiben völlig ungeeignet.


Peter

von oldmax (Gast)


Lesenswert?

Hi
Du solltest dir die Antworten vielleicht noch mal durchlesen "ROM" = 
"Read only Memory" ein "nur Lese Speicher"
Stell dir vor, du hast 8 Leitungen an eine Batterie geklemmt, dann ist 
klar, die Enden tragen einen logischen Pegel. Nehmen wir an, alles ist 
auf Plus, dann hast du an jedem Drahtende eine "1", also "11111111"
Nun programmierst du das Bündel in dem du einige Leitungen 
durchschneidest.  Da ergibt sich dann vielleicht "11011001". Diese Folge 
wird nie wieder zusammengefügt, um ein neues Bitmuster zu 
"programmieren". Aber man kann immer wieder die Bitfolge "11011001" 
ablesen.
Ein Flash hingegen hat einen kleinen Elektriker drin, der immer wieder 
die Leitungen zusammenbringt. Das geht nicht ohne Verluste, denn 
irgendwann ist soviel Draht abgeschnitten, das er sie nicht mehr 
zusammen bringen kann. Dann ist der Flash auch kaputt. Aber so ca. 10 
000 mal schaft eer die "Reparatur"
Auch ein EEProm oder EPRom funktioniert ähnlich. Der Vorteil, die 
Information geht beim Wegfall der Spannung nicht verloren. Anders beim 
Ram. Er besteht aus kleinen Speicherzellen, die solange Spannung 
anliegt, auch die Information merken. Aber diese Information kann durch 
"beschreiben" auch jederzeit verändert werden. Die Speicherzellen sind 
halt bistabile Kippstufen aus Transistoren. Nur wenn die Spannung 
ausfällt und dann irgendwann einmal wiederkommt, dann ist die Lage der 
Kippstufe "zufällig" und hat mit der ursprünglichen Information nix mehr 
zu tun. Durch einen entsprechenden Aufbau dieser Kippstufen kann man 
erreichen, das sie in eine Vorzugslage schalten. So das sollte ein wenig 
weiterhelfen.
Gruß oldmax

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.