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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren