Hallo,
mich treibt immer noch das Problem um wie ich eine aktuelle avr-gcc
Version meinem Atmel Studio 7 verfügbar mache.
diese gut gemeinte Beschreibung funktioniert nicht.
1
Die Toolchain avr-gcc-8.0_2017-07-19_mingw32 ist verfügbar unter:
Veit D. schrieb:> Package Name und Package Base Path in AtmelStudio eintragen> ***********************************************************> SolutionExplorer | Project: rechte Maustaste: Propreties | Advanced |> Link: Tools>Options>Toolchain>FlavourConfiguration |> Atmel-8Bit-CPP-language | Package Name und Package Base Path eintragen.
mein Pfad:
*********
C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.0_2017-07-19_mingw32\bin
.. sinngemäss anpassen sollte funktionieren.
Veit D. schrieb:> mit dem Pfad auf .../bin kompiliert es zwar fehlerfrei, zeigt aber 0%> und 0Byte RAM/Flash Belegung an. Kann noch nicht richtig sein.
Da ist vermutlich das Linker Skript kaputt oder passt nicht zum Code.
hi,
ich verwende ganz einfach zwei versionen parallel, last 5.x und 7.x, via
button/external tools und den zwei attached cmd's
damit code size richtig erscheint habe ich von version 5.x die
avr_size/objcopy/objdump rüber kopiert, es gibt aber ein problem, im
simulator/debugger werden nicht alle symbol infos richtig angezeigt.
ich benutze die 7.x zu mindest als letzten size/speed optimierungsstep!
mt
Hallo,
vielen Dank für die Informationen. Es tut sich was zum guten ...
Ich habe mit vier Versionen probiert, 6.4.1, 7.1.1, 7.2.0 und 8.0, alle
scheinen zu kompilieren, keine Fehler/Warnungen, aber Speicheranzeige 0.
Nachdem Datei austauschen Tipp muss man nur die alte (von AS)
"avr-size.exe" in den neuen avr-gcc Pfad ...\bin reinkopieren/ersetzen.
Danach funktioniert die Speicheranzeige. Ob die allerdings stimmt, da
bin ich mir nicht so sicher. Denn eine "avr-size.exe" ist ja in den
neuen Paketen vorhanden und hat eine andere Dateigröße. Funktioniert nur
nicht, warum auch immer.
bei mir von:
C:\Program Files
(x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin
Dann habe ich mal rumgespielt und verstehe den Mechanismus dahinter noch
nicht wirklich. Einmal konnte ich zwischen den toolchains wechseln und
der Flashverbrauch änderte sich. Danach anderes Projekt, wieder
gewechselt und Flashverbrauch änderte sich nicht.
Nur die RAM Verbrauchsanzeige blieb immer konstant.
Kann man nun zwischendurch die Toolchain Versionen ändern oder bleibt
die für immer konstant mit der Version mit der man sein Projekt neu
erstellt hatte? Irgendwas widerspricht sich.
Sind die neueren Versionen schon für höhere C++ Version wie 14 oder 17
voreingestellt oder muss man dafür noch Optionen setzen? Ich finde die
Übersichtsseite nicht mehr.
Und was hat es mit dem "GDB" auf sich? Was ist das und wofür? Weil der
Pfadeintrag ist tot nach toolchain Version Änderung. Irgendwas zum
debuggen muss das sein.
Mit der Kommandozeile aufgerufen liefern alle avr-size.exe der
jeweiligen Toolchains für ein beispiel.elf die entspechenden Angaben.
Mit Atmel-Studio aufgerufen liefert die Toolchain Native und die
Toolchain avr8-gnu-Toolchain-3.5.0.85 mit
Using "RunOutputFileVerifyTask" task from assembly
"C:\Atmel7\7.0\Extensions\Application\AvrGCC.dll".
Task "RunOutputFileVerifyTask"
Program Memory Usage : 62 bytes 0.8 % Full
Data Memory Usage : 0 bytes 0.0 % Full
die selben Resultate wie avr-size aus Kommandozeile.
Mit Toolchain avr-gcc-7.1.1_2017-07-27_mingw32 und mit Toolchain
avr-gcc-8.0_2017-07-19_mingw32 aufgerufen liefert
Using "RunOutputFileVerifyTask" task from assembly
"C:\Atmel7\7.0\Extensions\Application\AvrGCC.dll".
Task "RunOutputFileVerifyTask"
Program Memory Usage : 0 bytes 0.0 % Full
Data Memory Usage : 0 bytes 0.0 % Full
> Kann man nun zwischendurch die Toolchain Versionen ändern oder bleibt> die für immer konstant mit der Version mit der man sein Projekt neu> erstellt hatte?
ich kann jederzeit mit einen mausklick wechseln, dann wird immer nur der
link zum tool verzeichnis gewechselt. geht aber nur, wenn atmelstudio
als admin gestartet wird, da mklink die rechte braucht.
die toolchain optionen bleiben aber gleich, wenn andere optionen auch
gewünscht sind, dann über unterschiedliche solution configuration, like
debug/production/size/speed/...
unter gcc 7.2, stimmt bei mir die code/ram size immer und
default C++ language dialect options is ‘-std=gnu++14’.
mt
Veit D. schrieb:> Kann man nun zwischendurch die Toolchain Versionen ändern oder bleibt> die für immer konstant mit der Version mit der man sein Projekt neu> erstellt hatte? Irgendwas widerspricht sich.
Toolchain kann mit | Properties | Advanced | Toolchain Flavour | sehr
einfach ausgewählt werden.
Properties Seite abspeichern ( oder automatisch abspeichern lassen )
Mit | Build | Rebuild Solution | die Output Daten löschen und neu
erstellen lassen.
Veit D. schrieb:> Nachdem Datei austauschen Tipp muss man nur die alte (von AS)> "avr-size.exe" in den neuen avr-gcc Pfad ...\bin reinkopieren/ersetzen.> Danach funktioniert die Speicheranzeige. Ob die allerdings stimmt, da> bin ich mir nicht so sicher. Denn eine "avr-size.exe" ist ja in den> neuen Paketen vorhanden und hat eine andere Dateigröße. Funktioniert nur> nicht, warum auch immer.
Die alte avr-size (z.B. aus WinAVR) enthält zur Anzeige der Größe einen
üblen Hack. So übel, dass es der Hack nie in die offizielle Versiob
geschafft hat.
Hallo,
an das Rebuild Solution hatte ich nicht gedacht, funktioniert.
Habe dann auch nochmal die gcc 7.2 von zakkemble mit der Arduino IDE
probiert, laut Beschreibung soll das funktionieren. Geht auch nicht.
Angeblich fehlt in \bin die avr-g++. Sie liegt aber genau da wo sie sein
soll.
Wenigstens läuft jetzt AS mit neuer Version.
Warum die alte avr-size ein Hack sein soll verstehe ich nicht. Glaube
kaum das Atmel daran "rumgepfutscht" hat.
Danke @ all.
Veit D. schrieb:> Warum die alte avr-size ein Hack sein soll verstehe ich nicht.
Die Änderung wurde von den Binutils-Maintainern abgelehnt (und würde es
auch heute noch werden), kam also nie in eine offizielle Release (es sei
denn als inoffizieller Patch auf eine Release).
> Glaube kaum das Atmel daran "rumgepfutscht" hat.
Irgendwann hat Atmel dann einen 2ten Ansatz gestartet: Anstatt die
komplette Device-Info — immerhin >> 200 Devices — neben in avr-libc,
Compiler auch in Binutils reinzukloppen, würde folgender Ansatz gewählt:
Dort, wo die Device-Info verfügbar ist (avr-libc) wird sie in eine
eigens dafür vorgesehene .note-Section eingetragen, und zwar im
Startup-Code:
http://svn.savannah.nongnu.org/viewvc/avr-libc/trunk/avr-libc/crt1/gcrt1.S?view=markup&pathrev=2519#l306
Da quasi alle Anwendungen diesen Startup-Code verwenden, ist die Info
also prinzipiell verfügbar. Beispiel: Ein simples Programm mit
-mmcu=atmega8 übersetzt und dann