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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.