mikrocontroller.net

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


Autor: Stefan K. (nukeman)
Datum:

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

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde ich mal sagen avr-gcc zu alt...

Ich habe:
avr-gcc --version
avr-gcc (GCC) 4.3.2
unter debian (sidux), der kannt sogar schon xmegas..
avr-gcc --target-help
.......
Known MCU names:
  avr1 avr2 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2
  avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 at90s1200 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 attiny43u attiny48
  attiny88 atmega103 at43usb320 at43usb355 at76c711 at90usb82 at90usb162
  attiny167 atmega48 atmega48p atmega8 atmega88 atmega88p atmega8515
  atmega8535 atmega8hva at90pwm1 at90pwm2 at90pwm2b at90pwm3 at90pwm3b
  atmega16 atmega161 atmega162 atmega163 atmega164p atmega165 atmega165p
  atmega168 atmega168p atmega169 atmega169p atmega32 atmega323 atmega324p
  atmega325 atmega325p atmega328p atmega329 atmega329p atmega3250
  atmega3250p atmega3290 atmega3290p atmega406 atmega64 atmega640
  atmega644 atmega644p atmega128 atmega1280 atmega1281 atmega1284p
  atmega645 atmega649 atmega6450 atmega6490 atmega16hva at90can32
  at90can64 at90can128 at90pwm216 at90pwm316 atmega32c1 atmega32m1
  atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287 at94k
  atmega2560 atmega2561 atxmega64a1 atxmega128a1

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

Gruß,
Bernhard

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: Nukeman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank schonmal, werd's heute abend nach der Arbeit mal antesten.

Autor: Stefan K. (nukeman)
Datum:

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

Autor: yalu (Gast)
Datum:

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

Autor: Stefan K. (nukeman)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.