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


von Manni (Gast)


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?

von Malte (Gast)


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.

von Rufus T. Firefly (Gast)


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?)

von Sven (Gast)


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

von Chris (Gast)


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).

von Manni (Gast)


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?

von Malte (Gast)


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.

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.