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


von André (Gast)


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?

von Oliver (Gast)


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

von johnny.m (Gast)


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...).

von Stefan (Gast)


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.

von Karl H. (kbuchegg)


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.

von Falk (Gast)


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

von André (Gast)


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.

von Falk (Gast)


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

von André (Gast)


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.

von Karl H. (kbuchegg)


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.

von André (Gast)


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.

von Karl H. (kbuchegg)


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

von André (Gast)


Lesenswert?

Problem gelöst...

lag an der aktuellen Version von WINAVR 20070122

Hab mal die WINAVR 20060421 aufgespielt und alles tut.

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.