Hallo zusammen,
ich versuche, einen ATmega1284P mit einem Atmel-ICE und avrdude zu
beschreiben, stoße dabei aber auf Probleme.
Verwendetes OS: Debian Buster (Stable, 10.3), 64 bit.
Nach dem Anschließen des ICE taucht dieser als USB-Gerät auf:
Ausgabe hier wie auch im folgenden auf relevante USB-Geräte beschränkt
1
~# lsusb
2
Bus 002 Device 006: ID 03eb:2141 Atmel Corp. ICE debugger
Das Interface 0 dieses Gerätes wurde auch korrekt von usbhid geclaimt:
1
~# lsusb -t
2
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 480M
3
|__ Port 4: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 480M
4
|__ Port 4: Dev 6, If 1, Class=Vendor Specific Class, Driver=, 480M
Ein entsprechender Aufruf von avrdude liefert eine längliche Ausgabe der
Kommunikation, bei der nach einigen erwarteten Übermittlungen
unerwartete folgen und anschließend die Kommunikation unterbrochen wird.
Aufgrund der Länge der Ausgabe findet sich diese als Anhang.
Nach dem Aufruf wird das Interface 0 nicht mehr von usbhid in Anspruch
genommen:
1
~# lsusb -t
2
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 480M
3
|__ Port 4: Dev 6, If 0, Class=Human Interface Device, Driver=, 480M
4
|__ Port 4: Dev 6, If 1, Class=Vendor Specific Class, Driver=, 480M
Weitere Aufrufe von avrdude schlagen entsprechend fehl:
1
~# avrdude -c atmelice_isp -P usb -p m1284p -vvv
2
3
avrdude: Version 6.3-20171130
4
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
5
Copyright (c) 2007-2014 Joerg Wunsch
6
7
System wide configuration file is "/etc/avrdude.conf"
8
User configuration file is "/root/.avrduderc"
9
User configuration file does not exist or is not a regular file, skipping
10
11
Using Port : usb
12
Using Programmer : atmelice_isp
13
avrdude: stk500v2_jtag3_open()
14
avrdude: usbhid_open(): Probing for max. packet size
15
avrdude: usbhid_open(): No response from device
16
avrdude: usbdev_open(): Found Atmel-ICE CMSIS-DAP, serno: J41800094055
17
avrdude: Found CMSIS-DAP compliant device, using EDBG protocol
18
avrdude: jtag3_getsync()
19
20
avrdude: jtag3_edbg_prepare()
21
avrdude: usbdev_recv_frame(): usb_interrupt_read(): could not detach kernel driver from interface 0: No data available
22
avrdude: jtag3_edbg_prepare(): failed to read from serial port (-1)
23
avrdude: failed to sync with the JTAGICE3 in ISP mode
24
25
avrdude done. Thank you.
Dieser Ausgabe wiederholt sich. Nach einem Abstecken und wieder
Anschließen lässt sich die gesamte Prozedur wiederholen.
Für Lösungshinweise wäre ich sehr dankbar.
Beste Grüße
Simon
Du versuchst, den AVR per ISP zu beschreiben, nicht per JTAG (was
Programmer und Chip auch können)?
Hast Du keine Windows-Maschine da, wo Du das ganze mal mit einem Atmel
Studio 7 testen kannst? Wenn das da geht, dann bist Du Dir sicher, dass
das kein Hardwareproblem ist.
fchk
Ja, genau, per ISP.
Habe es mit Atmel Studio 7 versucht, was funktionierte. Danach klappt es
auch mit avrdude, allerdings nur einmal. Wenn ich danach einen weiteren
(neuen) Chip nehme und es mit diesem probiere, habe ich wieder das
beschriebene Verhalten. Schließe ich den Programmer nochmal via Atmel
Studio an, so klappt es wieder für ein Board.
Simon
Stelle den ISP-Takt auf Minimum (100 oder 125 kHz), programmiere erst
die Fuses, und dann kannst Du im zweiten Durchgang das Teil ganz normal
programmieren. Der Werkszustand der Fuses und der zu hohe Default-Takt
des Programmers sind Dein Problem.
fchk