Forum: Compiler & IDEs Zugriff auf Speicher über eingestelltem Maximum


von Robert R. (Gast)


Lesenswert?

Hallo,

Ich habe hier einen ATMega128 und ganz brav an das externe
RAM-Interface 32k SRAM drangehängt. Nun  möchte ich aber mit Adressen
>32k "etwas anderes" (das ebenfalls am Adress- und Datenbus hängt,
aber KEIN RAM ist aber wie ein solches angesprochen werden will)
adressieren.

Frage: Wenn ich dem Compiler im Makefile gesagt habe, dass 32k SRAM
dran sind, was macht er dann bei Zugriffen auf Adressen >32k? Ich würde
mir wünschen, dass er 'ganz normal' die Adresse ausgibt und einen
'normalen'  Speicherzugriff versucht. Tut er das?

TIA,

Robert

von Peter D. (peda)


Lesenswert?

Wenn ich mich richtig erinnere, hat der Mega128 4kB intern, d.h. alles
über 4kB + Register + IO-Space wird extern angesprochen.

Wie Du das dekodierst ist dann allein Deine Sache.


Peter

von Robert R. (Gast)


Lesenswert?

Hallo,

Nein, die Dekodierung ist hier nicht das Problem! Ich will nur wissen,
was der Compiler anstellt, wenn man in einen Speicherbereich zugreift,
der laut Makefile "nicht existent" (>32k) ist. Mappt der das dann
wieder ab 0 oder versucht er wirklich einen Zugriff auf diese Adresse?

mfg,

Robert

von A.K. (Gast)


Lesenswert?

Der Compiler mappt da garnichts. Er nutzt den Speicher nur nicht.

von Peter D. (peda)


Lesenswert?

Nein, was Du dem Linker sagst, ist nur wichtig für seine
Variablenplazierung.

Wenn Du über eine Adresse (Pointer) irgendwo hin zugreifst, macht er
das auch.

Deshalb ist C ja so beliebt, weil man damit machen kann, was man will.
Es bevormundet einen nicht.

C macht genau das, was man hin schreibt, ganz egal, ob man weiß, was
man tut oder nicht.


#define my_io_device (*((unsigned char *)((void *)0x1234)))

my_io_device = 0x01;

i = my_io_device;


Peter

von Robert R. (Gast)


Lesenswert?

Hallo,

Vielen Dank an euch alle für die Antworten!

Ihr habt mir sehr geholfen!

-Robert

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.