www.mikrocontroller.net

Forum: Compiler & IDEs Fragen: WinAVR, enum u.a.


Autor: Sebastian Fahrner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sebastian Fahrner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
objtool hat wohl noch so seine Schwierigkeiten mit allen
nicht gerade simplen Datentypen.

Autor: Sebastian Fahrner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich die Warnung dann guten Gewissens ignorieren, oder soll ich 
lieber alles per #define machen?

Grüße,

Sebastian

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

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.