Forum: Compiler & IDEs AVR debuggen mit Eclipse und AVaRICE unter Windows


von Peter K. (nnamdi)


Lesenswert?

Hallo,

es gibt sehr viele Postings zu verwandten Themen, aber nachdem ich nun 
drei Tage nonstop gesucht, ausprobiert und letztlich versagt habe, hoffe 
ich auf eine Antwort aus der Runde.

Bisher habe ich meine SW-Entwicklung für den AVR mit AVR-Studio bzw. 
WinAVR erledigt. Das läuft auch gut, bis auf den Umstand, dass beim 
Debuggen von C-Code die Zeilen-Zuordnung mit tatsächlich aktuell 
ausgeführten Code nicht genau übereinstimmt... kein großes Problem. Nun 
suche ich nach einer Entwicklungsumgebung, die es mir ermöglicht, meine 
Entwicklungsaktivitäten über prozessorgrenzen hinweg zu 
vereinheitlichen. Eclipse scheint dafür eine vielversprechende Umgebung 
zu sein. Und so habe ich bereits die neueste Version von Eclipse CDT 
sowie das vielfach erwähnte AVR-Eclipse-Plugin installiert (dann auch 
noch die CygWin-Tools) und Eclipse entsprechend konfiguriert.

Was schon funktioniert:

* Kompilieren des Quellcode
* Erzeugen von ausführbarem Code (.hex)
* Laden per avrdude auf den Prozessor und dort ausführen

Was noch nicht funktioniert ist das Debuggen, wie es mit AVR-Studio in 
gleicher Hardware-Konfiguration (ATmega162 und selbstgebasteltes 
JTAG-ICE-Interface am COM-Port) bereits möglich war. Und zwar scheint es 
am AVaRICE zu liegen, das sich z.B. nach dem Start in der DOS-Shell über

1
avarice --mkI -j COM8 -P atmega162 -I :1212

mit der Meldung

"JTAG ICE communication failure: Inappropriate ioctl for device"

verabschiedet.

Gibt es eine Idee, woran es liegen könnte, dass ich mit AVaRICE keine 
Verbindung aufbauen kann? Hat jemand einen Tipp, wie ich einen Schritt 
weiter kommen kann? Sollte ich besser eine andere Form als AVaRICE 
<->GDB für das Debuggen unter Windows verwenden?

Gruß
Peter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter K. schrieb:
> "JTAG ICE communication failure: Inappropriate ioctl for device"

Lass mal das AVaRICE mit -d laufen, dann müsste man sehen, an welcher
Stelle das passiert.

Den mkI-Code hat vermutlich schon sehr lange niemand mehr ernsthaft
benutzt.  Seit der AVR Dragon nun auch AVRs > 32 KiB Flash-ROM ganz
offiziell debuggen kann, gibt's ja auch keinen wirklichen Grund mehr
für die alten Clones.

von Peter K. (nnamdi)


Lesenswert?

Hallo Jörg,

danke erstmal für den Tipp. Habe AVaRICE mit der zusätzlichen Option -d 
in verschiedensten Konstellationen ausprobiert. Das Ergebnis ist immer 
das gleiche (wie oben beschrieben). Es erscheinen leider keine 
zusätzlichen Informationen, die Aufschluss über die Ursache des Abbruchs 
geben könnten.

Andere Ideen? Irgendetwas, das ich noch ausprobieren könnte?

Gruß
Peter

von 900ss (Gast)


Lesenswert?

Welches Betriebssystem nutzt du?

von Peter K. (nnamdi)


Lesenswert?

Windows XP

von 900ss (900ss)


Lesenswert?

Peter K. schrieb:
> Windows XP

Ich dachte evtl. Windows 7. Und ob das damit schon funkt?
Am Wochenende werde ich mal kurz einen Test machen, ob der aktuelle
AVaRICE funktioniert. Den hab ich auch noch nicht benutzt.

Falls es aber inzwischen bei dir funktioniert, dann schreib bitte kurz, 
dann brauch ich nicht zu testen.

von Peter K. (Gast)


Lesenswert?

> Am Wochenende werde ich mal kurz einen Test machen, ob der aktuelle
> AVaRICE funktioniert. Den hab ich auch noch nicht benutzt.

Testen könnte ich erst nach dem Wochenende wieder. Wäre super, wenn Du 
bei Dir mal schauen könntest...

Danke.
Peter

von 900ss (900ss)


Lesenswert?

So jetzt ist das Wochenende zwar um, aber ich habe mich eben mal 
hingesetzt. Vorher ging es einfach nicht.
Ich habe auch das Problem gefunden. Du gibst das Device der seriellen 
Schnittstelle nicht richtig an. War mir zwar schon vorher aufgefallen, 
aber ich war mir nicht mehr sicher. Unten findest du meinen Aufruf, der 
funktioniert und dann den gleichen Aufruf, wo ich die Schnittstelle so 
angebe, wie du es gemacht hast und ich bekomme die gleiche Fehlermeldung 
wie du. Du mußt die Schnittstelle als "/dev/comX" angeben.

