Forum: Compiler & IDEs Reihenfolge im ROM


von Marcus Else (Gast)


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

von Demerzel (Gast)


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

von Marcus Else (Gast)


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

von Stefan (Gast)


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.

von Marcus Else (Gast)


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

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.