mikrocontroller.net

Forum: Compiler & IDEs List File bei AVR-GCC/WIN AVR


Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich nutze WINAVR zusammen mit der aktuellen Version des AVR Studios.
(hab bisher ausschließlich in Assembler prog.)
Um zu sehen, was der Compiler so treibt, wollte ich mir das Listfile mit 
den Assembler-Befehlen ansehen.
Über den Umweg Hexfile -> disassemblieren funktionierts.
Obwohl "Listfile Create" in der Optionen angekreuzt ist, erzeugt er 
keins
(müsste ja unter Order "Others" erscheinen.
Hab ich da noch einen Denkfehler, und "Create List " bedeutet überhaupt 
nicht, dass er ein File mit den Assemblerbefehlen erzeugt oder müssen 
noch andere Optionen eingestellt werden?
Eine kleine Frage noch:
Habe mal mit was ganz einfachem begonnen: LED an Portpin einschalten
In Assembler ein Zweizeiler. Im AVR GCC nach Compilieren an die 100 
Byte.
Entsetzen nach Ansicht des Assembler-Files, was da an Bytes völlig 
sinnloserweise zwischen SRAM, Registern und Stack hin- und 
hergeschaufelt wird. Optimierung ist eingeschalten, müssten da die 
ganzen sinnlosen loads und stores nicht rausfallen?
Bedeutet das im Umkehrschluss, dass man die ganzen Tiny-AVRs mit wenig 
Programmspeicher mit C praktisch nicht bearbeiten kann, da schon bei 
kleineren Programmen der Flash voll ist?

Welche Erfahrungen habt ihr damit?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das listfile findest du da, wo auch das Hexfile liegt (bei der 
default-Konfiguration im Ordner "default"). Normalerweise reicht dazu 
das  Häckchen bei "Create Listfile".

Oliver

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
André hat schon recht: Wenn die Option "Generate List File" ausgewählt 
ist, müsste die .lss-Datei im Project Tree unter "Other Files" 
erscheinen (zumindest tut sie das bei mir immer...).

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Overhead bei C Programmen ist eigentlich nur bei kleinen Projekten 
lästig. Bei grösseren Projekten, die du nicht mehr in Assembler machen 
willst, nimmst du den halt in Kauf.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
André wrote:
> Hallo,
>
> Eine kleine Frage noch:
> Habe mal mit was ganz einfachem begonnen: LED an Portpin einschalten
> In Assembler ein Zweizeiler. Im AVR GCC nach Compilieren an die 100
> Byte.
> Entsetzen nach Ansicht des Assembler-Files, was da an Bytes völlig
> sinnloserweise zwischen SRAM, Registern und Stack hin- und
> hergeschaufelt wird. Optimierung ist eingeschalten, müssten da die
> ganzen sinnlosen loads und stores nicht rausfallen?

Was du siehst, ist die Startup Sequenz eines C-Programmes.
Da muss schon ein bischen was hergerichtet werden.
Für dein konkretes Beispiel ist das zugegebenermassen sinnlos,
aber im allgemeinen Fall ist ein Programm ja ein bischen
komplexer als einfach nur eine LED einschalten. Von den 100
Bytes sind 90 oder 95 Bytes als konstant anzusehen. D.h. die
werden nicht mehr, wenn dein Programm größer wird.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mich vor ein paar Wochen mal auf WinAVR eingelassen, man wird ja 
älter ;-)
Und ich muss sagen, ich war sehr positiv überrascht. Installation 
problemlos, Hello World (blinkende LED) war auch ohne Krampf fix auf dem 
AVR. Und der erzeugte Asemblercode ist, soweit ich das bisher 
gesehen/überflogen habe, recht kompakt, da kann nur an wenigen Stellen 
noch grossartig optimiert werden.
Ich hab zu Übungszwecken mal ein grösseres Program von ASM in C 
konvertiert. In ASM waren es ca. 7 KB (incl. 700 Byte Textkonstanten, 
115kB Quelltext). In C ist es ca. 9kB (56kB Quelltext), naja, leicht 
verrissen, es passt nicht mehr in den 8515, aber dennoch ist der 
Overhead zum ASM recht gering. Nur dass die C Version WESENTLICH 
einfacher/angenehmer zu lesen ist (nein, auch die Assemblerversion ist 
schon ganz brauchbar strukturiert, aber ASM ist nunmal ASM).

MFG
Falk

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das List-File ist weder im Default_Ordner noch direkt im Projekt-Baum, 
wird scheinbar nicht generiert, obwohl "Create.." angewählt.
Das map-File erscheint im Other Files Ordner.
Hmmm, Ratlosigkeit...

@Karl Heinz:
Dachte ich mir schon fast, nahm aber an, dass die Optimierung das 
"wegoptimiert", hatte mich deshalb etwas gewundert.
Ich glaube, wenn man was in C macht, darf man sich über bestimmte Dinge 
am Anfang nicht so Gedanken machen.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@André

>Das List-File ist weder im Default_Ordner noch direkt im Projekt-Baum,
>wird scheinbar nicht generiert, obwohl "Create.." angewählt.
>Das map-File erscheint im Other Files Ordner.
>Hmmm, Ratlosigkeit...

Hast du im normalen Datei-Explorer nachgeschaut oder im AVR-Studio?
Schau auf deiner Festplatte nach.

>Ich glaube, wenn man was in C macht, darf man sich über bestimmte Dinge
>am Anfang nicht so Gedanken machen.

Ohhhh, wenn das mal kein Irrtum ist.

MfG
Falk

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk
hab auch schon direkt im Datei-Explorer gesucht. Da gibts außer .map 
.hex nur noch ´ne Datei .ELF, da steht aber auch nichts drin, was 
irgendwie nach Assembler-Befehl aussieht.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Datei hat eine Endung .LSS
und bei mir wird die schon im Default Ordner erzeugt.

Bin jetzt ehrlich etwas ratlos. Hatt noch nie Probleme
damit: Generate List File angekreuzt, copmiliert und
das File aufgemacht.

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an Alle für die Tipps.
Ich weiss zumindest, dass es so funktionieren sollte.
Werd erstmal ein neus Projekt erstellen, u.s.w und wer weiss, vllt. 
klappts dann.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach auf jeden Fall einen grossen Bogen um Pfadnamen
die Leerzeichen und/oder Sonderzeichen enthalten.

Viele seltsame Fehler gehen auf das Konto von
c:\Dokumente und Einstellungen

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem gelöst...

lag an der aktuellen Version von WINAVR 20070122

Hab mal die WINAVR 20060421 aufgespielt und alles tut.

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.