Hallo zusammen,
ich habe nach langem mal wieder vor etwas zu programmieren und habe
mich jetzt 2 Abende mit OpenSuse 13.2, der aktuellen avr-gcc 4.8.3 und
eclipse Mars (und dem aktuellen plugin 2.4.x hier aus dem Thread)
rumgeschlagen. Die MCU Auswahl und alles funktioniert soweit, aber ich
bekomme keines meiner alten Programme und auch kein "Hello World" zum
laufen (ATMega 16).
Irgendwie komme ich nicht zum Ziel und weiss auch nicht mehr weiter.
Selbst das folgende Testprogramm
1 | /*
|
2 | * main.c
|
3 | *
|
4 | * Created on: 23.11.2015
|
5 | * Author: hufnala
|
6 | */
|
7 | #include <avr/io.h>
|
8 |
|
9 | int main()
|
10 | {
|
11 | uint8_t test;
|
12 |
|
13 | DDRB=0xFF;
|
14 | PORTB = 0xFF;
|
15 | for(;;)
|
16 | {
|
17 | test++;
|
18 | }
|
19 | }
|
Schmeisst mir folgende Fehlermeldung:
19:46:10 **** Incremental Build of configuration Release for project
Test ****
make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char
-funsigned-bitfields -mmcu=atmega16 -DF_CPU=1000000UL -MMD -MP
-MF"main.d" -MT"main.o" -c -o "main.o" "../main.c"
as: Unbekannte Option »-mmcu=avr5«
subdir.mk:18: recipe for target 'main.o' failed
make: *** [main.o] Error 1
19:46:10 Build Finished (took 150ms)
In den Fehlern kommt noch:
make:*** main.o Error 1 und
recipe for target main.o faile,
aber keinerlei Warnungen.
Die Pfade stehen auf den für OpenSuse üblichen opt/cross Verzeichnissen,
und im AVR Projekt sind unter C/C++ General|Paht&Symbols für GNUC/GNUC++
und ASM die Links ebenfalls auf die opt/cross/avr gesetzt und
External Builder | make eingetragen, unter C/C++Build|Settings|Assembler
"avr-gcc"
Ich habe ja verstanden (aus nem alten Thread hier), dass der Assembler
irgendwie falsch konfiguriert ist (--> Standard Assembler), ich weiss
aber nicht wo ich das beheben soll.
Die automatisch erzeugten MakeFiles habe ich auch mal nach Einträgen CC=
durchforstet, bin aber nicht fündig geworden wo ich da was auf avr-gcc
umbiegen könnte.
Wenn ich das ganze von der Kommandozeile aus, von folgendem Beispiel
abegeleitet
(http://rn-wissen.de/wiki/index.php/Hallo_Welt_f%C3%BCr_AVR_%28LED_blinken%29)
mache, passiert folgendes:
xxxx@linux-b91i:~/workspace/Test> avr-gcc main.c -o main.o -Os -g
-mmcu=atmega16
/usr/bin/avr-ld: warning: -z relro ignored.
xxxx@linux-b91i:~/workspace/Test>
soweit OK aber das linken führt dann auch schon ins Nirwana?
hufnala@linux-b91i:~/workspace/Test> avr-gcc main.o -o main.elf
-mmcu=atmega16
/usr/bin/avr-ld: warning: -z relro ignored.
main.o: In function `__vector_1':
(.text+0x68): multiple definition of `__bad_interrupt'
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr5/crtm16.o:(.tex
t+0x0): first defined here
main.o: In function `__vectors':
(.text+0x0): multiple definition of `__vectors'
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr5/crtm16.o:(.vec
tors+0x0): first defined here
collect2: error: ld returned 1 exit status
Irgendwas ist faul, ich habe aber auch nichts gefunden wie ich den
Assembler umbiegen kann. Die ganzen anderen Probleme (Programmer / MCU
Auswählen usw.) habe ich auch nicht.
Ich hab das ganze auch mit ner alten Luna eclipse probiert die definitiv
lief, das geht auch nicht mehr. Die Toolchain und eclipse hatte ich
zwischendurch auch schon wieder runter und neu installiert ohne Erfolg.
Hat irgendjemand noch eine Idee??? Wäre echt super wenn ich das zum
laufen
bekommen würde.
Vielen Dank, Ciao hufnala