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?
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
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...).
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.
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.
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
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.
@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
@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.
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.