Forum: Compiler & IDEs attiny45 mit avr-gcc nur halb unterstützt


von Stefan K. (nukeman)


Lesenswert?

Hallo zusammen,

ich programmiere schon seit längerem PICs (unter Win) und ATMEGAs unter
Linux in C und ein wenig Assembler. Bin also in der Materie nicht ganz 
neu.
Jetzt habe ich gerade eine Hardware mit einem Attiny45 zusammengebraten,
kann sie auch mit dem avrdude ansprechen, nur der Compiler unter Linux
( OpenSuse10.2 ) streikt:

sk@noname:> make
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=attiny45 -DF_CPU=16500000 
-DDEBUG_LEVEL=0 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
unknown MCU 'attiny45' specified
Known MCU names:
   avr2
   at90s2313
   at90s2323
   at90s2333
   at90s2343
   attiny22
   attiny26
   at90s4414
   at90s4433
   at90s4434
   at90s8515
   at90c8534
   at90s8535
   at86rf401
   attiny13
   attiny2313
   avr3
   atmega103
   atmega603
   at43usb320
   at43usb355
   at76c711
   avr4
   atmega8
   atmega48
   atmega88
   atmega8515
   atmega8535
   avr5
   atmega16
   atmega161
   atmega162
   atmega163
   atmega165
   atmega168
   atmega169
   atmega32
   atmega323
   atmega325
   atmega3250
   atmega64
   atmega645
   atmega6450
   atmega128
   at90can128
   at94k
   avr1
   at90s1200
   attiny11
   attiny12
   attiny15
   attiny28
usbdrv/usbdrv.c:1: error: MCU 'attiny45' supported for assembler only

andererseits:

sk@noname:> avr-gcc --target-help
<bla..bla>
Known MCU names:
  avr1 avr2 avr3 avr4 avr5 at90s1200 attiny10 attiny11 attiny12 attiny15
  attiny28 at90s2313 at90s2323 at90s2333 at90s2343 attiny22 attiny26
  at90s4433 at90s4414 at90s4434 at90s8515 at90s8535 at90c8534 at86rf401
  attiny13 attiny2313 attiny261 attiny461 attiny861 attiny24 attiny44
  attiny84 attiny25 attiny45 attiny85 atmega603 atmega103 at43usb320
  at43usb355 at76c711 atmega48 atmega8 atmega83 atmega85 atmega88
  atmega8515 atmega8535 at90pwm2 at90pwm3 atmega16 atmega161 atmega162
  atmega163 atmega164 atmega165 atmega168 atmega169 atmega32 atmega323
  atmega324 atmega325 atmega329 atmega3250 atmega3290 atmega406 atmega64
  atmega640 atmega644 atmega128 atmega1280 atmega1281 atmega645 
atmega649
  atmega6450 atmega6490 at90can32 at90can64 at90can128 at90usb646
  at90usb647 at90usb1286 at90usb1287 at94k
  no emulation specific options.

Der avr-gcc -v  gibt Version
gcc version 4.1.2
aus.

Ich habe im Internet gesehen, dass es Patches für "neuere" Atmels gibt,
weiss aber nicht genau, wie man diese anwendet und vor allem was ich
aufgrund der Fehlermeldung patchen soll ( compiler, avr-libc ) und ob 
ein
Patch automatisch mit meiner Version harmoniert.

Vielleicht kann mir jemand ein bisschen mehr Klarheit verschaffen.

Gruß
Stefan

von Bernhard M. (boregard)


Lesenswert?

Würde ich mal sagen avr-gcc zu alt...

Ich habe:
1
avr-gcc --version
2
avr-gcc (GCC) 4.3.2
unter debian (sidux), der kannt sogar schon xmegas..
1
avr-gcc --target-help
2
.......
3
Known MCU names:
4
  avr1 avr2 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2
5
  avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 at90s1200 attiny11
6
  attiny12 attiny15 attiny28 at90s2313 at90s2323 at90s2333 at90s2343
7
  attiny22 attiny26 at90s4433 at90s4414 at90s4434 at90s8515 at90s8535
8
  at90c8534 at86rf401 attiny13 attiny2313 attiny261 attiny461 attiny861
9
  attiny24 attiny44 attiny84 attiny25 attiny45 attiny85 attiny43u attiny48
10
  attiny88 atmega103 at43usb320 at43usb355 at76c711 at90usb82 at90usb162
