AvrStudio 6: Wie eigenen Startup Code einbinden? nostartfiles nutzt nix !

Gast #2694306
Lesenswert?
• ▲
▼
Hallo,

wie bindet man im AVR Studio 6 ein eigenen Startup code ein 
(AVRxMega32A4)?
ich habe die Datei "gcrt1.S" aus der newlib kopiert und eingebunden.

Leider bemängelt der Linker:
1
Error  1  multiple definition of `__vectors'  C:\p4\develope\Schoelly\AVR32Studio\XMEGA64_Boot\XMega32_Boot\XMega32_Boot\Debug/../src/gcrt1.s  52  1  XMega32_Boot
2
Error  2  Disabling relaxation: it will not work with multiple definitions    1  1  XMega32_Boot
3
Error  3  multiple definition of `__bad_interrupt'  C:\p4\develope\Schoelly\AVR32Studio\XMEGA64_Boot\XMega32_Boot\XMega32_Boot\Debug/../src/gcrt1.s  195  1  XMega32_Boot

das die Vektor Tabelle doppelt vorhanden ist und das obwohl ich das Flag
1
nostartfiles
gesetzt habe.

Wie kann man verhindern das der Startup Code aus der Lib verwendet wird?
Ziel ist es einen Startup Code zu haben, welcher außer dem Reset Vektor 
keine weiteren Interrupt Vektoren enthält. (Bootloader, Code sparen)


mfg

DerDan
Gast #2694734
Lesenswert?
• ▲
▼
Hallo
das erzeugt mir die Ausgabe, wenn ich "-v" in den Optionen mit angebe.
Ich hab ein paar Zeilenumbrüche eingefügt damit man es besser lesen 
kann.
Die Zeilen mit den "######" hab ich markiert.
und obwohl -nostartfiles angegeben ist, wird crtx32a4.o mit eingebunden.
Wie kann man das verhindern?

mfg

derDan

1
     c:/program files (x86)/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.0.65/avrtoolchain/bin/../libexec/gcc/avr/4.6.2/collect2.exe 
2
       --relax 
3
       -m avrxmega2 
4
       -o XMega32_App.elf 
5
#######c:/program files (x86)/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.0.65/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avrxmega2/crtx32a4.o 
6
       -Lc:/program files (x86)/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.0.65/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avrxmega2 
7
       -Lc:/program files (x86)/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.0.65/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avrxmega2 
8
       -Lc:/program files (x86)/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.0.65/avrtoolchain/bin/../lib/gcc/avr/4.6.2 
9
       -Lc:/program files (x86)/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.0.65/avrtoolchain/bin/../lib/gcc 
10
       -Lc:/program files (x86)/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.0.65/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib 
11
       src/asf/xmega/boards/stk600/rc064x/init.o 
12
       src/asf/xmega/drivers/cpu/ccp.o 
13
       src/asf/xmega/drivers/ioport/ioport.o 
14
       src/gcrt1.o src/usart_example.o 
15
#######-nostartfiles 
16
       -Map=XMega32_App.map 
17
       --start-group 
18
       --end-group 
19
       --gc-sections 
20
       -section-start=.text=0x0 
21
       -section-start=.text2=0x7f00 
22
       -section-start=.BOOT=0x20000 
23
       --relax 
24
       -lgcc 
25
       -lc 
26
       -lgcc
Persönliche Seite #2701269
Lesenswert?
• ▲
▼
DerDan schrieb:

> obwohl -nostartfiles angegeben ist, wird crtx32a4.o mit eingebunden.

Kann ich nicht nachvollziehen und avr-gcc 4.6.2. Hier der Aufruf von 
vollect2 für einen ATmega168 (ATXmega32A4 wird nicht von 4.6.2 
unterstützt):

$ avr-gcc -mmcu=atmega168 foo.c -v -save-temps

e:/winavr/4.6.2/bin/../libexec/gcc/avr/4.6.2/collect2.exe -m avr5 -Tdata 
0x800100 
e:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16 
8.o  -Le:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2/avr5 
-Le:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5 
-Le:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2 
-Le:/winavr/4.6.2/bin/../lib/gcc 
-Le:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib foo.o 
-lgcc -lc -lgcc

Und mit -nostartfiles:

$ avr-gcc -mmcu=atmega168 foo.c -v -nostartfiles -save-temps

e:/winavr/4.6.2/bin/../libexec/gcc/avr/4.6.2/collect2.exe -m avr5 -Tdata 
0x800100 -Le:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2/avr5 
-Le:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5 
-Le:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2 
-Le:/winavr/4.6.2/bin/../lib/gcc 
-Le:/winavr/4.6.2/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib foo.o 
-lgcc -lc -lgcc


> Wie kann man das verhindern?

Das musst also beim Distributor deiner Toolchain nachfragen was da 
falsch läuft.

Sieht aus als wär da was verbockt worden in AS oder in den Tools...

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.