www.mikrocontroller.net

Forum: Compiler & IDEs Reihenfolge im ROM


Autor: Marcus Else (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der Linker des MSPGCC legt offenbar die einzelnen Objekte (*.o) in der
Reihenfolge in den Speicher (.section .text), in der sie auch beim
Aufruf angeben werden.
Vor das erste Objekt setzt er sein eigenes Systemstartup (z.B. Kopieren
der initialisierten globalen Variablen vom ROM ins RAM usw. bis zum
Aufruf von main).
Wie kann ich dem Linker sagen, daß er ein bestimmtes Objekt, welches
nur "const unsigned char  uc_Konstante[] = "abc";" enthält, vor
allen anderen Dingen direkt an den Anfang meines ROM-Bereiches setzten
soll (MSP430F149 bei Adresse 0x1100 und bei MSP430F147 bei Adresse
0x8000)?

Dankbar für jeden sachdienlichen Hinweis
ist
Marcus

Autor: Demerzel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also soviel ich weiß kannst du es nicht ganz an den anfang schieben da
dort die sprungadressen abgelegt werden.ansonsten mit asm da kannst du
ihm "sagen" wo er es auf welchen speicherplatz legen soll.
ciao peter

Autor: Marcus Else (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Vektoren liegen beim MSP am Ende des ROMs.
Wie sage ich dem GNU-Assembler wo er den Code hinlegen soll? .org kann
immer nur zu dem aktuellen location counter etwas hinzu, aber nicht
wegzählen.

Marcus

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht schon mit der org Anweisung. Du musst sie halt nur an die
richtige Stelle setzen.
Ansonsten musst du dein Problem noch etwas genauer erklären.

Autor: Marcus Else (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Onlinemanual vom GNU-as:

".org may only increase the location counter, or leave it unchanged;
you cannot use .org to move the location counter backwards."

Wenn der MSPGCC mir das Startsystem automatisch an die Adresse 0x1100
(MSP430F149) und ich die Datei mit den Konstanten, die ich eigentlich
an diese Adresse haben will dem Linker als erstes angebe, setzt der
Linker die Konstanten mit dem Abstand 0x1100 nach dem letzten Befehl
des eigentlichen Programms. Alles in der Section text.

Welches ist also die richtige Stelle der .org-Anweisung?

fragt

Marcus

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.