Absender: Timo Sandmann
Datum: Sa, 12.03.2011 15:42:02
In-reply-to:
<1299936788.29879.17.camel@wbam-laptop>
References:
<1299879280.2166.26.camel@arphen-lenovo> <4D7A9A22.3010605@xxxxxxxx> <90876512-8C3D-4B6A-B952-41FBDA731DFB@xxxxxxxxxxxxxxx> <1299936788.29879.17.camel@wbam-laptop>
Hallo Simon, Am 12.03.2011 um 14:33 schrieb Simon Siemens: > Hallo Timo, > > leider stimmen die Angaben zur minimalen gcc- und libc-Version nicht > mehr. Dreh- und Angelpunkt dürfte sein, dass du seit Release 17 > avr/builtins.h verwendest (in timer.h, delay.h, os_utils.h und fifo.h). > > Ubuntu bietet die folgenden Versionen der AVR-Werkzeuge. (Auch in Debian > unstable ist nichts neueres.) > > avr-binutils 2.20 (vmtl. 2.20.0) > avr-gcc 4.3.4 > avr-libc 1.6.7 > > Diese avr-libc enthält aber nicht avr/builtins.h. ah ok. Seit avr-libc 1.6.6 gibt es einen Patch für die builtins, der u.a. von WinAVR verwendet wird und avr/builtins.h bereitstellt. Vermutlich ist der im Ubuntu / Debian-Paket aber nicht eingespielt worden. Eigentlich teste ich den Bot-Code auch immer unter Linux (Ubuntu x86_64 10.10; AVR-Distributiuonspakete). Ich habe dort gerade noch mal den aktuellen Stable-Code übersetzt und bekomme nur ein Warning, dass avr/builtins.h nicht vorhanden ist, was aber nicht weiter tragisch ist. Die Version sind dort: - avr-binutils 2.20.1.20100303 - avr-gcc 4.3.5 - avr-libc 1.6.8 Es gäbe prinzipiell einen ganz einfachen Workaround, falls nur die avr-libc zu alt ist: Für ältere avr-libc Versionen liefern wie den Inhalt von builtins.h einfach mit dem Bot-Code mit. Das hilft natürlich nicht, wenn der Compiler auch zu alt ist. > Darum versuchten wir, avr-libc 1.7.1 zu installieren. Das klappt soweit > auch; die avr/builtins.h wurde gefunden. Dann kann der Linker aber > einige builtins-Funktionen nicht finden (z.B. __builtin_avr_cli oder > __builtin_avr_delay_cycles). Soweit ich das verstehe, sind diese > Funktionen nicht in irgendeiner Bibliothek sondern werden vom Compiler > direkt ersetzt. Wenn der Linker also die builtins-Funktionen nicht > findet, dann ist der Compiler veraltet. Ja genau, mit welcher Compiler-Version hatte ihr das Problem? Wir können sonst auch dort, wo im Bot-Code builtins benutzt werden, eine Alternative einbauen für ältere Compiler. Wobei man dadurch u.U. Funktionalität einbüßt (cli / sei Problem). > Insofern stimmend die minimalen Anforderungen bezüglich der gcc-Version > und libc-Version nicht mehr. Die Distributionspakete funktionieren > (leider!) nicht mehr. Selbiges gilt auch für OpenSUSE, für das die > Pakete > > avr-binutils 2.19.1 > avr-gcc 4.3.3 > avr-libc 1.7.1 > > verfügbar sind. Leider sind die Verantwortlichen für die Linux-Distributionspakete der AVR-Toolchain irgendwie nie auf dem Laufenden bzw. gleichen Stand wie WinAVR oder AVR-Crosspack. Wer Code für neuere AVR-Mikrokontroller compilieren will, hat dasselbe Problem. Ich schaue mir auf jeden Fall noch mal an, welche Compiler-Version was mitbringt und gebraucht wird, so dass wir die Anforderungen möglichst auf erhältliche Distributionspakete begrenzen können. Mit denen von Ubuntu 10.10 (s.o.) funktioniert es bei mir aber schon mal. Gruß, Timo