MSP430 GCC4.9 linker

OP #3706076
Mittlerweile ist der GCC4.9 fertig und unterstützt auch die MSP430. 
Gebaut bekommen habe ich ihn: PKGBUILD des Archlinux-Paketes für 
arm-none-eabi und eigentlich nur arm-none-eabi durch msp430-elf ersetzt. 
Allerdings musste ich die binutils ausm git nehmen, da der gcc4.9 
assembler-direktiven auswirft, die der Assembler von binutils 2.4 nicht 
versteht...

Header und Linkerscripte gibt's von TI: 
http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/latest/exports/GCC_RH_20140508.zip 
(von denen gibt's auch nen vorkompilierten GCC, allerdings 4.8)

Wenn ich meine Objektdateien zur (fast) fertigen executable 
zusammenlinken will fehlen allerdings immer der reset-vektor. Dieser 
muss in der section .resetvec liegen, damit in der Linker mit dem 
linkerscript in die richtige Stelle im Speicher werfen kann. Wenn ich 
ganz normal linke mit  msp430-elf-ld main.o  -dT msp430g2452.ld 
-L/usr/msp430-elf/lib/430  -lcrt  -lc  -o main.elf fehlt in der main.elf 
die .resetvec section. Ist auch nicht sehr verwunderlich, da weder in 
der libcrt.a noch in der libc.a eine .resetvec section drin ist. Wenn 
ich dem Linker allerdings die crt0.o direkt mitgebe, dann ist die 
section drin (weil sie in der crt0.o enthalten ist)

Mit dem vorkompilierten GCC von TI verhält sich's genau so.

Mache ich irgendwas grundsätzlich falsch oder einfach nur 'here be 
dragons'?

Lukas
Lukas K. schrieb:
> Allerdings musste ich die binutils ausm git nehmen, da der gcc4.9
> assembler-direktiven auswirft, die der Assembler von binutils 2.4 nicht
> versteht...

Sicher meinst du die 2.24…

> Wenn ich meine Objektdateien zur (fast) fertigen executable
> zusammenlinken will fehlen allerdings immer der reset-vektor. Dieser
> muss in der section .resetvec liegen, damit in der Linker mit dem
> linkerscript in die richtige Stelle im Speicher werfen kann. Wenn ich
> ganz normal linke mit  msp430-elf-ld main.o  -dT msp430g2452.ld
> -L/usr/msp430-elf/lib/430  -lcrt  -lc  -o main.elf fehlt in der main.elf
> die .resetvec section.

Normalerweise linkt man mit dem gcc. Wenn man direkt mit ld linkt, muss 
man eben auch solche Dinge von Hand einfügen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.