Forum: Compiler & IDEs avr-gcc und GUI


von Thomas (Gast)


Lesenswert?

Hallo,

gibt es irgendeine Möglichkeit, den Kommandozeilencompiler avr-gcc in
ein GUI einzubetten. Ich finde es auf Dauer ziemlich ermüdend, ständig
das entsprechende makefile zu aktualisieren.
Habe bis jetzt mit Visual C programmiert, dort erfolgt das Kompilieren
wesentlich komfortabler.
Falls jemand eine Anleitung kennt, wie so etwas anzustellen ist, währe
ich sehr dankbar.

Thomas

von Jörg Wunsch (Gast)


Lesenswert?

Emacs? :-)

WinAVR kommt mit Programmer's Notepad.

Ansonsten gibt's auch noch ein polnisches GUI, genauen Locator habe
ich nicht zur Hand (da ich mit Emacs zufrieden bin).

von Thomas (Gast)


Lesenswert?

Da werd ich mich wohl mal schlau machen müssen, habe bis jetzt PN
benutzt.

Thomas

von Peter Fleury (Gast)


Lesenswert?

@Thomas
>>Ich finde es auf Dauer ziemlich ermüdend, ständig
das entsprechende makefile zu aktualisieren.

Gerade deswegen hat Jörg Wunsch das Tool Mfile geschrieben, das erzeugt
ein Makefile mittels einer grafischen Oberfläche.

Bei richtiger Konfiguration kann man mit PN kompilieren und AVR flashen
alles über das PN GUI. Man braucht also die Kommandozeile gar nicht.

von Rahul (Gast)


Lesenswert?

Eine Anleitung zum Betrieb des avr-gcc unter PN (Programmer's Notepad)
findest Du hier:
http://users.rcn.com/rneswold/avr/

von Rahul (Gast)


Lesenswert?

Mist!
Falscher Link!
Irgendwie vertausche ich die beiden Dokumente jedes Mal...
Die Datei heisst
install_config_WinAVR Windows.pdf
und ist von Colin O'Flynn und Eric Weddington.
Ob ich die hier irgendwo gefunden habe weiss ich nicht mehr. Halt mal
googlen.
Rahul

von Thomas (Gast)


Lesenswert?

& Rahul

Dein Posting hat mir sehr geholfen, das PN arbeitet so weit jetzt auch
gut, nur hängt es bei der Programmierung des Devices. Die habe ich
sonst immer mit Pony-Prog vorgenommen. Eine entsprechende Änderung im
von WinAVR mitgelieferten makefile auf "pony-stk200" bei Programmer
und die Auswahl des Parallelports machen die Sache aber leider nicht
gangbar. Müssen sonst noch irgendwelche Einstellungen vorgenommen
werden?

Thomas

von Michael (Gast)


Lesenswert?

Mein Makefile sieht dazu so aus:


# Programming support using ponyprog. Settings and variables.
#PONYPROG= ponyprog2000.exe
PONYPROG= C:\program files\ponyprog2000\ponyprog2000.exe
# Program the device.
program: $(TARGET).hex $(TARGET).eep
  echo -e "SELECTDEVICE $(MCU)\nLOAD-PROG $(TARGET).hex\n#LOAD-DATA
$(TARGET).eep\nWRITE-PROG" >isp.e2s
  $(PONYPROG) isp.e2s

von Thomas (Gast)


Lesenswert?

Das Einfügen deiner Codezeilen führt bei mir zur Fehlermeldung:
"missing seperator".
Hast du vielleicht irgendwelche Zeichen vergessen? Ansonsten wäre es ja
genau das, wonach ich gesucht habe.

Thomas

von Rahul (Gast)


Lesenswert?

Makefiles haben viel mit C gemeinsam...
kann es sein, dass da ein paar Semikolons am Ende der Zeilen fehlen?
Vergleich doch einfach mal dein altes Makefile mit dem neuen.

von Thomas (Gast)


Lesenswert?

Kann schon sein, aber rumexperimentieren bringt mich nicht wirklich
weiter.

Thomas

von Michael (Gast)


Lesenswert?

Scheint beim c&p ein LF reingerutscht zu sein. Hoffe, es geht so:


# Program the device.
program: $(TARGET).hex $(TARGET).eep
  echo -e "SELECTDEVICE $(MCU)\nLOAD-PROG (TARGET).hex\n#LOAD-DATA
$(TARGET).eep\nWRITE-PROG" >isp.e2s
  $(PONYPROG) isp.e2s

von Michael (Gast)


Lesenswert?

Mist, geht nicht, wahrscheinlich bin ich zu dämlich.

Also die zwei Zeilen nach der "program: xxx"-Zeile sind in
Wirklichkeit eine Zeile, anstelle des LF ein Space und es sollte gehen.

von mthomas (Gast)


Lesenswert?

Thomas,
vielleicht doch avrdude nochmal versuchen? Wenn Windows NT/2k/XP: ist
give-io installiert? Sonst funktioniert es nicht mit einem stk200-PPI.
Siehe X:\winavr\bin\install_giveio.bat (als "Admin"). Was heisst
"machen die Sache aber leider nicht gangbar" also wie ist die
Fehlermeldung?

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

@mtomas: Die Fehlermeldung bei avrdude:

avrdude -p atmega8 -P lpt1   -c pony-stk200 -U flash:w:test.hex
avrdude: can't open device "giveio"

avrdude: failed to open parallel port "lpt1"

make: *** [program] Error 1

@ Michael: Das zusammenziehen der Zeilen hat leider nichts gebracht
(Fehler in Zeile 297), kannst du nicht einfach dein makefile posten.
Meins schaut so aus (siehe Anhang).

Thomas

von Peter D. (peda)


Lesenswert?

Wer wie ich keine Lust hat, sein Make immer an jedes Projekt neu
anzupassen, es geht auch ganz ohne.

Diese AC.BAT compiliert alle *.C im aktuellen Ordner und link sie dann
zusammen.
Lediglich den AVR-Typ muß man anpassen, wenn man mal einen anderen
nimmt.


http://www.mikrocontroller.net/attachment.php/45783/Ac.bat


Peter

von Jörg Wunsch (Gast)


Lesenswert?

Nu Peter, und was hat das mit dem Download des Codes zu tun?  Den hast
Du da auch nicht drin. ;-)

