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
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
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
Der Compiler mappt da garnichts. Er nutzt den Speicher nur nicht.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.