www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verwendung von SRAM, FLASH und EEPROM


Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mal ´ne generelle Frage: Im SRAM werden also Variablen und vor allem
der Stack untergebracht, ohne das man was "besonderes" machen oder
beachten muß, macht der Compiler. Im FLASH wird das Programm selbst
gespeichert, ohne das man was "besonderes" machen oder beachten muß.
Im EEPORM werden z.B. Konstanten abgelegt.
Frage: Wenn ich bei "Haus- und Hofanwendungen" (wie z.B. einer
Temperaturregelung mit KTY, ADC) genug FLASH habe, kann ich dann nicht
alles da reinpacken? Oder gibt es irgendwelche guten Gründe, doch was
gezielt ins EEPROM oder FLASH zu schreiben, obwohl das ja etwas
aufwändiger ist?

Autor: Malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meist ist der Flash bei Mikrocontrollern nicht so oft wiederbeschreibbar
wie der EEPROM, außerdem lässt sich der Flash nur Blockweise (z.B.
256Byte auf einmal) löschen (was vor einem überschreiben nötig ist).
Zuletzt unterstützen nicht alle Mikrocontroller das beschreiben des
Flash, während das Programm läuft.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dem zuletzt sei noch hinzugefügt, daß gerade beim AVR das Flash-ROM auch
noch aufgrund der Harvard-Architektur in einem ganz anderen Adressraum
liegt als RAM und EEPROM und damit nicht mit den gleichen Instruktionen
darauf zugegriffen werden kann wie auf RAM/EEPROM.

Dabei stellt sich am Rande folgende Frage:
Kann der AVR überhaupt Schreibzugriffe auf den ROM-Adressbereich
durchführen? (Mir ist klar, daß Flash-ROM so nicht beschrieben werden
kann, aber denkbar wäre ja der Betrieb mit externem Programmspeicher,
und der könnte ja mit einem RAM aufgebaut sein ... oder geht bereits
das beim AVR nicht?)

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem dauert EEPROM-Schreiben so etwa 4-8msec, während der SRAM in
zwei Zyklen geschrieben wird, also im 1-0.1usec-Bereich. Und ich möcht
meine Variablen für z.B. eine Motorregelung nicht wirklich in EEPROM
oder FLASH zwischenspeichern;-)

Sven

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann der AVR überhaupt Schreibzugriffe auf den ROM-Adressbereich
> durchführen?
Ja. Die ATmegas haben Bootloader-Support. Das ist prinzipiell erstmal
nicht mehr als ein "reservierter" Speicherbereich ganz am Ende des
Flashspeichers.
Dieser Bereich kann von normalen Programmen völlig normal benutzt
werden und ist in keiner Weise besonders, außer in einer: Die
SPM-Anweisung (Store Program Memory) ist dort (und nur dort) erlaubt.
Damit kann man den Flash im laufenden Programm beschreiben.
Geht allerdings auch nur seitenweise (in der avr-libc-doku ist ein
Beispiel dafür).

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wie ich vermutet habe: Wenn irgend möglich immer ins "normale"
Programm schreiben, landet dann im FLASH? Beim Programmstart wird dann
das Benötigte automatisch ins SRAM geladen?

Autor: Malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ungefähr. SRAM verliert seine Daten bei Spannungsabfall, somit muss
das Programm nach dem Start erst einmal die gewünschten Daten aus dem
Flash ins RAM kopieren. Wenn du in C programmierst übernimmt dies aber
meist der Compiler für dich.

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.