www.mikrocontroller.net

Forum: Compiler & IDEs Bitte um Aufklärung RAM / FLASH


Autor: Pier S. (bigpier)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Niklas Fink (n8fever)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Flash speicher lässt sich Flashen, aber nicht dynamisch beschreiben, 
also zur Laufzeit.
Flash speicher hast du in der Regel viel.

Autor: Ulrich aus W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Endschuldigung für meine Dumme Frage

Es gibt keine dummen Fragen,
es gibt nur Dumme die nicht fragen.

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pier S. (bigpier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für Eure Erklärung !!
Werden Variablen die mit static Deklariert werden bei Start trotzdem ins 
Ram geholt oder werden diese nur dann geladen wenn sie auch gebraucht 
werden ??

Allen ein schönes Wochenende

Danke

Gruss Pier

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.