Forum: Mikrocontroller und Digitale Elektronik AVR Studio 5.0 und 5.1 Version GCC/Toolchain?


von Ingo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Projekt von Version 5.0 auf 5.1. portiert (Source und 
Header kopiert) und dann kompiliert. Ergebnis waren leicht 
unterschiedliche Codegrößen bei gleichen Compiler/Linkereinstellungen.

Device: atmega644
    Program:   14598 bytes (22.3% Full)
    (.text + .data + .bootloader)
    Data:       1538 bytes (37.5% Full)
    (.data + .bss + .noinit)
    EEPROM:       30 bytes (1.5% Full)

zu

Device: atmega644p
    Program:   14610 bytes (22.3% Full)
    (.text + .data + .bootloader)
    Data:       1538 bytes (37.5% Full)
    (.data + .bss + .noinit)
    EEPROM:       30 bytes (1.5% Full)
    (.eeprom)

Der kleinere Code kommt vom 5.0er. Warum?
Sind die Toolchains von Version 5.1 nicht aktueller? Optimierung steht 
auf Os.

Interessant ist das bei 5.0 die AVR Toolchain auch als solche bezeichnet 
wird, im 5.1 heisst es nur AVRGCC. Ist dort irgendwas verstellt, ich 
möchte eigentlich die AVR Toolchain nutzen; mach ich was falsch?


Ingo

von Ingo (Gast)


Lesenswert?

Ah ich hab gerade gesehen, dass ich die beiden vertauscht habe, 5.1 
erzeugt kleineren Code.

von Ingo (Gast)


Lesenswert?

Gibt es eigentlich einen Unterschied zum AVRGCC und der AVR Toolchain 
bzw. meint Atmel hier das selbe?


Ingo

von Ingo (Gast)


Lesenswert?

Hat keiner Version 5 oder 5.1?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Welche Version wird denn bei avr-gcc -v angezeigt?

von Ingo (Gast)


Lesenswert?

Johann L. schrieb:
> Welche Version wird denn bei avr-gcc -v angezeigt?

Wo?



Ingo

von Peter (Gast)


Lesenswert?

Hey der Unterschied an Codegrösse ist < 0.1%

von Ingo (Gast)


Lesenswert?

Peter schrieb:
> Hey der Unterschied an Codegrösse ist < 0.1%

Ist bekannt. Ich würde nur gern wissen ob ich die richtige Toolchain 
verwende oder ob hier das selbe gemeint ist.



Ingo

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


Lesenswert?

Ingo schrieb:
> Gibt es eigentlich einen Unterschied zum AVRGCC und der AVR Toolchain

Die Toolchain besteht aus mehr als nur dem GCC, nämlich binutils
(Assembler, Linker, paar Hilfswerkzeuge wie objcopy), Compiler (GCC)
und Standardbibliothek (avr-libc).  Dazu kommen typischerweise noch
lokale Patches (bspw. um neue AVR-Devices einzupflegen, die von den
offiziellen Versionen noch nicht unterstützt sind).  Gemäß GPL
sollten sie dir die entsprechenden Patches zumindest für binutils und
GCC auf Anfrage aushändigen (die avr-libc steht nicht unter GPL, dort
sind sie also formal nicht dazu verpflichtet).

Die Atmel-Versionierung ist dabei völlig von ihnen selbst gewählt.
Keine Ahnung, ob sie irgendwo eine Übersicht haben, welche Versionen
der Komponenten ihrer jeweiligen Toolchain-Version entsprechen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ingo schrieb:
> Johann L. schrieb:
>> Welche Version wird denn bei avr-gcc -v angezeigt?
>
> Wo?

avr-gcc ist ein Kommandozeilen-Progamm.

Man gibt es also ein: In der Kommandozeile.

avr-gcc --version gibt dann sowas aus:
1
avr-gcc (WinAVR 20100110) 4.3.3

oder sowas:
1
avr-gcc (GCC) 4.8.0 20120521 (experimental)

mit avr-gcc -v kommen etwas mehr Informationen, aber auch daraus ist die 
GCC-Version erkennbar.

Allerdings hatte Atmel auf Bugs durch eigene Patches; wenn das behoben 
wurde, kann sich also die Codegröße ändewrn ohne daß sich die 
GCC-Version ändert. Ob in dem Fall kleinerer oder größerer Code besser 
(korrekt) ist, kommt auf den jeweiligen Fall an.

von Ingo (Gast)


Lesenswert?

Cool, das geht ja tatsächlich!!!
Da steht:

gcc version 4.5.1 (AVR_8_bit_GNU_Toolchain_3.3.0_364)
Irgendwie wiedersprüchlich was oben steht!?

Sehr eigenartig


Ingo

von test (Gast)


Lesenswert?

Hmm, vielleicht noch eine ältere Version drauf (AVR Studio 4 z.B.)?
Wenn du nur "avr-gcc ...", also ohne Pfadangabe, auf der Konsole eingibt 
nimmt er den, den er über die Windows-Umgebungsvariablen findet. Schau 
mal was da für Pfade eingetragen sind.

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.