Verwendung von SRAM, FLASH und EEPROM

Gast #139925
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?
Gast #139926
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.
Gast #139927
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?)
Gast #139928
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
Gast #139929
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).
Gast #139931
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

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