Bitte um Aufklärung RAM / FLASH

OP #922207
Lesenswert?

Hallo ,
ich bräuchte mal Eure Hilfe da ich ein Verständnis Problem habe !
(mit Sicherheit eine sehr Dumme Frage !)
Also wie oder wann soll man Daten ins Flash packen ???
Welche Vorteile / Nachteile bringt dies mit ???
Könnte Mir jemand dazu ein klares beispiel zeigen ???

Endschuldigung für meine Dumme Frage

Gruß
Pier
#922992
Lesenswert?

Niklas hat es schon richtig gesagt.

Im Flash steht i.d.R. das Programm; wenn man aber zusätzlich noch 
Tabellen oder Texte hat, kann man diese auch ins Flash schreiben lassen. 
Vorteil: sie sind, wie das Programm, immer da und werden beim Flashen 
mit dem Programm ins Flash gebracht (beim Programmieren des System mit 
dem Flasher). Nachteil: diese Daten sind zunächst mal unveränderlich 
(das kann aber auch ein Vorteil sein, je nach Anwendung).

Alternative: diese Daten ins EEPROM schreiben (z.B. bei AVR-Controller). 
Vorteil: diese Daten kann man vom Programm aus ändern; Nachteil: 
eigentlich keiner.
#923070
Lesenswert?

Bei AVRs gilt:
Flash: nichtflüchtiger Speicher, Daten bleiben nach Abschalten des 
Controllers erhalten, nicht ohne weiteres aus dem Programm heraus 
beschreibbar (Ausnahme: Bootloader)
-> Daten, die beim Programmieren schon feststehen und während des 
Programmablaufs nicht geändert werden (Textstrings für Display-Ausgabe, 
Konstanten...)

RAM: flüchtiger Speicher, Daten sind nach dem Abschalten weg
-> Daten, die während des Programmablaufs erzeugt und verarbeitet 
werden.

EEPROM: nichtflüchtiger Speicher, der vom Programm aus geschrieben 
werden kann, Daten bleiben nach Abschalten erhalten, i.a. begrenzte 
Anzahl Lösch-Schreibzyklen, Schreibzugriff relativ langsam
-> Daten, die nur selten geändert werden (z.B. Parameter)

Immer dran denken: Initialisierungswerte und Konstanten, die im RAM 
angelegt werden, stehen immer zusätzlich noch mal im Flash 
(Programmspeicher) und werden von dort aus bei Programmstart ins RAM 
geladen. Deshalb ist es i.d.R. sinnfrei, z.B. vorgegebene Texte für eine 
Ausgabe auf einem Display im RAM anzulegen. Die kann man, wenn sie 
gebraucht werden, auch direkt aus dem Flash laden. RAM ist i.d.R. 
relativ kostbar und sollte mit Bedacht genutzt werden.
#923399
Lesenswert?

Pier S. wrote:
> Werden Variablen die mit static Deklariert werden bei Start trotzdem ins
> Ram geholt oder werden diese nur dann geladen wenn sie auch gebraucht
> werden ??
Eine static -Variable ist im Prinzip nichts anderes als eine 
gewöhnliche globale Variable, mit dem Unterschied, dass sie nicht global 
sichtbar ist. Dementsprechend wird sie bei Programmstart angelegt und 
initialisiert (Wenn nichts anderes angegeben, mit 0). Wenn sie mit einem 
Initialisierungswert ungleich 0 vorbelegt ist, dann wird dieser 
selbstverständlich auch bei Programmstart aus dem Flash geholt.
Gast #924509
Lesenswert?

Hier geht anscheinend mal wieder jeder ganz selbstverständlich vom AVR 
aus. Es sei angemerkt, daß es noch andere Prozessor-Architekturen gibt, 
bei denen es anders ist.
So gilt auch folgendes speziell für AVR:

> Wenn sie mit einem Initialisierungswert ungleich 0 vorbelegt ist, dann
> wird dieser selbstverständlich auch bei Programmstart aus dem Flash
> geholt.

Um das noch etwas klarer zu sagen: Sie wird beim Programmstart aus dem 
Flash ins RAM kopiert und danach als normale RAM-Variable behandelt.

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