Forum: Mikrocontroller und Digitale Elektronik µC - Speicherbereiche


von Profi ;) (Gast)


Angehängte Dateien:

Lesenswert?

Schönen Tag.


Ich habe mir ein schönes Bildchen gezeichnet,um mit den 
Speicherbereichen des µCs besser klar zu kommen.

Soweit alles richtig?  Hab ich irgendwas vergessen?


Gruß!

von Max H. (hartl192)


Lesenswert?

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

von Profi ;) (Gast)


Lesenswert?

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


Ja. Aber dass muss der user dann schon selbst programmieren.
Ich habe jetzt eher aufgezeichnet, was der Compiler automoatisch macht,
ohne dass der user irgendwo eingreift.

Gruß

von Falk B. (falk)


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.

von (prx) A. K. (prx)


Lesenswert?

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

Nur wenn es sich um getrennte Adressräumen handelt.
Was nicht der Fall sein muss.

von Reinhard Kern (Gast)


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

von Reinhard Kern (Gast)


Lesenswert?

Profi ;) schrieb:
> Ich habe mir ein schönes Bildchen gezeichnet

Um genau zu sein, was ich geschrieben habe, ist die physikalische 
Realität, was du gezeichnet hast, ist was der Compiler dir vorgaukelt.

Gruss Reinhard

von Profi ;) (Gast)


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?

von Reinhard Kern (Gast)


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

von Profi ;) (Gast)


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.

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.