mikrocontroller.net

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


Autor: Robert R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Robert R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Robert R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Vielen Dank an euch alle für die Antworten!

Ihr habt mir sehr geholfen!

-Robert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.