Hallo, habe jetzt erfolgreich auf WinAVR umgerüstet. Sieht sehr gut aus. Allerdings habe ich noch ein paar Problemchen dabei, meine alten 3.0.2-Programme zu portieren: 1. Für einen switch() hatte ich folgende Aufzählung angelegt: enum HAUPTSTATUS { HS_IDLE = 0, HS_RESET_0, HS_RESET_1, ... } ; Hat unser 3.0.2 einwandfrei geklappt, aber 3.3 bringt mir folgenden Fehler: WARNING - symbol 'HAUPTSTATUS' refers to non-existing type => @s8;eHS_IDLE:0,HS_RESET_0:1, ... Was stimmt denn damit nicht? Wo kann man denn bei enum den Typ angeben? 2. Das makefile weigert sich hartnäckig, mir die Meldung "Errors: none" auszugeben (für AVR-Studio). Diese Meldung sollte doch durch $(FINISH) ausgegeben werden. Aber obwohl dieses aufgerufen werden sollte, kommt die Meldung nicht?! Ich habe jetzt halt mal den Text von $(END) geändert, aber ich wüßte doch gerne, was das Problem ist.
1. Kommt diese Fehlermeldung vom Compiler oder von Objtool (das Tool das Cof File zum Debuggen in AVRStudio erzeugt) ? Wird ein hex file erzeugt ? 2. Das Beispiel \winavr\sample\Makefile hat leider einen Fehler: Vor $(FINISH) muss man ein TAB eingeben, nicht Space. .PHONY : finish finished: <TAB>$(FINISH) ^ TAB anstelle Space
Zu 1.: Wenn mich nicht alles täuscht, ist es das objtool. Es steht die Meldung "objtool loadelf main.elf mapfile main.map writecof main.cof" direkt über der Warnung. Allerdings ist es kein Fehler, sondern nur eine Warnung. Da mir das falsche makefile aber kein "Errors: none" gebracht hat, dachte ich, daß es ein richtiger Fehler ist. Ein .hex-File wird aber erzeugt. Zu 2.: Danke, ich werd's ändern! Grüße, Sebastian
objtool hat wohl noch so seine Schwierigkeiten mit allen nicht gerade simplen Datentypen.
Kann ich die Warnung dann guten Gewissens ignorieren, oder soll ich lieber alles per #define machen? Grüße, Sebastian
Du kannst die Warnung ignorieren, wirst aber die enums nicht im AVRstudio debuggen können. Andererseits sind natürlich #defines auch zuweilen keine schlechte Idee, da enums immer zu int evaluieren, während man zuweilen mit ein paar #defines auch noch mit uint8_t auskommen kann. Allerdings werden andererseits eine ganze Reihe Operationen per definitionem immer mit int abgearbeitet, so daß sich der Effekt wohl wieder relativiert.
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.