Re: timeouts on USB ISP programmer
- Reply: Tomek CEDRO : "Re: timeouts on USB ISP programmer"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 07 Apr 2022 17:40:59 UTC
Sorry, this time a reply that is subscribed to the list :-)
Hello world :-)
Short story:
* Try `-P usb:/dev/cuaU0` parameter. You need to use `usb:` prefix for
the USB adapter.
* Did that interface worked well on other OS with avrdude 6.4 (we
currently have 6.3 port on FreeBSD)?
* I have encountered similar issue with VID:PID pair on my
ATtiny416XNANO board. This needs patching the upstream. But port uses
several local patched to build on FreeBSD that are not part of the
upstream. We have to make upstream build cleanly on FreeBSD in the
first place :-)
Long story:
I have some Attiny104XplainedNano and Attiny416XplainedNano develkits
we can play with. I will provide example step by step documentation
that helps solving problems and that got me into conslusions presented
above :-)
Best regards :-)
Tomek
== OS ==
FreeBSD hexagon 13.1-STABLE FreeBSD 13.1-STABLE #0
stable/13-n250096-4f69c575996: Fri Mar 25 03:50:58 CET 2022
root@hexagon:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
== ATtiny416XplainedNano ==
# dmesg | tail
ugen0.8: <ATMEL mEDBG CMSIS-DAP> at usbus0
usbhid4 on uhub15
usbhid4: <ATMEL mEDBG CMSIS-DAP, class 239/2, rev 2.00/10.00, addr 7> on usbus0
hidbus4: <HID bus> on usbhid4
umodem0 on uhub15
umodem0: <ATMEL mEDBG CMSIS-DAP, class 239/2, rev 2.00/10.00, addr 7> on usbus0
umodem0: data interface 2, has CM over data, has break
# usbconfig -d 0.8 dump_device_desc
ugen0.8: <ATMEL mEDBG CMSIS-DAP> at usbus0, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=ON (100mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x00ef <Miscellaneous device>
bDeviceSubClass = 0x0002
bDeviceProtocol = 0x0001
bMaxPacketSize0 = 0x0020
idVendor = 0x03eb
idProduct = 0x2145
bcdDevice = 0x1000
iManufacturer = 0x0001 <ATMEL>
iProduct = 0x0002 <mEDBG CMSIS-DAP>
iSerialNumber = 0x0003 <ATML2795042700003537>
bNumConfigurations = 0x0001
== ATtiny416XplainedNano ==
# dmesg | tail
ugen0.8: <ATMEL mEDBG CMSIS-DAP> at usbus0 (disconnected)
usbhid4: at uhub15, port 4, addr 7 (disconnected)
hidbus4: detached
usbhid4: detached
umodem0: at uhub15, port 4, addr 7 (disconnected)
umodem0: detached
ugen0.8: <ATMEL mEDBG CMSIS-DAP> at usbus0
usbhid4 on uhub15
usbhid4: <ATMEL mEDBG CMSIS-DAP, class 239/2, rev 2.00/10.00, addr 7> on usbus0
hidbus4: <HID bus> on usbhid4
umodem0 on uhub15
umodem0: <ATMEL mEDBG CMSIS-DAP, class 239/2, rev 2.00/10.00, addr 7> on usbus0
umodem0: data interface 2, has CM over data, has break
# usbconfig -d 0.8 dump_device_desc
ugen0.8: <ATMEL mEDBG CMSIS-DAP> at usbus0, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=ON (100mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x00ef <Miscellaneous device>
bDeviceSubClass = 0x0002
bDeviceProtocol = 0x0001
bMaxPacketSize0 = 0x0020
idVendor = 0x03eb
idProduct = 0x2145
bcdDevice = 0x1000
iManufacturer = 0x0001 <ATMEL>
iProduct = 0x0002 <mEDBG CMSIS-DAP>
iSerialNumber = 0x0003 <ATML2678020200009059>
bNumConfigurations = 0x0001
== AVRDUDE PART ==
% avrdude -c "?"
Valid programmers are:
2232HIO = FT2232H based generic programmer
4232h = FT4232H based generic programmer
arduino = Arduino
arduino-ft232r = Arduino: FT232R connected to ISP
atmelice = Atmel-ICE (ARM/AVR) in JTAG mode
atmelice_dw = Atmel-ICE (ARM/AVR) in debugWIRE mode
atmelice_isp = Atmel-ICE (ARM/AVR) in ISP mode
atmelice_pdi = Atmel-ICE (ARM/AVR) in PDI mode
atmelice_updi = Atmel-ICE (ARM/AVR) in UPDI mode
avr109 = Atmel AppNote AVR109 Boot Loader
avr910 = Atmel Low Cost Serial Programmer
avr911 = Atmel AppNote AVR911 AVROSP
avrftdi = FT2232D based generic programmer
avrisp = Atmel AVR ISP
avrisp2 = Atmel AVR ISP mkII
avrispmkII = Atmel AVR ISP mkII
avrispv2 = Atmel AVR ISP V2
buspirate = The Bus Pirate
buspirate_bb = The Bus Pirate (bitbang interface, supports TPI)
butterfly = Atmel Butterfly Development Board
butterfly_mk = Mikrokopter.de Butterfly
bwmega = BitWizard ftdi_atmega builtin programmer
C232HM = FT232H based module from FTDI and Glyn.com.au
c2n232i = serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts
dasa = serial port banging, reset=rts sck=dtr mosi=txd miso=cts
dasa3 = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts
diecimila = alias for arduino-ft232r
dragon_dw = Atmel AVR Dragon in debugWire mode
dragon_hvsp = Atmel AVR Dragon in HVSP mode
dragon_isp = Atmel AVR Dragon in ISP mode
dragon_jtag = Atmel AVR Dragon in JTAG mode
dragon_pdi = Atmel AVR Dragon in PDI mode
dragon_pp = Atmel AVR Dragon in PP mode
ehajo-isp = avr-isp-programmer from eHaJo, http://www.eHaJo.de
flip1 = FLIP USB DFU protocol version 1 (doc7618)
flip2 = FLIP USB DFU protocol version 2 (AVR4023)
ft232r = FT232R Synchronous BitBang
ft245r = FT245R Synchronous BitBang
iseavrprog = USBtiny-based USB programmer,
https://github.com/IowaScaledEngineering/ckt-avrp
jtag1 = Atmel JTAG ICE (mkI)
jtag1slow = Atmel JTAG ICE (mkI)
jtag2 = Atmel JTAG ICE mkII
jtag2avr32 = Atmel JTAG ICE mkII im AVR32 mode
jtag2dw = Atmel JTAG ICE mkII in debugWire mode
jtag2fast = Atmel JTAG ICE mkII
jtag2isp = Atmel JTAG ICE mkII in ISP mode
jtag2pdi = Atmel JTAG ICE mkII PDI mode
jtag2slow = Atmel JTAG ICE mkII
jtag3 = Atmel AVR JTAGICE3 in JTAG mode
jtag3dw = Atmel AVR JTAGICE3 in debugWIRE mode
jtag3isp = Atmel AVR JTAGICE3 in ISP mode
jtag3pdi = Atmel AVR JTAGICE3 in PDI mode
jtag3updi = Atmel AVR JTAGICE3 in UPDI mode
jtagkey = Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2
jtagmkI = Atmel JTAG ICE (mkI)
jtagmkII = Atmel JTAG ICE mkII
jtagmkII_avr32 = Atmel JTAG ICE mkII im AVR32 mode
lm3s811 = Luminary Micro LM3S811 Eval Board (Rev. A)
mib510 = Crossbow MIB510 programming board
mkbutterfly = Mikrokopter.de Butterfly
nibobee = NIBObee
o-link = O-Link, OpenJTAG from www.100ask.net
openmoko = Openmoko debug board (v3)
pavr = Jason Kyle's pAVR Serial Programmer
pickit2 = MicroChip's PICkit2 Programmer
pickit4_updi = MPLAB(R) PICkit 4 in UPDI mode
pkobn_updi = Curiosity nano (nEDBG) in UPDI mode
ponyser = design ponyprog serial, reset=!txd sck=rts
mosi=dtr miso=cts
powerdebugger = Atmel PowerDebugger (ARM/AVR) in JTAG mode
powerdebugger_dw = Atmel PowerDebugger (ARM/AVR) in debugWire mode
powerdebugger_isp = Atmel PowerDebugger (ARM/AVR) in ISP mode
powerdebugger_pdi = Atmel PowerDebugger (ARM/AVR) in PDI mode
powerdebugger_updi = Atmel PowerDebugger (ARM/AVR) in UPDI mode
siprog = Lancos SI-Prog <http://www.lancos.com/siprogsch.html>
snap_updi = MPLAB(R) SNAP in UPDI mode
stk500 = Atmel STK500
stk500hvsp = Atmel STK500 V2 in high-voltage serial programming mode
stk500pp = Atmel STK500 V2 in parallel programming mode
stk500v1 = Atmel STK500 Version 1.x firmware
stk500v2 = Atmel STK500 Version 2.x firmware
stk600 = Atmel STK600
stk600hvsp = Atmel STK600 in high-voltage serial programming mode
stk600pp = Atmel STK600 in parallel programming mode
tc2030 = Tag-Connect TC2030
ttl232r = FTDI TTL232R-5V with ICSP adapter
tumpa = TIAO USB Multi-Protocol Adapter
UM232H = FT232H based module from FTDI and Glyn.com.au
uncompatino = uncompatino with all pairs of pins shorted
usbasp = USBasp, http://www.fischl.de/usbasp/
usbasp-clone = Any usbasp clone with correct VID/PID
usbtiny = USBtiny simple USB programmer,
https://learn.adafruit.com/usbtinyisp
wiring = Wiring
xbee = XBee Series 2 Over-The-Air (XBeeBoot)
xplainedmini = Atmel AVR XplainedMini in ISP mode
xplainedmini_dw = Atmel AVR XplainedMini in debugWIRE mode
xplainedmini_updi = Atmel AVR XplainedMini in UPDI mode
xplainedpro = Atmel AVR XplainedPro in JTAG mode
xplainedpro_updi = Atmel AVR XplainedPro in UPDI mode
% avrdude -p "?"
Valid parts are:
uc3a0512 = AT32UC3A0512
c128 = AT90CAN128
c32 = AT90CAN32
c64 = AT90CAN64
pwm2 = AT90PWM2
pwm216 = AT90PWM216
pwm2b = AT90PWM2B
pwm3 = AT90PWM3
pwm316 = AT90PWM316
pwm3b = AT90PWM3B
1200 = AT90S1200
2313 = AT90S2313
2333 = AT90S2333
2343 = AT90S2343
4414 = AT90S4414
4433 = AT90S4433
4434 = AT90S4434
8515 = AT90S8515
8535 = AT90S8535
usb1286 = AT90USB1286
usb1287 = AT90USB1287
usb162 = AT90USB162
usb646 = AT90USB646
usb647 = AT90USB647
usb82 = AT90USB82
m103 = ATmega103
m128 = ATmega128
m1280 = ATmega1280
m1281 = ATmega1281
m1284 = ATmega1284
m1284p = ATmega1284P
m1284rfr2 = ATmega1284RFR2
m128rfa1 = ATmega128RFA1
m128rfr2 = ATmega128RFR2
m16 = ATmega16
m1608 = ATmega1608
m1609 = ATmega1609
m161 = ATmega161
m162 = ATmega162
m163 = ATmega163
m164p = ATmega164P
m168 = ATmega168
m168p = ATmega168P
m168pb = ATmega168PB
m169 = ATmega169
m16u2 = ATmega16U2
m2560 = ATmega2560
m2561 = ATmega2561
m2564rfr2 = ATmega2564RFR2
m256rfr2 = ATmega256RFR2
m32 = ATmega32
m3208 = ATmega3208
m3209 = ATmega3209
m324a = ATmega324A
m324p = ATmega324P
m324pa = ATmega324PA
m324pb = ATmega324PB
m325 = ATmega325
m3250 = ATmega3250
m328 = ATmega328
m328p = ATmega328P
m328pb = ATmega328PB
m329 = ATmega329
m3290 = ATmega3290
m3290p = ATmega3290P
m329p = ATmega329P
m32m1 = ATmega32M1
m32u2 = ATmega32U2
m32u4 = ATmega32U4
m406 = ATMEGA406
m48 = ATmega48
m4808 = ATmega4808
m4809 = ATmega4809
m48p = ATmega48P
m48pb = ATmega48PB
m64 = ATmega64
m640 = ATmega640
m644 = ATmega644
m644p = ATmega644P
m644rfr2 = ATmega644RFR2
m645 = ATmega645
m6450 = ATmega6450
m649 = ATmega649
m6490 = ATmega6490
m64m1 = ATmega64M1
m64rfr2 = ATmega64RFR2
m8 = ATmega8
m808 = ATmega808
m809 = ATmega809
m8515 = ATmega8515
m8535 = ATmega8535
m88 = ATmega88
m88p = ATmega88P
m88pb = ATmega88PB
m8a = ATmega8A
m8u2 = ATmega8U2
t10 = ATtiny10
t11 = ATtiny11
t12 = ATtiny12
t13 = ATtiny13
t15 = ATtiny15
t1604 = ATtiny1604
t1606 = ATtiny1606
t1607 = ATtiny1607
t1614 = ATtiny1614
t1616 = ATtiny1616
t1617 = ATtiny1617
t1624 = ATtiny1624
t1626 = ATtiny1626
t1627 = ATtiny1627
t1634 = ATtiny1634
t20 = ATtiny20
t202 = ATtiny202
t204 = ATtiny204
t212 = ATtiny212
t214 = ATtiny214
t2313 = ATtiny2313
t24 = ATtiny24
t25 = ATtiny25
t26 = ATtiny26
t261 = ATtiny261
t28 = ATtiny28
t3216 = ATtiny3216
t3217 = ATtiny3217
t4 = ATtiny4
t40 = ATtiny40
t402 = ATtiny402
t404 = ATtiny404
t406 = ATtiny406
t412 = ATtiny412
t414 = ATtiny414
t416 = ATtiny416
t417 = ATtiny417
t424 = ATtiny424
t426 = ATtiny426
t427 = ATtiny427
t4313 = ATtiny4313
t43u = ATtiny43u
t44 = ATtiny44
t441 = ATtiny441
t45 = ATtiny45
t461 = ATtiny461
t5 = ATtiny5
t804 = ATtiny804
t806 = ATtiny806
t807 = ATtiny807
t814 = ATtiny814
t816 = ATtiny816
t817 = ATtiny817
t824 = ATtiny824
t826 = ATtiny826
t827 = ATtiny827
t84 = ATtiny84
t841 = ATtiny841
t85 = ATtiny85
t861 = ATtiny861
t88 = ATtiny88
t9 = ATtiny9
x128a1 = ATxmega128A1
x128a1d = ATxmega128A1revD
x128a1u = ATxmega128A1U
x128a3 = ATxmega128A3
x128a3u = ATxmega128A3U
x128a4 = ATxmega128A4
x128a4u = ATxmega128A4U
x128b1 = ATxmega128B1
x128b3 = ATxmega128B3
x128c3 = ATxmega128C3
x128d3 = ATxmega128D3
x128d4 = ATxmega128D4
x16a4 = ATxmega16A4
x16a4u = ATxmega16A4U
x16c4 = ATxmega16C4
x16d4 = ATxmega16D4
x16e5 = ATxmega16E5
x192a1 = ATxmega192A1
x192a3 = ATxmega192A3
x192a3u = ATxmega192A3U
x192c3 = ATxmega192C3
x192d3 = ATxmega192D3
x256a1 = ATxmega256A1
x256a3 = ATxmega256A3
x256a3b = ATxmega256A3B
x256a3bu = ATxmega256A3BU
x256a3u = ATxmega256A3U
x256c3 = ATxmega256C3
x256d3 = ATxmega256D3
x32a4 = ATxmega32A4
x32a4u = ATxmega32A4U
x32c4 = ATxmega32C4
x32d4 = ATxmega32D4
x32e5 = ATxmega32E5
x384c3 = ATxmega384C3
x384d3 = ATxmega384D3
x64a1 = ATxmega64A1
x64a1u = ATxmega64A1U
x64a3 = ATxmega64A3
x64a3u = ATxmega64A3U
x64a4 = ATxmega64A4
x64a4u = ATxmega64A4U
x64b1 = ATxmega64B1
x64b3 = ATxmega64B3
x64c3 = ATxmega64C3
x64d3 = ATxmega64D3
x64d4 = ATxmega64D4
x8e5 = ATxmega8E5
avr128da28 = AVR128DA28
avr128da32 = AVR128DA32
avr128da48 = AVR128DA48
avr128da64 = AVR128DA64
avr128db28 = AVR128DB28
avr128db32 = AVR128DB32
avr128db48 = AVR128DB48
avr128db64 = AVR128DB64
avr32da28 = AVR32DA28
avr32da32 = AVR32DA32
avr32da48 = AVR32DA48
avr32db28 = AVR32DB28
avr32db32 = AVR32DB32
avr32db48 = AVR32DB48
avr64da28 = AVR64DA28
avr64da32 = AVR64DA32
avr64da48 = AVR64DA48
avr64da64 = AVR64DA64
avr64db28 = AVR64DB28
avr64db32 = AVR64DB32
avr64db48 = AVR64DB48
avr64db64 = AVR64DB64
ucr2 = deprecated, use 'uc3a0512'
lgt8fx168p = LGT8FX168P
lgt8fx328p = LGT8FX328P
lgt8fx88p = LGT8FX88P
% avrdude -c "?" 2>&1| grep -i diamex
(no result)
Diamex device is not in the list of the supported programmers of
avrdude. You or Diamex will have to create and provide configuration
to that interface so it is available to everyone :-)
This is Open-Source project at:
https://github.com/avrdudes/avrdude
Nothing about Diamex mentioned in the repo:
https://github.com/avrdudes/avrdude/search?q=diamex
% avrdude -p "?" 2>&1| grep -i tiny104
(no result)
Looks like we have no use with ATtiny104 board bacause target is not supported.
% avrdude -p "?" 2>&1| grep -i tiny416
t416 = ATtiny416
But we can play with the ATtiny416 board :-)
Also I have somewhere ATtiny10 purchased for one project, so I could
solder that quickly and use ATtiny104XNANO as the programmer for
ATtiny10 if necessary.
== Memory Access ==
hexagon% avrdude -c xplainedmini -p t416 -P usb:/dev/cuaU0
avrdude: jtag3_open_common(): Did not find any device matching VID
0x03eb and PID list: 0x2145
avrdude done. Thank you.
hexagon% avrdude -c xplainedmini_updi -p t416 -P usb:/dev/cuaU0
avrdude: jtag3_open_common(): Did not find any device matching VID
0x03eb and PID list: 0x2145
avrdude done. Thank you.
hexagon% avrdude -c xplainedmini_dw -p t416 -P usb:/dev/cuaU0
avrdude: jtag3_open_common(): Did not find any device matching VID
0x03eb and PID list: 0x2145
avrdude done. Thank you.
So it seems avrdude does not have VID:PID for my board in the source
code. We need to patch it. This seems to be defined in
`src/usbdevs.h`.
However upstream is not patched to build correctly on FreeBSD.
hexagon% make
[ 1%] [BISON][Parser] Building parser with bison 3.8.2
[ 3%] [FLEX][Parser] Building scanner with flex 2.6.4
[ 4%] Building C object src/CMakeFiles/libavrdude.dir/arduino.c.o
[ 6%] Building C object src/CMakeFiles/libavrdude.dir/avr.c.o
[ 8%] Building C object src/CMakeFiles/libavrdude.dir/avr910.c.o
[ 9%] Building C object src/CMakeFiles/libavrdude.dir/avrftdi.c.o
In file included from
/home/cederom/cederom/work/CeDeROM/lab/embedded/avr/avrdude.git/src/avrftdi.c:41:
/home/cederom/cederom/work/CeDeROM/lab/embedded/avr/avrdude.git/src/avrftdi_private.h:12:11:
fatal error: 'libftdi1/ftdi.h' file not found
# include <libftdi1/ftdi.h>
^~~~~~~~~~~~~~~~~
1 error generated.
*** Error code 1
Port uses dozens patches that not only fixes build logic but also does
some changes to the functional part. These should be sent for a review
and merge into upstream in the first place so we can have a clean
build of the upstream on FreeBSD.
--
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info