Forum: Compiler & IDEs Verwirrung mit avr-gcc-Versionen


von Sebastian Fahrner (Gast)


Lesenswert?

Hallo,

ich hab mir mal verschiedene Threads in diesem Forum durchgelesen und 
bin etwas verwirrt, was neue Versionen von avr-gcc angeht.

Also, ich benutze bisher die AVR-Freaks-Distribution V3.0.2, und würde 
nur ungern etwas daran ändern, weil es problemlos klappt (never change a 
running system).
Allerdings möchte ich bald eine ATMega8 einsetzen, und habe gelesen, daß 
V3.0.2 diesen nicht unterstützt, da er wohl SFRs hat, die außerhalb des 
outp()/inp()-Speichers liegen.

Die AVR-Version 3.2 ist "experimental" und WinAVR scheint auf den ersten 
Blick wieder etwas anderes zu sein?!

Daher meine Frage:
Lohnt es sich, die Mühe zu machen, und auf ein neuere Version als 3.0.2 
zu wechseln?
Oder sollte ich mir ein Headerfile für den ATMega8 schreiben und die 
inkompatiblen SFRs "von Hand" ansprechen?

Danke,

Sebastian

von Sebastian Fahrner (Gast)


Lesenswert?

Ups, Korrektur: Habe gerade nochmal ins Datenblatt vom Mega8 geschaut 
und gesehen, daß der gar keine SFRs im Bereich über 3fh hat. Dann dürfte 
der ja gar kein Problem für 3.0.2 sein... (hab den Compiler gerade nicht 
da und weiß es daher nicht, SORRY).

Grüße,

Sebastian

von Peter Fleury (Gast)


Lesenswert?

Vergiss die alten Versionen 3.0.2 und Avrfreaks 3.2, WinAVR ist nichts 
anderes als avr-gcc 3.3

AVRfreaks Version ist veraltet und wird nicht mehr weiter entwickelt.

Steige auf WInAVR 3.3 um, dann hast Unterstützung vom ATmega8 und andere 
neue ATmega.

von made in germany (Gast)


Lesenswert?

never change a running system = verändere nie ein bereits laufendes 
System!

von BAB (Gast)


Lesenswert?

hallo made in germany,

wenn du die unterschiede zwischen den gcc compilern kennen würdest, 
hättest du dir deinen post gespart.

hallo sebastian,

wie peter schon sagte steig auf die winavr version um die ist die 
aktuellste version. die avr version ist zu veraltet.
also es lohnt sich wirklich umzusteigen.

von Joerg Wunsch (Gast)


Lesenswert?

Außerdem hat WinAVR den Vorteil, daß es endlich auch mit
Dokumentation erscheint.  Wir wollen die doch schließlich
nicht für die Katz' geschrieben haben...  Und nein, es
genügt auch nicht, die aktuelle Doku zu nutzen und dann
Vogel Strauß zu spielen (``never change...''), es hat sich
durchaus einiges geändert in den letzten Jahren.

von Sebastian Fahrner (Gast)


Lesenswert?

Also die Tatsache, daß man kein "outp()" mehr benötigt, finde ich 
wirklich sehr positiv. Ich programmiere im Geschäft mit IAR-C für 
MSP430, und da ist das ja genauso - muß ich weniger umdenken.
Aber es ist nunmal so, daß ich mich mit diesen Sachen wie "make" etc. 
nicht auskenne (und auch nicht Zeit habe, mich einzuarbeiten). Deswegen 
bin ich froh, wenn es einmal läuft und laß dann am liebsten ganz die 
Finger davon.

Grüße,

Sebastian

von Notker (Gast)


Lesenswert?

Also ich arbeite nach wie vor mit der 3.02. Diese ominöse 
"Experimentalversion" 3.20 habe ich genau so schnell wieder von meiner 
Festplatte heruntergeschmissen, wie ich sie installiert hatte, da sie 
meiner Meinung nach Schrott ist. In einer früheren Diskussion hier in 
diesem Forum ist sogar herausgekommen, dass diese Version bei gewissen 
Statements weitaus uneffektiveren Code produziert als die 3.02!!!
Was die 3.3er Version (WinAVR) betrifft, habe ich von anderen Leuten 
ähnliche Erfahrungen gehört (Originalkommentar: total buggy!).
Diese "Novitäten" der neueren Versionen wie z.B. outp -> outb usw. sind 
alles bloss Makros, die kann man sich in einem Headerfile selbst machen.

Fazit: Solange ich von den neueren Versionen keine wirklich 
überzeugenden Argumente mehr höre, bleibt bei mir die 3.02 installiert, 
ganz getreu dem Motto meines Forum-Diskussions-Kontrahenten Peter 
Dannegger ;-)
"never change a runnig team!"
Notker

von Notker (Gast)


Lesenswert?

Oder hiess es "never change a winning team"???

Man könnte aber auch sagen, an einem Moped das gut läuft, schraubt man 
nicht herum.

von Joerg Wunsch (Gast)


Lesenswert?

Mach was Du denkst, aber Du irrst, wenn Du meinst, daß Du
Dir die neuen IO-Macros auf einen alten Compiler gestopft
bekommst.

