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
Ah ich hab gerade gesehen, dass ich die beiden vertauscht habe, 5.1 erzeugt kleineren Code.
Gibt es eigentlich einen Unterschied zum AVRGCC und der AVR Toolchain bzw. meint Atmel hier das selbe? Ingo
Welche Version wird denn bei avr-gcc -v angezeigt?
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
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.