Forum: Compiler & IDEs JTAG3 mit Eclipse unter Linux


von JTAG3 (Gast)


Lesenswert?

Hallo,

ich versuche gerade meinen Programmer unter ArchLinux mit Eclipse und 
dem AVR Plugin zum laufen zu bekommen.

In Eclipse habe ich für den Programmer
id    = "jtag3isp";
desc  = "Atmel AVR JTAGICE3 in ISP mode";
type  = "jtagice3_isp";
connection_type = usb;
usbpid = 0x2110, 0x2140;

Mit dem Port: /dev/hiddev0
Override default baudrate: 9600

JTAG ICE bitclock 4us
Bit state change delay 10 us

unter /etc/udev/rules.d/ habe ich eine datei angelegt mit:
SUBSYSTEM=="usb", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2140", 
GROUP="users", MODE="0666"



Mit: lsusb -v -d 03eb:2140
erhalte ich:

Bus 001 Device 003: ID 03eb:2140 Atmel Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x03eb Atmel Corp.
  idProduct          0x2140
  bcdDevice            1.01
  iManufacturer           1 Atmel Corp.
  iProduct                2 JTAGICE3 CMSIS-DAP
  iSerial                 3 J30200002730
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           64
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              4 JTAGICE3 CMSIS-DAP
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      35
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              5 JTAGICE3 Data Gateway
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval             255
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval             255
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)


Die Firmware des JTAGICE3 habe ich unter Windows auf V2 von 3.2a 
"geändert"

Trotzdem erhalte ich wenn ich einen Controller suche im AVR Dude die 
Fehlermeldung: "Either  avrdude returned an error message that is not 
covered by the AVR Eclipse Pluguin
- or you have a newer AVRDude Version with a changed output format.

Kann mir jemand weiter helfen? Was mache ich falsch?

von JTAGICE3 (Gast)


Lesenswert?

Keiner kann mir helfen? Falsches Forum?

von JTAG3 (Gast)


Lesenswert?

Wäre ein Mod so nett und würde das Thema in Compiler & IDEs verschieben? 
Ich denke da könnte ich mehr glück haben... Danke!

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


Lesenswert?

JTAG3 schrieb:
> Die Firmware des JTAGICE3 habe ich unter Windows auf V2 von 3.2a
> "geändert"

Das war dein Fehler.

Die 3er Firmware wird vom letzten offiziellen AVaRICE-Release noch
nicht unterstützt, weil sie einen komplett anderen Transportmechanismus
für die Daten nutzt.  Die 2er wäre unterstützt gewesen, aber mit der
will Atmel Studio nicht mehr arbeiten.

Die gute Nachricht: vor einer Woche habe ich den Support dafür in
den Code eingebaut.  Wenn du die SVN-Version von AVaRICE bauen
kannst, kannst du sie gern testen.  Du musst allerdings eine libhidapi
in Reichweite haben (also einschließlich der Headerfiles) für die
Unterstützung der HID-basierten Debugger (JTAGICE3 mit Firmware 3.x,
Atmel-ICE, EDBG, mEDBG).

Bevor ich einen Release damit rausbringe, will ich erst noch ein
paar andere Dinge aufräumen, aber die ersten Anzeichen sind recht
positiv, dass das funktioniert.

von JTAGICE3 (Gast)


Lesenswert?

Du hast dich verlesen. ich habe von 3 auf 2 gedowngraded also runter.... 
läuft aber trotzdem nicht ;)

Ne Idee?

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


Lesenswert?

JTAGICE3 schrieb:
> Ich habe von 3 auf 2 gedowngraded

Da stand aber:

JTAG3 schrieb:
> unter Windows auf V2 von 3.2a "geändert"

Das klingt anders.

Downgrade wird offiziell gar nicht unterstützt.  Geht nur, indem
man sich aus den jeweiligen Studio-Releases die Firmware hinlegt
und diese dann manuell mit dem Firmware-Upgrade-Tool draufbügelt.

Die PID 0x2140 gehört jedenfalls zur 3er Firmware.  Mit der 2er
Firmware meldet sich das JTAGICE3 als 0x2110.

von JTAG3 (Gast)


Lesenswert?

Hab die aktuelle SVN Version drauf:


avarice --jtag /dev/hiddev0
AVaRICE version 2.13svn20160229, Mar  6 2016 13:08:24

Defaulting JTAG bitrate to 250 kHz.

Failed to open /dev/hiddev0



Was mache ich falsch? Muss ich mehr Parameter angeben wie z.b. den MCU?

von JTAG3 (Gast)


Lesenswert?

Ah ok

avarice --edbg /dev/hiddev0:4242


Klappt aber nicht so richtig bei mir. Will die fuse Bits auslesen:

avarice -r --edbg /dev/hiddev0:4242
AVaRICE version 2.13svn20160229, Mar  6 2016 13:08:24

Defaulting JTAG bitrate to 250 kHz.


Mehr gibts nicht zurück...

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


Lesenswert?

JTAG3 schrieb:

> Failed to open /dev/hiddev0
>
>
>
> Was mache ich falsch?

Das musst du dein Betriebssystem fragen.  Klingt nach einem
Rechteproblem.  Vielleicht übereignest du ja mal dieses /dev/hiddev0
demjenigen, der da an der Kiste eingeloggt ist?  (Ich vermute, dass
die meisten Linux-Distris das heutzutage aus der Dose raus machen,
ich hatte jedenfalls unter Ubuntu damit keinen Stress.)

JTAG3 schrieb:
> avarice --edbg /dev/hiddev0:4242

Wie hast du dir das denn zusammengereimt?

Das /dev/hiddev0 hat da nichts zu suchen, und die :4242 gehört mit
einem Leerzeichen getrennt, aber nur dann, wenn du auch den GDB-Server
starten willst (das ist nämlich die Portnummer für den Server).

Solange sich die libhidapi aber beklagt, dass sie das /dev/hiddev0
nicht geöffnet bekommt, brauchst du nichts anderes zu testen.

> Klappt aber nicht so richtig bei mir. Will die fuse Bits auslesen:

Speichermanipulationen gehen vorzugsweise mit AVRDUDE statt
AVaRICE.  Aber auch dort wirst du (in der aktuellen SVN-Version)
einen Zugriff auf /dev/hiddev0 brauchen.

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.