11
  attiny167 atmega48 atmega48p atmega8 atmega88 atmega88p atmega8515
12
  atmega8535 atmega8hva at90pwm1 at90pwm2 at90pwm2b at90pwm3 at90pwm3b
13
  atmega16 atmega161 atmega162 atmega163 atmega164p atmega165 atmega165p
14
  atmega168 atmega168p atmega169 atmega169p atmega32 atmega323 atmega324p
15
  atmega325 atmega325p atmega328p atmega329 atmega329p atmega3250
16
  atmega3250p atmega3290 atmega3290p atmega406 atmega64 atmega640
17
  atmega644 atmega644p atmega128 atmega1280 atmega1281 atmega1284p
18
  atmega645 atmega649 atmega6450 atmega6490 atmega16hva at90can32
19
  at90can64 at90can128 at90pwm216 at90pwm316 atmega32c1 atmega32m1
20
  atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287 at94k
21
  atmega2560 atmega2561 atxmega64a1 atxmega128a1

Wenns keine neuere Version für SuSE gibt, dann installier doch (lokal, 
z.B. in /opt) eine neuere..

Gruß,
Bernhard

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


Lesenswert?

Ja, GCC 4.1.2 ist wirklich hornalt.

Ich würde dir Bingo600s Script zum Selbstbauen einer aktuellen
Toolchain empfehlen:

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=42631

von Nukeman (Gast)


Lesenswert?

Vielen Dank schonmal, werd's heute abend nach der Arbeit mal antesten.

von Stefan K. (nukeman)


Lesenswert?

Hi zusammen.

Kurzer Zwischenstatus: Es funktioniert fast überhaupt nichts mehr, 
selbst
der Makelauf für alte Projekte läuft nicht durch weil es scheinbar
keinen Linker mehr gibt. Sieht gerade aber wieder etwas positiver aus.
Die Builds laufen noch.

Nachdem ich den gcc updaten wollte, fehlten ihm naturgemäss einige
Module. Dem nachinstallierten Modul "pupifax" fehlten dann wieder
"schnurdiwutz" und "hackidoof" usw.  Das sind natürlich nur erfundene
Namen. Dennoch finde ich das eine ziemlich doofe Eigenschaft unter
Linux. Wenn etwas fehlt, sollte der zu installierende Programmteil
eigentlich selbst die Methoden dafür mitbringen das nachzurüsten,
dann eben nachfragen, ob das ok ist das Modul nachzuziehen und fertig.
Ja, Paketinstaller mit Dep-Checker verwenden, aber häufig geht das nicht
weil einem für die Distri nur der Sourcecode bleibt.

So, texinfo ist upgedated, die heisseste binutils ist jetzt drin,
mal sehen, was gcc und avr-libc jetzt sagen.

Jetzt hampel ich hier seit 3 Stunden rum, und am Anfang meines Problems
haben wahrscheinlich nur eine handvoll Register-Defines für den Tiny45
gefehlt..


Gruß
Stefan

von yalu (Gast)


Lesenswert?

Die AVR-Tool-Chain hat eigentlich nicht allzu viele Abhängigkeiten. Wenn
du folgende Pakete in halbwegs aktuellen Versionen er Reihe nach für
AVRs kompilierst und installierst, sollten die meisten der neueren AVRs
(incl. dem attiny45, der nicht mehr ganz so neu ist) unterstützt werden:

  binutils
  gcc
  avr-libc

Ich selber verwende binutils 2.18, gcc 4.2.4 (4.3.2 zum Testen) und
avr-libc 1.6.2 unter Linux und bin glücklich damit. Zumindest hat bisher
noch kein ATtiny45 seine Arbeit verweigert :)

von Stefan K. (nukeman)


Lesenswert?

Jetzt klappt wieder alles.
Hab binutils, gcc und avr-libc auf dem neuesten Stand, nebenbei auch
gmp, make, mpfr und texinfo. Manche makes wollte nur root erfolgreich
durchführen.
Und ein Boot tut auch immer gut :)
Sorry für meinen verbose-mode, ich war echt geladen :)

Vielen Dank für die Unterstützung.

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


Lesenswert?

Stefan K. wrote:

> Und ein Boot tut auch immer gut :)

Ist aber hier wirklich komplett unnötig.

Ich habe die Tools auch schon vielfach als nicht-root gebaut, allerdings
dann natürlich nicht mit einem --prefix, der auf die Systemverzeichnisse
zeigt.

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.