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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ingo D. (ingo2011)


Bewertung
0 lesenswert
nicht 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. (stefanus)


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

von Ingo D. (ingo2011)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.