MSP430 GCC4.9 linker

OP #3706076
Lesenswert?
• ▲
▼
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
#3706128
Lesenswert?
• ▲
▼
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

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.

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.