Ob Du nun ein Batchfile oder ein Makefile anpassen mußt, bleibt das
gleiche...  make ist an mancher Stelle flexibler (besonders als die
dummen MS-DOS-Batches), aber das wird sicher hier nicht so häufig
gebraucht.

Btw,. *.C Dateien wären C++-Dateien... (großes ,C'). :)

Thomas, das sieht aber genau nach dem von mthomas beschriebenen
Problem aus: Du hast den giveio.sys-Treiber wohl nicht installiert
(sagt mir mein zugegebenermaßen begrenztes Windows-Verständnis).

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Dank für eure Hilfe, mit Hilfe der entsprechenden Treiber
funktioniert die Programmierung mit avrdude jetzt prima.
Ich habe die Treiber im Anhang angefügt, falls noch jemand daran
Interesse hat.
Es vereinfacht die Sache ungemein, wenn man nun alles im Programmers
Notepad erledigen kann und nicht parallel noch Pony-Prog und die
Eingabeaufforderung geöffnet haben muss.

Thomas

von Thomas (Gast)


Lesenswert?

Um den Thread abzuschließen sei mir noch die Bemerkung gestattet, dass
die von Michael geposteten Codezeilen für Pony-Prog auch funktionieren.
Leider sind durch das Copy&Paste sämtliche Tabulatoren verloren
gegangen. Deshalb hat das Einfügen in mein Makefile auch anfangs nicht
funktioniert. Das Ersetzen der Leerzeichen am Zeilenanfang durch Tabs
war die Lösung des Problems ;-)

Thomas

von Jörg Wunsch (Gast)


Lesenswert?

Jau, Makefiles sind aus hysterischen Gründen TAB-empfindlich.

Vor einem Kommando, das zu einem Target gehört, muß ein TAB am
Anfang der Zeile stehen.

