µC - Speicherbereiche

#3521830
Lesenswert?

@ Profi ;) (Gast)

>> Ich würde sagen, dass Konstanten, wenn es viele sind, ins Flash kommen.

>Ja. Aber dass muss der user dann schon selbst programmieren.

Nein. Das muss man nur angeben. OK, bei AVR muss man dann noch anders 
zugreifen, Stichwort PROGMEM, aber bei vielen anderen Prozessoren landen 
die automartisch im Flash, weil die einen einheitlichen Adressraum 
haben.
Gast #3521846
Lesenswert?

Profi ;) schrieb:
> Ja. Aber dass muss der user dann schon selbst programmieren.

Das ist verkehrt herum gedacht. Die Konstanten sind immer im Flash, im 
SRam würden sie ja verloren gehen. Die Frage kann daher nur lauten, wie 
kommen sie von Flash ins Ram, wenn überhaupt. Im einfachsten Fall werden 
sie bei der Initialisierung dahin kopiert, wie initialisierte Variablen 
auch. Ein Befehl Mov Immediate Value to Variable tut ja nichts anderes 
als Value vom Programmspeicher ins RAM zu kopieren.

Nach Anlegen der Spannung gibt es im System nur die Daten im Flash und 
im EEProm, alles andere ist undefiniert.

Gruss Reinhard
Gast #3521908
Lesenswert?

Reinhard Kern schrieb:
> Die Konstanten sind immer im Flash, im
> SRam würden sie ja verloren gehen.

Hmm ja. Soweit ich verstehe werden bei Anlegen der Spannung an den µC 
alle
globalen und statischen Variablen, sowie Konstanten aus dem Flash heraus 
in den SRAM kopiert?
Bei Konstanten kann das mit PROGMEM unterbunden werden. Soweit richtig 
gedacht?

Allerdings ist mir völlig unverständlich, weshalb Konstanten überhaupt 
ins SRAM geschoben werden. Wegen schnellerem Zugriff?
Gast #3521938
Lesenswert?

Profi ;) schrieb:
> Allerdings ist mir völlig unverständlich, weshalb Konstanten überhaupt
> ins SRAM geschoben werden. Wegen schnellerem Zugriff?

Eine Möglichkeit. Oder der Prozessor kann auf den Programmspeicher nicht 
so zugreifen wie auf RAM (von Neumann / Harvard). Oder weil das schon 
immer so ist - Compiler von CP/M üder MSDOS bis Windows gehen ja davon 
aus, dass alles erstmal vom Loader ins RAM befördert wird, vom 
Compiler-Standpunkt aus gibt es da garkeinen Festwertspeicher. Nimmt man 
so einen Compiler für Embedded, macht er es zunächst mal so wie im PC 
auch.

Aber notwendig ist es keineswegs, soweit ich in Assembler arbeite, 
werden Konstanten so definiert dass sie der Linker zusammen mit dem Code 
ins Eprom/Flash schreibt. Nebenbei spart es auch Speicherplatz, wenn man 
die Konstanten nur einmal im System hat, aber das als Gesichtspunkt gilt 
ja heute schon als anstössig.

Gruss Reinhard
Gast #3522009
Lesenswert?

Vielen Dank Reinhard! Hat mir weitergeholfen. :)



Ich denke das Bild ist, was den AVR betrifft ganz Ok. Die tieferen
pysikalischen Begebenheit sollten einem allerdings auch klar sein. Aber
die wollte ich in diesem Bild nicht darstellen. Hier geht es nur um die
Übersicht, was es überhaupt so alles grob an Speicherbereichen gibt.

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