Geht
C:\....>avarice --mkI -B4000khz --jtag /dev/com2 -P atmega32
AVaRICE version 2.9, Jan  7 2010 22:42:57

JTAG config starting.
Hardware Version: 0xc1
Software Version: 0x80
Reported JTAG device ID: 0x9502
Configured for device ID: 0x9502 atmega32 -- Matched with atmega32
JTAG config complete.

Geht nicht
C:\....>avarice --mkI -B4000khz --jtag COM2 -P atmega32
AVaRICE version 2.9, Jan  7 2010 22:42:57

JTAG ICE communication failed: Inappropriate ioctl for device

C:\....>

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Das könnte damit zusammen hängen, dass /dev/comN durch den Cygwin-
Layer interpretiert wird, während comN direkt ans Windows weiter
gereicht wird.  Damit weiß Cygwin dann nicht mehr, dass der
entsprechende Filedescriptor eine serielle Schnittstelle war,
mithin werden die ioctls abgelehnt.

von Peter K. (nnamdi)


Lesenswert?

danke, es läuft bei mir nun auch. War tatsächlich der 
Kommunikations-Parameter im Aufruf.

Gruß
Peter

von safexy (Gast)


Lesenswert?

Ich verwende den ICE über USB, unter linux gebe ich als Port usb an -> 
keine Probleme. Unter Windows funktioniert dies aber nicht. Hat jemand 
eine Ahnung was ich angeben muss? Unter AVR Studio läuft er auch über 
USB.

safexy

von Klaus W. (mfgkw)


Lesenswert?

Das liegt daran, daß du alte Threads kaperst.

von 900ss (900ss)


Lesenswert?

safexy schrieb:
> Hat jemand eine Ahnung was ich angeben muss?

Ja, USB.

von safexy (Gast)


Lesenswert?

Launching C:\WinAVR-20090313\bin\avrdude -pm2560 -cjtag2 -PUSB 
-Uflash:w:LCD_2nd.hex:a
Output:
avrdude: ser_open(): can't open device "USB": Das System kann die 
angegebene Datei nicht finden.

Leider funktioniert es bei mir nicht, siehe oben.
An Windows 7 scheint es nicht zu liegen, unter XP läuft es auch nicht.
Benutze jeweils libusb von winavr.

Genaugenommen ist der JTAG ICE MKII ein 1:1 clone von 
http://www.sureelectronics.net/goods.php?id=931

Da bei anderen im Forum es funktioniert, bei mir auch per COM und auch 
unter Windows mit AVR-Studio (und unter Linux auch über USB), sollte der 
clone nicht das Problem sein.

Woran könnte es noch liegen?

safexy

von safexy (Gast)


Lesenswert?

C:\Users\home>avarice --mkII  --jtag USB :4242
AVaRICE version 2.9, Mar  6 2009 08:16:00

Defaulting JTAG bitrate to 250 kHz.

Failed to open USB: No such file or directory


Ähnliches Bild bei abarice.

safexy

von 900ss (900ss)


Lesenswert?

Es gab da mal einen Fehler im Installer von WinAVR, aber ob der noch 
vorhanden ist, weiß ich nicht, vielleicht weiß Jörg etwa dazu.
Beitrag "Re: AVARICE macht garnichts, brauche Hilfe"

Vielleicht mußt du die libusb nochmal instalieren (von Sourceforge 
holen).
Im Moment sieht es bei mir genauso aus wie bei dir. Über USB geht es 
nicht aber über das Studio. Die Fehlermeldung ist die gleiche.

AVRStudio nutzt übrigens einen anderen USB-Treiber (Jungo), deshalb 
funktioniert AVRStudio.

Bei war es immer so, dass mit AVaRICE über USB kein 
Geschwindigkeitsvorteil entstand. Aber ich bin mir nicht sicher, ich 
glaube Jörg hat da irgendwann was getunt in AVaRICE, so dass es auch 
über USB schneller geht.
Ich nutze immer die serielle Schnittstelle. Hab den ICE aber lange nicht 
mehr genutzt.

von 900ss (900ss)


Lesenswert?

Nachtrag: Es lag mir in Erinnerung, war mir aber nicht sicher. Darum hab 
ich es nicht geschrieben. Eben hab ich aber im AVR-User-Manual 
nachgesehen:

1
AVR Studio can install and use the USB drivers from Jungo (which is included
2
as part of the AVR Studio installation). However, the Jungo drivers and the
3
LibUSB-Win32 drivers are mutually exclusive; if one set is installed the
4
other set will not work.

Das bedeutet, dass du nicht beide Treiber gleichzeitig ntzen kannst.
Es gibt die Möglichkeit, dass der LibUSB-Driver über den Jungo-Treiber 
arbeitet, dass hab ich aber nicht zum laufen bekommen "damals".

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.