Michael hätte das Schnipselchen besser als Attachment anbieten sollen,
die normalen Beiträge hier werden halt verHTMLwurschtelt.  Das ist ein
dokumentiertes Feature dieses Forums :) (bspw. ist der Zeilenumbruch
von Andreas ausdrücklich dokumentiert worden).

Wer das nicht will, muß halt die klassischen Varianten nehmen: News
(de.sci.electronics) oder Mailinglisten (avr-gcc-list @ www.avr1.org).
Dort kommen die Beiträge auch so raus, wie man sie reinfüttert. ;-)
(Von einer angehängten signature des Listservers bei avr-gcc-list mal
abgesehen.)

von Divison (Gast)


Lesenswert?

Also ich habe das hinbekommen, das jetzt Ponyprog aus dem Makefile raus
startet.

Bei bedarf einfach fragen oder mailen.

von Jörg Wunsch (Gast)


Lesenswert?

Und was ist daran nun eigentlich vorteilhaft, statt für diesen Fall
gleich bei avrdude zu bleiben? ;-)

von Divison (Gast)


Lesenswert?

Nix, nur die vorliebe, weil ich damit schon immer arbeite!

von eugen D (Gast)


Lesenswert?

benuzt doch einfach das mfile das mit winavr mitkommt, einfach nur den
mc einstellen, und den namen des files, und alles andere iss total
easy, assemblerfiles einbinden ohne probs .....
mfg eugen d

von thomasb (Gast)


Lesenswert?

hi,

ich verwende das avrstude 4.0 mit winavr .. es funktioniert miteinander
ganz gut, das make starte ich trotzdem aus einem kommandofenster, damit
ich die fehlermeldung sehen. ansonsten könnte ich das make auch von
avrstudio aus anstossen. was mir extrem hilft, ist die bequeme
simulationsmöglichkeit von dem code (mit quickwatch) - das ganze
erinnert mich start an visual studio von m$ ...
beim simulieren musst du nur achten, daß die optimierung des compilers
abeschaltet ist, ansonsten funzt das ganze nicht. wenn du noch fragen
hast ...

das sind meine erfahrungen.

thomas

von Jörg Wunsch (Gast)


Lesenswert?

Damit hast Du aber den größten Haken der Simulation erkannt: sie ist
komplett unrealistisch, wenn Du dafür die Optimierung abschalten mußt.
Der Code ist dann komplett anderer, und der Aussagewert der Simulation
ist u. U. gleich 0.

von thomasb (Gast)


Lesenswert?

@jörg:

das ist mir schon klar, daß der optimierte code ein anderer ist, als
der simulierte. aber programmfehler (if's greifen nicht, zählerstände,
...) sehe ich in der simulation doch besser ... natürlich schaut's bei
zeitkritischen sachen anders aus. wir arbeitest du? ich denke du
verwendest den pn, insight zum debuggen, simulavr zum simulieren?
vielleicht ist das die bessere variante. ich habe mich schon einige
zeit damit beschäftigt ... vielleicht bin ich zu doof dafür ... gibt's
z.b. wo eine anleitung, wie ich mit insight debugge, ohne über irgend
einen com-port eine verbindung irgendwohin zu benötigen?

ich glaube, mir geht einfach eine einfache anleitung für die winavr
tools ab ... oder vielleicht habe ich diese nicht gefunden ...?

vielleicht gibt mir jemand den richtigen kick in die richtung avr-tools
... :-) ich bin an sich für jeden tip dankbar :-)

schöne grüße,
thomas

ns: dein makefile-editor ist super, danke für das teil !!

von Jörg Wunsch (Gast)


Lesenswert?

> das ist mir schon klar, daß der optimierte code ein anderer ist, als
> der simulierte. aber programmfehler (if's greifen nicht,
> zählerstände, ...) sehe ich in der simulation doch besser ...

Man kann sich auch dran gewöhnen, optimierten Code zu debuggen.

> wir arbeitest du? ich denke du verwendest den pn, insight zum
> debuggen, simulavr zum simulieren?

PN?  Ich bin mir gar nicht sicher, ob der auf meinem FreeBSD überhaupt
läuft...  Ich dachte, der wäre Windows-only.