Der gcc 3 erzeugt keineswegs schlechteren Code als die 2.x,
nur wenn man trottligerweise alles mit -O3 übersetzt, bekommt
man die Quittung in Form von massenhaft inline functions.
Optimiert?  Ja.  Aber für kürzere Laufzeit. ;-)  Wer für
kurze Codegrößen optimieren will, nehme halt -O1 oder -Os.

WinAVR ist nicht mehr buggy als all seine Vorgänger.  Was
daran noch buggy ist, ist der Wandler von ELF nach AVR-COFF,
aber der war vorher nur anders buggy.  Die Leute, die
derartige ,,Original''kommentare verfassen sind oft die, die
sich nichtmal das README durchlesen können und dann z. B.
darüber stolpern, daß sie mit der WinAVR-Version infolge
falschen %PATH% noch den alten, nach wie vor installierten
Compiler aufrufen...

von BernhardT (Gast)


Lesenswert?

@Notger Solange ich von den neueren Versionen keine wirklich 
überzeugenden Argumente mehr höre...
Ich glaub ab 3.2 werden die Hardwaremultiplier der Mega-Typen 
unterstützt. Es ist erstaunlich was der Mul-Befehl an Zeit und Code 
Einsparung , nicht nur bei Integerarithmetik, bring.
Gruß Bernhard

von Notker (Gast)


Lesenswert?

Na schön, ich lasse mich auch gerne überzeugen. Bin mal gespannt, ob 
dieser WinAVR bei mir länger überlebt als die "Experimentalversion" von 
AVRfreaks.

Wehe ihr hattet nicht Recht, dann kommen aber die Jungs mit den 
schwarzen Sonnenbrillen ;-)

Gruss,

Notker

von BAB (Gast)


Lesenswert?

@Notker:

ich bin genau so skeptisch gewesen wie du..:)..
ich wusste auch erst nicht was der ganze kram soll...
wieso eine neue version rausbringen und nicht die alte weiter 
entwickeln...um diese missverständnisse aus dem weg zu schaffen hab ich 
mir die erste winavr version erstmal gezogen und installiert...
nach ca. 10min hatte ich schon eins meiner grösseren projekte auf die 
winavr version umgestellt und dass ohne probleme...ich war sehr positiv 
überrascht...als nächstes bin ich dann über die geniale doku 
gestossen...
und schon war die avr freaks variante dem abschuss nahe..:)...dann noch 
dieses memory i/o map verfahren ist auch super genial...somit kann man 
sehr übersichtlichen code schreiben...ich könnte jetzt noch einige 
andere sachen aufzählen aber das könnt ihr alles in der doku nachlesen..
das einzige problem ist dieses objtool...man kann leider keine 
structuren und diverse andere sachen debuggen...
ich bin aber gerade dabei mich in den aufbau von coff und elf einzulesen 
und objtool weiter zu entwickeln...

MfG
BAB

von Jörg Wunsch (Gast)


Lesenswert?

Naja, warum die bisherigen Windows-Distributionen
(insbesondere die von AVRfreaks) nicht mehr weiterentwickelt
worden sind, mußt Du diejenigen fragen, die diese zusammen-
gestellt haben.  Wahrscheinlich Zeitmangel.

WinAVR ist aus der Frustration über diesen Zustand entstanden.

Vergiß objtool.  Es ist letztlich das Fahrrad zum 5. Mal
erfunden.  Der sinnvollste Ansatz erscheint mir ringsum,
daß man objcopy (bei uns avr-objcopy genannt) so weit
aufbohrt, daß es mit den AVR-typischen Formaten umgehen
kann.  Dabei gibt es zwei Formate, die prinzipiell in Frage
kommen: das sogenannte `Nordic object format', dafür gab es
früher mal einen Patch für die binutils, der auf die aktuelle
Version nicht mehr ganz paßt.  Habe das Ganze zum Laufen
bekommen, aber das Format scheint nicht ganz unproblematisch
(es ist auch nicht offiziell dokumentiert von Atmel),
jedenfalls werden Dateien von AVRstudio 3.x abgelehnt, die
4.x dann doch ordentlich lädt...

Das zweite ist halt COFF.  Kommt aus der Unix-Welt, und die
AVR-Version ist in der Tat stark daran angelehnt.  Insofern
ist es auch nicht allzu schwer, den binutils das noch
beizubringen.  Nur: was mir wie ein gültiges COFF-File
aussieht, wird von AVRstudio mit "Memory size error" oder
sowas abgelehnt.  Ziemlich unverständlich, da das COFF-File
selbst gar nichts über eine Speichergröße weiß...  Der
zweite Haken ist, daß beim Übergang von ELF auf COFF in
den binutils bislang die Zeilennummerninformationen
verlustig gehen, da beide Formate hier ziemlich verschiedene
Modelle benutzen (ELF speichert sie in der Symboltabelle,
während COFF sie pro section mit anhängt).  Da ist ein
bissel Arbeit vonnöten.

Wie gesagt, wenn Dich das interessiert, dann kannst Du Dich
gern in einer privaten Mail mit mir in Verbindung setzen.
Ich suche vor allem Leute, die das dann auch auf Windows
bauen & testen können -- ich habe nur Unix und maximal
AVRstudio 3.56 unter Wine (aber die Emulation scheint da
zusätzliche Stolperfallen zu bringen).

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.