Forum: Mikrocontroller und Digitale Elektronik AVR Toolchain Opensuse 42.3 broken?


von Ingo D. (ingo2011)


Lesenswert?

Hallo zusammen,

ich musste leider letzte Woche mein Linux-System neu installieren, da 
das Upgrade von opensuse 42.2 auf 42.3 kläglich scheiterte.
Heute habe ich die AVR-Toolchain getestet und musste feststellen, dass 
es nicht funktioniert mein "Test-Projekt" zu kompilieren.
Ein make im Test-Projekt
zeigt, das der avr-gcc den "normalen" "as" aufruft , der kennt die
Optiion "mmcu=avr2«" natürlich nicht

make

-------- begin --------
Using built-in specs.
Reading specs from /opt/cross/lib/gcc/avr/5.4.0/device-specs/specs-avr2
COLLECT_GCC=avr-gcc
COLLECT_LTO_WRAPPER=/opt/cross/libexec/gcc/avr/5.4.0/lto-wrapper
avr-gcc (GCC) 5.4.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.


Target: avr
Configured with: ../gcc-5.4.0/configure -v --target=avr --disable-nls 
--mandir=/opt/cross/share/man --infodir=/opt/cross/share/info 
--program-prefix=avr- --prefix=/opt/cross --with-gnu-ld --with-gnu-as 
--enable-languages=c,c++ --disable-libssp --with-dwarf2
Thread model: single
gcc version 5.4.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '--version' '-specs=device-specs/specs-avr2'
 /opt/cross/libexec/gcc/avr/5.4.0/cc1 -quiet -v help-dummy -mn-flash=6 
-mskip-bug -quiet -dumpbase help-dummy -auxbase help-dummy -version 
--version -o /tmp/cczecLQu.s
GNU C11 (GCC) version 5.4.0 (avr)
        compiled by GNU C version 4.8.5, GMP version 5.1.3, MPFR version 
3.1.2, MPC version 1.0.2
GGC heuristics: --param ggc-min-expand=100 --param 
ggc-min-heapsize=131072
COLLECT_GCC_OPTIONS='-v' '--version' '-specs=device-specs/specs-avr2'
 as -v -mmcu=avr2 --version -o /tmp/ccgtYWlS.o /tmp/cczecLQu.s
GNU assembler version 2.26.1 (x86_64-suse-linux) using BFD version (GNU 
Binutils; openSUSE Leap 42.3) 2.26.1
as: Unbekannte Option »-mmcu=avr2«
Makefile:267: recipe for target 'gccversion' failed
make: *** [gccversion] Error 1


Das wahr vor ein paar Jahren schon mal ein Bug.
Was auch im wrapper script
unter /usr/bin/avr-gcc vermerkt ist.
# see https://bugzilla.suse.com/show_bug.cgi?id=767294

Dort wird der Pfad geändert so das dort
/opt/cross/avr/bin
an erster Stelle steht. Soweit ok, aber in der 42.3 findet sich dort 
kein
"as"
Ich habe in diesem Verzeichnis als Workaround einen symbolischen Link 
auf

lrwxrwxrwx 1 root root      15 26. Aug 18:30 as -> /usr/bin/avr-as

den avr-as im /usr/bin/acr-as gesetzt , jetzt funktioniert es.
In der opensuse 42.2 liegt das richtige Binary direkt dort als "as"

opensuse 42.2:
monitor@linux-9j89:~/avr/atm16_2017> ls -l /opt/cross/avr/bin
insgesamt 23872
-rwxr-xr-x 2 root root  727712  7. Feb 2017  ar
-rwxr-xr-x 2 root root  958888  7. Feb 2017  as
-rwxr-xr-x 1 root root 4466112  8. Aug 13:08 avr-gdb
-rwxr-xr-x 1 root root 4466120  8. Aug 13:08 avr-gdbtui
-rwxr-xr-x 1 root root 4466120  8. Aug 13:08 avr-insight
-rwxr-xr-x 4 root root 1206952  7. Feb 2017  ld
-rwxr-xr-x 4 root root 1206952  7. Feb 2017  ld.bfd
-rwxr-xr-x 2 root root  712088  7. Feb 2017  nm
-rwxr-xr-x 2 root root  891224  7. Feb 2017  objcopy
-rwxr-xr-x 2 root root 1031896  7. Feb 2017  objdump
-rwxr-xr-x 2 root root  727712  7. Feb 2017  ranlib
-rwxr-xr-x 2 root root  493544  7. Feb 2017  readelf
-rwxr-xr-x 2 root root  891224  7. Feb 2017  strip
-rwxr-xr-x 1 root root  672736  8. Aug 13:08 tclsh8.4
-rwxr-xr-x 1 root root 1495392  8. Aug 13:08 wish8.4


Ich sehe das als Fehler in der 42.3 an, kann das jemand bestätigen ?
@Jörg Wunsch: Falls Du mitliest, ist Dir das bekannt ?


Gruß Ingo

von Stefan F. (Gast)


Lesenswert?

Was soll denn das für eine CPU sein? avr2 kenne ich nicht.

von Ingo D. (ingo2011)


Lesenswert?

Hi Stefan

shau mal was avr-as --help ausgibt...

...
...

  @FILE                   read options from FILE
AVR Assembler options:
  -mmcu=[avr-name] select microcontroller variant
                   [avr-name] can be:
                   avr1  - classic AVR core without data RAM
                   avr2  - classic AVR core with up to 8K program memory
                   avr25 - classic AVR core with up to 8K program memory
                           plus the MOVW instruction
                   avr3  - classic AVR core with up to 64K program 
memory
                   avr31 - classic AVR core with up to 128K program 
memory
                   avr35 - classic AVR core with up to 64K program 
memory
                           plus the MOVW instruction
                   avr4  - enhanced AVR core with up to 8K program 
memory
                   avr5  - enhanced AVR core with up to 64K program 
memory
                   avr51 - enhanced AVR core with up to 128K program 
memory
                   avr6  - enhanced AVR core with up to 256K program 
memory
                   avrxmega2 - XMEGA, > 8K, < 64K FLASH, < 64K RAM


Stefan U. schrieb:
> Was soll denn das für eine CPU sein? avr2 kenne ich nicht.

Gruß Ingo

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ingo D. schrieb:
> Hallo zusammen,
>
> ich musste leider letzte Woche mein Linux-System neu installieren, da
> das Upgrade von opensuse 42.2 auf 42.3 kläglich scheiterte.
> Heute habe ich die AVR-Toolchain getestet und musste feststellen, dass
> es nicht funktioniert mein "Test-Projekt" zu kompilieren.
> Ein make im Test-Projekt
> zeigt, das der avr-gcc den "normalen" "as" aufruft , der kennt die
> Optiion "mmcu=avr2«" natürlich nicht

Eine versäbelte Toolchain. Ist denn avr-as installiert?  Falls nicht, 
hilft evtl. die entsprechende Binutils-Version in den vom Compiler 
erwarteten Pfad zu installieren, also nach prefix o.ö.

von Ingo D. (ingo2011)


Lesenswert?

Hi Johann,

ja, der ist installiert,schrieb ich ja auch. Nur , wird halt der "as" 
aufgerufen und das ist dann der "normale" der die Option mmcu nicht 
kennt.

Und genau diesen Fehler gab es halt schon mal

https://bugzilla.suse.com/show_bug.cgi?id=767294
das ist das Ärgerliche.

Anders als bei der 42.2 wurde vergessen den "avr-as" als "as" im
Verezeichnis /opt/cross/avr/bin abzulegen oder ebend entsprechend zu 
verlinken.


Gruß Ingo

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.