Emacs -- ein Editor, aber viel mehr als das, eben eine Oberfläche für
alles.  Damit schreibe ich eben auch diese Zeilen (nachdem ich mich
früher ständig über diese Web-Foren geärgert habe, weil die
eingebauten Textfeld-Editoren in den Webbrausen einfach spartanisch
sind), damit schreibe ich meine Mails, meine Briefe, und ich mache
sämtliche Softwareentwicklung damit.  Egal, ob es sich um
Unix-Programme, das Debuggen eines FreeBSD-Kernels oder eben Code für
den AVR handelt -- eine ,,IDE'' für alles.  Nicht jedesmal was Neues
lernen müssen.  Mfile ist natürlich auch in einem Emacs entstanden.

Insight?  Nö, wenn, dann habe ich gehört, daß DDD als GDB-Frontend
bessere Bewertungen bekommen hat (läuft aber m. W. im Gegensatz zu
Insight nicht unter Windows), aber ich habe nie wirklich ein GUI beim
Debugger vermißt.  GDB pur also.

Simulavr zum Simulieren von Algorithmen, ja.  Vieles in der printf und
scanf Familie der avr-libc ist so entstanden, malloc teilweise auch
(wobei der Algorithmus auch teilweise auf dem FreeBSD direkt simuliert
worden ist).

AVaRICE und ein selbstgezimmertes JTAG ICE als Emulator.

Falls ich mal wirklich eine gute Simulation brauche, lasse ich VMLAB
unter Wine (ein Windows-Emulator) laufen.

> vielleicht ist das die bessere variante. ich habe mich schon einige
> zeit damit beschäftigt ... vielleicht bin ich zu doof dafür
> ... gibt's z.b. wo eine anleitung, wie ich mit insight debugge,
ohne
> über irgend einen com-port eine verbindung irgendwohin zu benötigen?

Naja, der GDB (der unter Insight liegt) kann nur dann Code direkt
ausführen, wenn es sich um solchen für die Maschine selbst handelt.
Für alles andere jedoch kann er über ein Fernsteuerprotokoll mit
entsprechenden Hilfsprogrammen reden.  Für den AVR können das simulavr
für eine Simulation bzw. AVaRICE + JTAG ICE für eine Emulation auf
einem Ziel-ATmega sein.  Der GDB verbindet sich über diese via TCP.
Im Falle von simulavr braucht's dafür keine serielle Schnittstelle,
im
Falle von AVaRICE braucht man diese, um das JTAG ICE anzusteuern.

simulavr ist leider recht spartanisch in der Simulation von IO
Komponenten.  Damit ist es eigentlich wirklich nur für Algorithmen
geeignet, alles andere macht man besser auf dem Zielprozessor.

> ns: dein makefile-editor ist super, danke für das teil !!

Freut mich, wenn ich den Leuten damit helfen konnte.  Nachdem ich es
geschrieben habe, benutze ich es auch selbst. ;-)

von brandner thomas (Gast)


Lesenswert?

@jörg:

ok, das klingt gut. du bringst mich auf den geschmack, mein "bastel
notebook" auf linux zu bringen und unter linux weiterzuentwickeln ...
:-)

gibt so ein paket wie winavr auf unter linux? wo bekomme ich die ganze
software hierfür her? vielleicht rüste ich wirklich auf linux um ...
:-)

vielen dank jedenfalls für die informationen,

thomas

von Jörg Wunsch (Gast)


Lesenswert?

> gibt so ein paket wie winavr auf unter linux?

Irgendwas gibt's da, aber ich habe den Namen vergessen.  Erstens
nehme
ich kein Linux sondern FreeBSD, für das ich zudem noch selbst die
entsprechenden Pakete pflege.  Außerdem gibt's ja fertige RPMs von
den
einzelnen Tools auch fertig (meistenteils von Ted Roth, der seine
eigene Entwicklun unter Linux macht).

Mich stört es nicht, auch mal schnell einen Compiler selbst zu
compilieren. ;-)

Was brauchst Du noch an Software?  Ein gutgehender Editor (vim und
Emacs dürften die beliebtesten sein, andere gibt es aber wie Sand am
Meer) gehört irgendwie ohnehin zum System.  Dinge wie `make' sind
eigentlich auch von Haus aus dabei.

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.