Forum: Compiler & IDEs avr-libc 1.8.1 freigegeben


von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Auch, wenn ich diesmal nicht so viel selbst beitragen konnte, gab es
in letzter Zeit eine Reihe anderer Mitwirkender, die fleißig an der
avr-libc weitergearbeitet haben.  Der letzte Release liegt mehr als
2,5 Jahre zurück, sodass es dringend nötig scheint, endlich mal einen
neuen zu machen.  Leider hatte ich nicht die Zeit für meinen üblichen
„Spaziergang“ durch die Bug- und Patch-Datenbank, nur einen kurzen
Blick auf ein paar Bugs, die sich schnell beheben ließen.

Hier der Abschnitt aus der NEWS-Datei betreffend Version 1.8.1:
1
*** Changes in avr-libc-1.8.1:
2
3
* Bugs fixed:
4
5
  [#31267] misleading header iom128rfa1.h
6
  [#35197] sleep.h _BV defined as __BV in AT90S8515 section
7
  [#35226] Online-documentation broken - [...]
8
  [#35398] assert doesn't work unless stdlib.h is also included
9
  [#35498] misspelled in <util/setbaud.h>
10
  [#35539] stdlib.h does not provide EXIT_SUCCESS et al.
11
  [#35948] iom32u4.h for ATmega32U4 incorrectly defines Timer 2
12
  [#35971] attiny4313 (2313a) pin-change interrupts PCINT[0...2] vect etc
13
  [#36053] Declaration of the register USIBR missing for ATtiny2313a/4313
14
  [#36410] avr/boot.h: poisoned SPMCR for ATmega128
15
  [#36454] string.h: Error for long long in C90
16
  [#36581] avr-libc: pgmspace.h is not ANSI compliant
17
  [#37103] ATtiny5/9/10/20/40 watchdog can't be enabled
18
  [#37778] _MemoryBarrier() in cpufunc.h error on compile
19
  [#38135] Install a dummy stdfix-avrlibc.h
20
  [#38516] Missing TWI and UCSR1D definitions for ATmega16/32 U4
21
  [#39049] Clock prescaler set and get are missing for TINY architecture
22
  [#39783] CRC missing definitions and incorrect power macros for xmega D3
23
  [#40003] Integer type promotion leads to inefficent code in wdt.h
24
  [#40206] incorrect SP init in startup code for xmegas
25
  [#40567] Invalid names in iotn13a.h (EEPE/EEMPE/BODS/BODSE)
26
  [#40569] sleep_bod_disable does not work in attiny13a
27
  [#40595] iotn2313a.h: wrong fuses definitions for High Fuse Byte
28
  [#41006] iom328p.h: wrong fuse defaults
29
  [#41519] wrong SPM_PAGESIZE definition in iotn[48]8.h
30
  [#42024] build break regarding avrtiny10
31
  [#42084] wrong LFUSE_DEFAULT in iotn84a.h
32
  [#42085] HFUSE_DEFAULT not defined for iotn84.h
33
  [#39779] PCIE0 and PCIE1 defined incorrectly for mega165a and mega165pa devices
34
  [#38614] dtostrf - wrong behavior or wrong documentation
35
  [#42957] missing SPMCSR defines in iom328p.h#
36
  [#41690] Bit definitions for SPMCSR
37
  [no-id]  XXX_vect_num not consistent io90pwmx.h, iousbxx6_7.h
38
  [no-id]  Specialize clock_prescale_set/get for mega hvb devices
39
  [no-id]  Update register and bit definitions for tiny 13a/24a/44a/84a,
40
           tiny167 and mega328p
41
42
* New devices supported:
43
44
  - ATmega256RFR2, ATmega2564RFR2, ATmega128RFR2, ATmega1284RFR2,
45
    ATmega64RFR2, ATmega644RFR2, AT90pwm161, ATA5272, ATA5505, ATA5790,
46
    ATA5795, ATA6285, ATA6286, ATmega1284, ATmega128A, ATmega164PA,
47
    ATmega165PA, ATmega168PA, ATmega3250PA, ATmega325PA, ATmega3290PA,
48
    ATmega32A, ATmega48PA, ATmega64A, ATmega8A, ATtiny1634, ATtiny828,
49
    ATxmega128A3U, ATxmega128A4U, ATxmega128B1, ATxmega128B3, ATxmega128C3,
50
    ATxmega128D4, ATxmega16A4U, ATxmega16C4, ATxmega192A3U, ATxmega192C3,
51
    ATxmega256A3BU, ATxmega256A3U, ATxmega256C3, ATxmega32A4U, ATxmega32C4,
52
    ATxmega384C3, ATxmega384D3, ATxmega64A3U, ATxmega64A4U, ATxmega64B1,
53
    ATxmega64B3, ATxmega64C3, ATxmega64D4
54
55
* Contributed Patches:
56
57
  [#3729] Printf for integers speed up
58
  [#7212] Add pgm_read_ptr() macros to pgmspace.h
59
  [#7220] Add UBRR overload functionality to <util/setbaud.h>
60
  [#7260] Addition to power.h
61
  [#7485] CRC8-CCITT
62
  [#7654] include/delay.h: delay_us >255us without decreasing resolution
63
  [#7826] Add ATMega32u4 support to the led-blinking demo
64
  [#7909] Adding __volatile__ to __asm__ within pgmspace header
65
  [#7910] Add missing PCINT2_vect to iotn40.h and update all the
66
          following vector numbers
67
  [no-id] correction in xmega wdt_enable and wdt_disable added for xmega
68
  [#8499] Device ata6289 should be of avr4 architecture
69
  [no-id] Add RAMSTART, fix RAMSIZE, RAMEND and FLASHEND in device headers
70
  [#8512] Rename tiny arch to avrtiny to sync with binutils
71
72
* Other changes:
73
74
  - New macro _PROTECTED_WRITE(): write to Xmega IO registers that are
75
    protected through the CCP mechanism
76
77
  - Add support for scanf() conversion macros for 8-bit data types to
78
    <inttypes.h>: SCNd8, SCNdLEAST8, SCNdFAST8, SCNi8, SCNiLEAST8,
79
    SCNiFAST8, SCNo8, SCNoLEAST8, SCNoFAST8, SCNu8, SCNuLEAST8,
80
    SCNuFAST8, SCNx8, SCNxLEAST8, SCNxFAST8
81
82
  - Add time.h package, C standard functions such as mktime() and localtime,
83
    along with 'ephemera' such as solar declination, time of sun rise and set.
84
85
  - Introduce new configure option --with-debug-info=INFO, where INFO
86
    can be either stabs, dwarf-2, or dwarf-4.  By default, no debug
87
    information will be generated.
88
89
  - Add IO register debug symbols to crt*.o, so debuggers can see the
90
    per-device defined IO registers (and __eeprom).
91
92
  - A number of changes have been applied to make avr-libc more C++
93
    aware.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

AFAIK unterstützt die 1.8.1 auch das neue Multilib-Layout?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann L. schrieb:
> AFAIK unterstützt die 1.8.1 auch das neue Multilib-Layout?

Ich hoffe mal, dass sie das tut. ;-)  Die Multilib-Geschichten sind
eins der Dinge, bei denen ich nie so richtig den Durchblick bekommen
habe, leider.

von Oliver (Gast)


Lesenswert?

Hallo Jörg,

ich habe gerade versucht, die avr-libc zu kompilieren, allerdings kommt 
es zu Fehlermeldungen (Auszug aus /build/avr-libc-1.8.1/config.log):
1
Configured with: ../../source/gcc-4.9.1/configure -v --target=avr --disable-nls --prefix=/usr/local/avr/avr-20140817 --with-gnu-ld --with-gnu-as --enable-languages=c,c++ --disable-shared --with-dwarf2 --with-gmp-include=/usr/local/avr/avr-20140817/source/gcc-4.9.1/gmp --with-avrlibc=yes
2
Thread model: single
3
gcc version 4.9.1 (GCC) 
4
configure:3434: $? = 0
5
configure:3423: /usr/local/avr/avr-20140817/bin/avr-gcc -V >&5
6
avr-gcc: error: unrecognized command line option '-V'
7
avr-gcc: fatal error: no input files
8
compilation terminated.
9
configure:3434: $? = 1
10
configure:3423: /usr/local/avr/avr-20140817/bin/avr-gcc -qversion >&5
11
avr-gcc: error: unrecognized command line option '-qversion'
12
avr-gcc: fatal error: no input files
13
compilation terminated.
14
configure:3434: $? = 1
15
configure:3454: /usr/local/avr/avr-20140817/bin/avr-gcc -o conftest    conftest.c  >&5
16
/tmp/cciUM8wi.s: Assembler messages:
17
/tmp/cciUM8wi.s:13: Error: too many memory references for `in'
18
/tmp/cciUM8wi.s:14: Error: too many memory references for `in'
19
/tmp/cciUM8wi.s:19: Error: no such instruction: `ldi r24,0'
20
/tmp/cciUM8wi.s:20: Error: no such instruction: `ldi r25,0'

Compiliert habe ich mit dem avr-gcc 4.9.1 unter arch linux. Setzt die 
avr-libc einen aktuelleren Compiler voraus (Anspielung auf die 
unbekannten Optionen -V und -qversion) oder liegt das Problem eher an 
meinem System?

Die avr-libc 1.8.0 liess sich mit dem avr-gcc 4.9.0 ohne Probleme 
kompilieren.

Danke & Gruß,
Oliver

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Stimmt wohl was mit deiner Umgebung / Installation nicht: Es wird der
falsche Assembler verwendet.

Außerdem ist es eher unwahrscheinlich, daß die GMP-Header in einer 
installierten AVR-Toolchain zu finden sind...

von Oliver (Gast)


Lesenswert?

Hallo Johann,

danke für die Hinweise. Zur Erstellung der avr-Toolchain verwende ich 
die Scripts von Bingo aus dem avrfreaks Forum; die einzigen Änderungen, 
die ich vorgenommen habe, sind die Anpassungen der Versionsnummern. Bis 
jetzt hat dieses immer funktioniert und zu einer benutzbaren Toolchain 
geführt.

Ich lasse gerade einen Referenzbuild mit der avr-libc-1.8.0 durchlaufen 
und werde das log-File auf Deine Anmerkungen hin kontrollieren.

Dass das Configscript 'avr-gcc -V' und 'avr-gcc -qversion' aufruft, ist 
also nicht seltsam? Der avr-gcc in der Version 4.9.1 kennt diese 
Parameter nicht.

von Oliver (Gast)


Lesenswert?

Update Mit dem gcc 4.9.1 und avr-libc-1.8.0 werden im config.log die 
gleichen Fehlermeldungen bzgl. den Optionen '-V' und '-qversion' 
erzeugt. Es wird auch hier '--with-gnu-as' verwendet, allerdings kommt 
es nicht zu den besagten Fehlermeldungen; die avr-libc wird anstandslos 
erzeugt.

Das Seltsame ist, dass ich bei einem zweiten Versuch, die avr-libc-1.8.1 
zu erstellen, keine Probleme mehr hatte. Aus irgendeinem Grund hat es 
nun funktioniert...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

An --with-gnu-** liegt's jedenfalls nicht.

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich muss leider nochmal doof nachfragen: Ich wollte die avr-libc-1.8.1 
mit dwarf-4 Debuginformationen compilieren und habe die Lib daher mit
1
--enable-debug-info=dwarf-4

konfiguriert. Der Compiler bricht beim compilieren von 'pgm_copystring' 
mit folgender Fehlermeldung ab:
1
/usr/local/avr/avr-20140818/bin/avr-gcc -DHAVE_CONFIG_H -I. -I../../../../../source/avr-libc-1.8.1/avr/lib/avr2 -I../../..  -I../../../../../source/avr-libc-1.8.1/common -I../../../../../source/avr-libc-1.8.1/include -I../../../include  -gdwarf-4 -Wall -W -Wstrict-prototypes -mmcu=avr2 -D__COMPILING_AVR_LIBC__ -mcall-prologues -Os  -MT strftime.o -MD -MP -MF .deps/strftime.Tpo -c -o strftime.o ../../../../../source/avr-libc-1.8.1/libc/time/strftime.c
2
../../../../../source/avr-libc-1.8.1/libc/time/strftime.c: In function 'pgm_copystring':
3
../../../../../source/avr-libc-1.8.1/libc/time/strftime.c:56:1: internal compiler error: in convert_debug_memory_address, at cfgexpand.c:3547
4
 pgm_copystring(const char __memx * p, unsigned char i, char *b, unsigned char l)
5
 ^
6
0x81aa193 convert_debug_memory_address
7
  ../../../source/gcc-4.9.1/gcc/cfgexpand.c:3547
8
0x81ae3b7 expand_debug_expr
9
  ../../../source/gcc-4.9.1/gcc/cfgexpand.c:3946
10
0x81aebcd expand_debug_expr
11
  ../../../source/gcc-4.9.1/gcc/cfgexpand.c:4505
12
0x81ad918 expand_debug_expr
13
  ../../../source/gcc-4.9.1/gcc/cfgexpand.c:3721
14
0x81b3968 expand_debug_locations
15
  ../../../source/gcc-4.9.1/gcc/cfgexpand.c:4814
16
0x81b3968 gimple_expand_cfg
17
  ../../../source/gcc-4.9.1/gcc/cfgexpand.c:5744
18
0x81b3968 execute
19
  ../../../source/gcc-4.9.1/gcc/cfgexpand.c:5961
20
Please submit a full bug report,
21
with preprocessed source if appropriate.
22
Please include the complete backtrace with any bug report.
23
See <http://gcc.gnu.org/bugs.html> for instructions.
24
Makefile:1871: recipe for target 'strftime.o' failed
25
make[4]: *** [strftime.o] Error 1
26
make[4]: Leaving directory '/usr/local/avr/avr-20140818/build/avr-libc-1.8.1/avr/lib/avr2'
27
Makefile:1891: recipe for target 'install-recursive' failed
28
make[3]: *** [install-recursive] Error 1
29
make[3]: Leaving directory '/usr/local/avr/avr-20140818/build/avr-libc-1.8.1/avr/lib/avr2'
30
Makefile:361: recipe for target 'install-recursive' failed
31
make[2]: *** [install-recursive] Error 1
32
make[2]: Leaving directory '/usr/local/avr/avr-20140818/build/avr-libc-1.8.1/avr/lib'
33
Makefile:361: recipe for target 'install-recursive' failed
34
make[1]: *** [install-recursive] Error 1
35
make[1]: Leaving directory '/usr/local/avr/avr-20140818/build/avr-libc-1.8.1/avr'
36
Makefile:423: recipe for target 'install-recursive' failed
37
make: *** [install-recursive] Error 1
38
(./buildavr-toolchain.sh) libc build failed


Die detailierten Config- und Build-Logs habe ich angehangen.

Die Fehlermeldung weist zwar darauf hin, einen Bug-Report einzustellen; 
mir wäre aber lieber, wenn jmd. ebenfalls versuchen könnte, die Lib mit 
dieser Option zu compilieren, um sicherzustellen, dass das Problem nicht 
nur auf meinem System (gcc 4.9.1, binutils 2.24, avr-libc-1.8.1) 
auftritt.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Oliver schrieb:
> ../../../../../source/avr-libc-1.8.1/libc/time/strftime.c:56:1: internal
> compiler error: in convert_debug_memory_address, at cfgexpand.c:3547
>  pgm_copystring(const char __memx * p, unsigned char i, char *b,
> unsigned char l)
>  ^
> 0x81aa193 convert_debug_memory_address
>   ../../../source/gcc-4.9.1/gcc/cfgexpand.c:3547

Vermutlich http://gcc.gnu.org/PR52472

von Oliver S. (z0ttel)


Lesenswert?

Hallo Johann,

interessant... Verstehe ich den letzten Eintrag aus dem bug report 
richtig, dass es für dieses Problem nun einen Patch (aktualisiertes 
"cfgexpand.c") gibt?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ja, es gibt einen Patch für die 5.0.

von Karsten F. (Firma: von Dänemark) (bingo600)


Lesenswert?


von Karsten F. (Firma: von Dänemark) (bingo600)


Lesenswert?

Oopzz

Habe nicht die dwarf4 fehler gesehen , nur die erste avrlibc-1.8.1.

Die dwarf4 fehler sind vermotlich auch im meiner version , als das ist 
einer "stock" 4.9.1 source.

/Bingo

von Oliver S. (z0ttel)


Lesenswert?

Hallo Karsten,

kein Problem - "mange tak" für Deine Buildscripte :D

Grüße,
Oliver

von Karol B. (johnpatcher)


Lesenswert?

Oliver schrieb:
> Compiliert habe ich mit dem avr-gcc 4.9.1 unter arch linux.

Mittlerweile befindet sich eine aktualisierte Version in 
community-testing [1]. Aufgrund eines Bugs, lässt sich avr-libc 1.8.1 
nicht mit avr-gcc 4.9.0 kompilieren, mit 4.9.1 klappt es aber 
problemlos. Keine Ahnung was du da falsch gemacht hast ;).

Mit freundlichen Grüßen,
Karol Babioch

[1]: 
https://mailman.archlinux.org/pipermail/arch-general/2014-August/037028.html

von Oliver (Gast)


Lesenswert?

Hallo Karol,

wurde die avr-libc in dem Paket mit "--enable-debug-info=dwarf-4" 
konfiguriert?

Wenn ja, wäre ich an weiteren Details/einem Link zu den Details 
interessiert. Ohne diese Option habe ich auch keine Probleme, die 
Toolchain zu erzeugen.

Grüße,
Oliver

von Stephan B. (matrixstorm)


Lesenswert?

Hallo Joerg.
Zunaechst einmal Danke fuer den neuen Release.

Jörg Wunsch schrieb:
> * New devices supported:
>

>     [...], ATmega8A, [...]

Was ist da jetzt dazugekommen? Inwiefern untescheidet sich jetzt der 
ATmega8A vom ATmega8 ?

MfG

von Karsten F. (Firma: von Dänemark) (bingo600)


Lesenswert?


von Stephan B. (matrixstorm)


Lesenswert?

Ja.

Ich mein ja auch in der Library. (Nicht in der Hardware.)

Der Atmega8A hat effektiv die gleiche Signatur wie der ATmega8.
Es sollte also gar keine Unterscheidung in 8/8A softwareseitig geben, 
oder?

MfG

von Karsten F. (Firma: von Dänemark) (bingo600)


Angehängte Dateien:

Lesenswert?

Nur Jörg kan mit 100% sicherheit das sagen , aber von die intro ich 
vollte sage ja ... Sie sind 100% identisch , als sehen von die compiler. 
Nur die electric specs. hast verändert.


Intro:
1
In order to optimize the manufacturing process and to further reduce current
2
consumption, an optimized version of ATmega8 has been introduced.
3
Application Note
4
The ATmega8A is a functionally identical, drop-in replacement for the ATmega8.
5
All devices are subject to the same qualification process and same set of
6
production tests, but as the manufacturing process is not the same some electrical
7
characteristics differ.

Die makefiles und ioregs indikere kein verschideness.
Siehe anhang.

mfg
Bingo

Hoffe Sie verstehe meiner (nur 2 jahre deutch im schule)

: Bearbeitet durch User
von Stephan B. (matrixstorm)


Lesenswert?

Karsten F. schrieb:
> Hoffe Sie verstehe meiner (nur 2 jahre deutch im schule)

Leider manchmal etwas schwierig, den Sinn zu erkennen.

Wenn Sie deutsch besser lesen koennen, als schreiben:
Es hat hier sicherlich auch niemand was dagegen, wenn Sie vereinzelt 
ihre Antworten in englisch verfassen?

MfG

von Karol B. (johnpatcher)


Lesenswert?

Oliver schrieb:
> wurde die avr-libc in dem Paket mit "--enable-debug-info=dwarf-4"
> konfiguriert?

Nein, das schlägt in der Tat fehl. Habe das an offizieller Stelle 
gemeldet [1] und laut Jörg liegt es wohl an einem Bug innerhalb von GCC 
selbst und ist dort bereits bekannt [2]. So wie ich das sehe gibt es 
bereits einen Patch, das Ganze sollte also hoffentlich irgendwann einmal 
(in naher Zukunft) funktionieren ;).

Mit freundlichen Grüßen,
Karol Babioch

[1]: https://savannah.nongnu.org/bugs/index.php?43049
[2]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62084

: Bearbeitet durch User
von Oliver (Gast)


Lesenswert?

Karol Babioch schrieb:
> Nein, das schlägt in der Tat fehl. Habe das an offizieller Stelle
> gemeldet [1] und

Hey - danke fürs Reproduzieren/Bestätigen und 'kümmern' ;)

Grüße,
Oliver

von Thorsten S. (thosch)


Lesenswert?

Mal 'ne dumme Frage:

Wie kommt man als Anwender des aktuellen Atmel-Studio 6.2 in den Genuß 
dieser Lib? Muß man da (ggf. länger) auf ein Update von Atmel warten?


Wie bekomme ich überhaupt die Version der avr-libc heraus, die im 
Atmel-Studio verwendet wird? Habe da bislang nix zu gefunden.

Habe das letzte AVR8-Toolchain-Update fürs Atmel-Studio installiert (das 
ist vom 30.04.2014), die Toolchain liegt offenbar im Verzeichnis
1
C:\Programme\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\

Wenn ich das richtig sehe, ist die 3.4.1056 die Atmel-interne 
Versionsnummer, und die GCC-Version dort anscheinend die 4.8.1, aber wo 
finde ich die Version der avr-libc?

Gruß,
Thorsten

von Mark 99 (Gast)


Lesenswert?

Thorsten S. schrieb:
> Wie bekomme ich überhaupt die Version der avr-libc heraus, die im
> Atmel-Studio verwendet wird? Habe da bislang nix zu gefunden.

Include-Datei avr/version.h suchen, reinsehen.

von Thorsten S. (thosch)


Lesenswert?

Mark 99 schrieb:
> Include-Datei avr/version.h suchen, reinsehen.

Besten Dank!
Manche Dinge sind ganz einfach, wenn man nur weiß wie's geht. ;-)

Versions-String ist "1.8.0svn" also die Vorgängerversion
(was logisch erscheint, da die Toolchain vom 30.04.2014 ist).

Ist es möglich, und falls ja, überhaupt sinnvoll, die libc unabhängig 
vom Rest der Toolchain upzudaten?

Gruß,
Thorsten

von Mark 99 (Gast)


Lesenswert?

Möglich: ja.

Sinnvoll: Musst du entscheiden. Brauchst du eines der neuen Features? 
Willst du einen der Bugfixes? Ansonsten "never change a running system" 
ist das Gegenargument.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Thorsten S. schrieb:
> Wie kommt man als Anwender des aktuellen Atmel-Studio 6.2 in den Genuß
> dieser Lib? Muß man da (ggf. länger) auf ein Update von Atmel warten?

Ich vermute mal, daß Atmel keine 1.8.0 ausliefert sondern eine neuere 
(inoffizielle) Version, denn die 1.8.0 kann mit avr-gcc 4.7+ nicht 
funktionieren.

Such einfach mal im Installationsverzeichnis nach 'tiny-stack'; wenn's 
solche Verzeichnisse gibt, dann ist's keine avr-libc 1.8.0.

von Thorsten S. (thosch)


Lesenswert?

Johann L. schrieb:
> Ich vermute mal, daß Atmel keine 1.8.0 ausliefert sondern eine neuere
> (inoffizielle) Version, denn die 1.8.0 kann mit avr-gcc 4.7+ nicht
> funktionieren.
Offensichtlich hast Du recht, denn die Lib des Atmel-Studio 6.2 
unterstützt bereits die in Jörgs Post oben unter "new devices supported" 
gelisteten Controller, wie den ATMEGA256RFR2, XMEGA16A4U ...
Hab jetzt nicht alle durchgesehen, aber die, bei denen ich nachgeschaut 
habe, waren schon drin.

> Such einfach mal im Installationsverzeichnis nach 'tiny-stack'; wenn's
> solche Verzeichnisse gibt, dann ist's keine avr-libc 1.8.0.
Ja, gibt's.
Besten Dank. Atmel hat ganz offensichtlich da was dran verändert.
Also werde ich schön die Finger davonlassen, an der Lib rumzufummeln,
zumal ich bislang kein Problem damit feststellen konnte.

von Stephan B. (matrixstorm)


Lesenswert?

Ja. Atmelt patcht meines Wissens nach aber nur die avr-libc nach eigenen 
Vorstellungen.
Es ist keine Neuentwicklung/Parallelprodukt.

MfG

von Karol B. (johnpatcher)


Lesenswert?

Stephan B. schrieb:
> Ja. Atmelt patcht meines Wissens nach aber nur die avr-libc nach eigenen
> Vorstellungen.

Die kooperieren bzw. bringen sich seit einigen Jahren bei allen 
benötigten Werkzeugen der Toolchain ein, also auch bei der gcc und den 
binutils.

Allerdings sitzen die noch auf einer Menge von Patches und Anpassungen, 
die sie nur sehr mühselig in die entsprechenden Projekte einbringen. 
Laut E-Mail Kontakt mit einem Atmel Mitarbeiter liegt das wohl in erster 
Linie daran, dass sie schlichtweg noch nicht dazu gekommen sind.

Mich z.B. stört derzeit der fehlende Support für ATtiny441/841 am 
Meisten. Mittlerweile ist zwar wenigstens die gcc im SVN trunk soweit, 
innerhalb von avr-libc fehlt davon aber immer noch jede Spur. Mal sehen 
wie lange sie sich hierfür noch Zeit lassen werden bzw. wann die nächste 
Version von avr-libc dann überhaupt veröffentlicht wird ;).

Zumindest nach meinem Verständnis machen sich die Leute von Atmel das 
Leben aber selbst schwer, weil sie trotz der gleichen Codebasis den 
Überblick über etliche Versionen behalten müssen. Allein für das Atmel 
Studio gibt es, soweit ich weiß, ja mehrere Support Packages usw. Keine 
Ahnung warum da nicht einfach alles in die Upstream Projekte gepusht 
wird, sodass man keine (oder möglichst wenige) interne Anpassungen mehr 
vornehmen muss.

Mit freundlichen Grüßen,
Karol Babioch

: Bearbeitet durch User
von Konrad S. (maybee)


Lesenswert?

Karol Babioch schrieb:
> Mich z.B. stört derzeit der fehlende Support für ATtiny441/841 am
> Meisten. Mittlerweile ist zwar wenigstens die gcc im SVN trunk soweit,
> innerhalb von avr-libc fehlt davon aber immer noch jede Spur.

Du sprichst hierbei von gcc und avr-libc, richtig?

Bei Atmels Version der (Linux-)Toolchain mit avr-libc habe ich mir damit 
bisher noch keine Probleme eingehandelt. Aber ich würde auch lieber mit 
"regulären" Releases arbeiten, zumal ATtiny441/841 nicht erst seit 
gestern auf dem Markt sind.

von Karol B. (johnpatcher)


Lesenswert?

Konrad S. schrieb:
> Du sprichst hierbei von gcc und avr-libc, richtig?

Ja.

Konrad S. schrieb:
> Bei Atmels Version der (Linux-)Toolchain mit avr-libc habe ich mir damit
> bisher noch keine Probleme eingehandelt.

Probleme gibt es damit wohl keine (zumindest nicht mehr als mit den 
regulären Versionen). Das Problem ist halt, dass die "veraltet" sind 
(gcc 4.4.7?). Für den Download muss man sich registrieren und überhaupt 
ist die Installation viel "komplizierter". Die regulären Versionen 
finden sich hingegen in der Paketverwaltung jeder Distribution.

Konrad S. schrieb:
> Aber ich würde auch lieber mit
> "regulären" Releases arbeiten, zumal ATtiny441/841 nicht erst seit
> gestern auf dem Markt sind.

Eben.

Mit freundlichen Grüßen,
Karol Babioch

von Konrad S. (maybee)


Lesenswert?

Karol Babioch schrieb:
> Das Problem ist halt, dass die "veraltet" sind
> (gcc 4.4.7?).

avr-gcc --version
avr-gcc (AVR_8_bit_GNU_Toolchain_3.4.3_1072) 4.8.1

> Für den Download muss man sich registrieren

Wohl wahr!

> und überhaupt
> ist die Installation viel "komplizierter".

tar xzf avr8-gnu-toolchain-3.4.3.1072-linux.any.x86_64.tar.gz

> Die regulären Versionen
> finden sich hingegen in der Paketverwaltung jeder Distribution.

Leider zuweilen auch ganz schön veraltet.

von bal (Gast)


Lesenswert?

Konrad S. schrieb:
> tar xzf avr8-gnu-toolchain-3.4.3.1072-linux.any.x86_64.tar.gz

Installieren != Entpacken

von Konrad S. (maybee)


Lesenswert?

bal schrieb:
> Installieren != Entpacken

Gelaber!

von Karol B. (johnpatcher)


Lesenswert?

Konrad S. schrieb:
> bal schrieb:
>> Installieren != Entpacken
>
> Gelaber!

Nö, damit hat er schon nicht ganz unrecht. Zumindest einmal müsste man 
den Ordner noch in die PATH Umgebungsvariable packen. Nutzbar ist das so 
aber nur für den einzelnen Nutzer, ansonsten müsste man es außerhalb des 
Home-Verzeichnisses ablegen. Und ohne es dem Paket-Manager mitzuteilen 
(d.h. ein Paket zu erstellen) ist das nicht unbedingt die feine 
englische Art. Prinzipiell alles lösbare "Probleme", aber das alles 
sollte halt eigentlich gar nicht notwendig sein - vor allem weil Atmel 
versprochen hat enger mit den Upstream Projekten zusammen zu arbeiten.

Konrad S. schrieb:
> Karol Babioch schrieb:
>> Das Problem ist halt, dass die "veraltet" sind
>> (gcc 4.4.7?).
>
> avr-gcc --version
> avr-gcc (AVR_8_bit_GNU_Toolchain_3.4.3_1072) 4.8.1

Ich habe diese Information aus den dazugehörigen Release Notes. 
Scheinbar ist das dann nicht korrekt? Ist die Version unter Windows die 
selbe?

Konrad S. schrieb:
>> Die regulären Versionen
>> finden sich hingegen in der Paketverwaltung jeder Distribution.
>
> Leider zuweilen auch ganz schön veraltet.

Nicht bei Arch Linux ;).

Mit freundlichen Grüßen,
Karol Babioch

: Bearbeitet durch User
von Konrad S. (maybee)


Lesenswert?

Karol Babioch schrieb:
> Konrad S. schrieb:
>> bal schrieb:
>>> Installieren != Entpacken
>>
>> Gelaber!
>
> Nö, damit hat er schon nicht ganz unrecht. Zumindest einmal müsste man
> den Ordner noch in die PATH Umgebungsvariable packen. Nutzbar ist das so
> aber nur für den einzelnen Nutzer, ansonsten müsste man es außerhalb des
> Home-Verzeichnisses ablegen. Und ohne es dem Paket-Manager mitzuteilen
> (d.h. ein Paket zu erstellen) ist das nicht unbedingt die feine
> englische Art. Prinzipiell alles lösbare "Probleme",

Nun, ich habe viele Jahre eine größere (überwiegend) Unix-Umgebung 
betreut und ausgebaut und bin dadurch "vorbelastet". Und aus dieser 
Erfahrung heraus kann ich sagen, dass eine "Installation" eines 
positionsunabhängigen Softwarepakets, das noch nicht einmal eine harte 
Abhängigkeit von einer bestimmten Distribution oder Version aufweist, 
aus einem tar.gz heraus zu den einfacheren Dingen des SysAdmin-Lebens 
gehört. Insofern hat Atmel hier gute Arbeit geleistet.

Das Verseuchen von PATH mit allen möglichen Verzeichnispfaden, die auch 
nur irgenwas Ausführbares enthalten (generell des Environments mit 
Konfigurationsdaten), führt früher oder später zum Tod eines geordneten 
Betriebsablaufs. Spätestens dann, wenn mehrere Versionen einer Software 
vom selben User benutzt werden müssen, am Besten noch gleichzeitig.

Ein bewährter Lösungsansatz nimmt ein einziges Verzeichnis in PATH auf. 
In dieses Verzeichnis kommen symbolische Links auf Programme bzw. 
Aufrufscripts für Programme, die spezielles Environment benötigen.

> aber das alles
> sollte halt eigentlich gar nicht notwendig sein - vor allem weil Atmel
> versprochen hat enger mit den Upstream Projekten zusammen zu arbeiten.

Ja, diese Hoffnung bleibt. Es ist doch angenehmer per Paketverwaltung - 
klickediklick - die aktuelle Toolchain zu installieren. Muss man nicht 
soviel nachdenken - äääähmmm?!? - hat man mehr Zeit, die man ins Ziel 
investieren kann, anstatt in den Weg.

> Konrad S. schrieb:
>> Karol Babioch schrieb:
>>> Das Problem ist halt, dass die "veraltet" sind
>>> (gcc 4.4.7?).
>>
>> avr-gcc --version
>> avr-gcc (AVR_8_bit_GNU_Toolchain_3.4.3_1072) 4.8.1
>
> Ich habe diese Information aus den dazugehörigen Release Notes.
> Scheinbar ist das dann nicht korrekt? Ist die Version unter Windows die
> selbe?

Ich habe die Linux-Version von hier:
http://www.atmel.com/tools/atmelavrtoolchainforlinux.aspx?tab=overview

Die dazu passende Windows-Version sollte hier sein:
http://www.atmel.com/tools/atmelavrtoolchainforwindows.aspx

Da findet sich auch:
1
Atmel AVR 8-bit Toolchain 3.4.4.1229 - Release Note
2
(file size: 54kB, 11 pages, revision 3.4.4.1229, updated: 05/2014)

> Konrad S. schrieb:
>>> Die regulären Versionen
>>> finden sich hingegen in der Paketverwaltung jeder Distribution.
>>
>> Leider zuweilen auch ganz schön veraltet.
>
> Nicht bei Arch Linux ;).

Ja, das ist schon vorgemerkt als Ablösung für mein aktuell noch 
eingesetztes Ubuntu 10.04. Muss eh bald weg, weil es dann keine Updates 
mehr gibt.

von Leo C. (rapid)


Lesenswert?

Karol Babioch schrieb:
> Die regulären Versionen
> finden sich hingegen in der Paketverwaltung jeder Distribution.

Dann ist Debian wohl keine Distribution. Da ist nämlich seit einiger 
Zeit die Atmel Toolchain drin.

von Karol B. (johnpatcher)


Lesenswert?

Konrad S. schrieb:
> Nun, ich habe viele Jahre eine größere (überwiegend) Unix-Umgebung
> betreut und ausgebaut und bin dadurch "vorbelastet".

Ein paar Jährchen Unix bzw. (überwiegend) Linux Erfahrung habe ich auch 
schon sammeln dürfen - unter anderem auch auf Servern.

Konrad S. schrieb:
> Insofern hat Atmel hier gute Arbeit geleistet.

Ja, verglichen mit vielen anderen Toolchains ist das wirklich 
verhältnismäßig einfach.

Konrad S. schrieb:
> Ein bewährter Lösungsansatz nimmt ein einziges Verzeichnis in PATH auf.
> In dieses Verzeichnis kommen symbolische Links auf Programme bzw.
> Aufrufscripts für Programme, die spezielles Environment benötigen.

Wobei das aktuell halten der symbolischen Links auf einem 
Rolling-Release Desktop-System wie Arch Linux wohl auch nur bedingt Spaß 
macht. Es kommen immer mal wieder neue Werkzeuge hinzu bzw. alte werden 
ersetzt. Ich verlasse mich da größtenteils auf die Distribution (sowohl 
bei Desktops als auch bei Servern) und hatte da noch nie größere 
Probleme. Kleinere Anpassungen kann man ja z.B. über "/etc/profile.d" 
vornehmen ...

Leo C. schrieb:
> Dann ist Debian wohl keine Distribution.

Sehe ich genauso ;). Let the flame war begin ...

Leo C. schrieb:
> Da ist nämlich seit einiger
> Zeit die Atmel Toolchain drin.

Wenn ich das [1] gerade richtig interpretiere, dann aber erst im 
aktuellen testing Zweig (jessie). Im stable Zweig findet man hingegen - 
ganz in guter alter Debian Manier - nur eine "veraltete" Version 
(4.7.2).

Unabhängig davon war meine "Kritik" ja hauptsächlich an Atmel selbst 
gerichtet und ich wollte hier nicht die Vor- bzw. Nachteile der diversen 
Distributionen diskutieren. Fakt ist, dass Atmel vor einiger Zeit 
versprochen hat sich bei den Upstream Projekten einzubringen - bisher 
leider nur mit mäßigem Erfolg, weil zum Teil fast selbst ein Jahr alte 
Controller noch nicht von diesen Werkzeugen unterstützt werden.

Mit freundlichen Grüßen,
Karol Babioch

[1]: https://packages.debian.org/de/wheezy/gcc-avr

von Konrad S. (maybee)


Lesenswert?

Leo C. schrieb:
> Dann ist Debian wohl keine Distribution. Da ist nämlich seit einiger
> Zeit die Atmel Toolchain drin.

Hm, die Toolchain, die hier
http://www.atmel.com/tools/atmelavrtoolchainforlinux.aspx?tab=overview
zu finden ist, hat Erweiterungen für z.B. ATtiny841 drin. Das bezeichne 
ich als "Atmel Toolchain", im Sinne von: diese Toolchain stammt von 
Atmel. Dagegen ist in den Debian-Paketen nur der avr-gcc usw. ohne diese 
Erweiterungen enthalten. Falls ich mich diesbezüglich irre, lass es mich 
wissen, denn ich würde auch lieber Pakete verwenden.

von Karol B. (johnpatcher)


Lesenswert?

Konrad S. schrieb:
> Dagegen ist in den Debian-Paketen nur der avr-gcc usw. ohne diese
> Erweiterungen enthalten. Falls ich mich diesbezüglich irre, lass es mich
> wissen, denn ich würde auch lieber Pakete verwenden.

Ohne es überprüft zu haben: Im testing Zweig befindet sich wohl 
tatsächlich die gesamte Atmel Toolchain (basierend auf Version 3.4.4), 
siehe [1] [2] [3]. Inwiefern das Ganze schon brauchbar ist (bzw. was das 
alles für Abhängigkeiten aus testing nach sich zieht, kann ich gerade 
nicht bewerten).

Alles in allem: Wie weiter oben schon angedeutet, halte ich das für eine 
unnötige Fragmentation seitens Atmel.

Mit freundlichen Grüßen,
Karol Babioch

[1]: https://packages.debian.org/de/sid/binutils-avr
[2]: https://packages.debian.org/de/sid/gcc-avr
[3]: https://packages.debian.org/de/sid/avr-libc

: Bearbeitet durch User
von Konrad S. (maybee)


Lesenswert?

@Karol Babioch
Danke dir! Das sieht ja schon mal recht gut aus. Muss ich mir die 
nächsten Tage mal Zeit nehmen dafür.

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.