mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variable an bestimmter Stelle im Ram


Autor: Mario Xxx (grinderfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.

Ich hab nen Array vom Typ unsigned char und möchte, dass dieses an der 
Adresse 0x4000 0000 beginnt. Da ich viele Variablen habe, beginnt die 
gewünschte Variable etwas später.
Weiß jemand ne möglichkeit wie ich das realisieren kann?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> möchte, dass dieses an der Adresse 0x4000 0000 beginnt.

Warum?

> Weiß jemand ne möglichkeit wie ich das realisieren kann?

Ja. Du schaust in die Dokmentation des verwendeten Linkers (welcher auch 
immer das sein mag). Möglicherweise kannst du es auch im Compiler 
(welcher auch immer das sein mag) direkt vorgeben. In der 
Programmiersprache (welche auch immer das sein mag) ist sowas in der 
Regel nicht vorgesehen.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
würd mich jetzt sehr interessieren für was für eine andwendung dies von 
vorteil ist...

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme an, die verwendete Entwicklungsumgebung ist streng geheim.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Daniel

Das ist übliches Vorgehen, wenn man z.B. ein externes RAM hat, welches 
im angegebenen Adressbereich des µC eingeblendet ist und wenn man fette 
Variablen statt im internen RAM des µC im externen RAM unterbringen 
will.

Beim GCC erweitert man das Linkercontrolscript um eine (mehrere) 
zusätzliche Section(en) und das neue Memory Layout, die das externe RAM 
beschreibt (Startadresse, Länge).
http://www.gnu.org/software/binutils/manual/ld-2.9...

Und im Quellcode weist man mit der Zusatzangabe _attribute_ ((section 
("MEINRAM"))) darauf hin, dass eine Variable in dieser Section zu liegen 
kommt.
http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Variab...

Bei anderen Toolchains gibt es vielleicht (wahrscheinlich) ähnliche 
Mechanismen.

Wenn nicht, kann man in manchen Fällen auch Quick&Dirty geschickt einen 
typedef oder defines machen und die Wunschadresse als Zeiger auf eine 
Variable dieses Typs oder als Offsets zu der Basisadresse definieren. 
Ähnlich ist diese Art des Vorgehens zu IO-Definitionen/Vektortabellen 
etc. in den Headerdateien mancher µCs.

Autor: Mario Xxx (grinderfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok mein beitrag war etwas mager g.

Ich nutze uVision3 und hab nen Arm LPC2378.

Ich brauche das, da ich ein programm im rom habe, welches übersetzten 
code für das ausführen aus dem Ram per usb nachladen kann.

Die nachladbaren programme sind für die adresse 0x4000 0000 ausgelegt.

Mein programm im rom hat mehrere variablen und meine variable wo der 
code reingeschrieben wird, befindet sich leider nicht am anfang des 
rams.

Ich weiß bei uVision eine methode, die ich leider nicht anwenden kann, 
da ich eine evaluationsversion nutze.
Es gibt sicher auch andere wege.

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.