I bought this small USB stick from eBay. It supposedly can do JTAG and many other cool stuff for ATMEL microcontrollers.
Anyway, here is the detail how to use it:
The other end of the stick has dual-line 10-pin connector. The pins are:
Pin Purpose
------------------------------
1 TCK
2 GND
3 TDO
4 VTref
5 TMS
6 nSRT
7 VSupply
8 (nSRT)
9 TDI
10 GND
These pins are actually JTAG pins. The connections to the Microcontroller is as follow (the pullup resistors are all 4.7k):
The USB id:
$ lsusb
...
Bus 003 Device 006: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
...
Upon inserting the stick to my PC's USB (running Ubuntu Linux):
[118845.955500] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[118845.955541] ch341 3-2:1.0: device disconnected
[118851.692044] usb 3-2: new full-speed USB device number 6 using ohci-pci
[118851.901261] usb 3-2: New USB device found, idVendor=1a86, idProduct=7523
[118851.901271] usb 3-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[118851.901276] usb 3-2: Product: USB2.0-Serial
[118851.904683] ch341 3-2:1.0: ch341-uart converter detected
[118851.940428] usb 3-2: ch341-uart converter now attached to ttyUSB0
To use it as programmer, we can use avrdude:
$ sudo avrdude -c avrisp -P /dev/ttyUSB0 -pm328p <other options>
To debug, we can use another opensource, AvaRICE (from ubuntu, just do "apt-get install avarice").
For example (this is just to show how to use it, as my ICE stick is not connected to any target device yet so it reports it "No configuration available for device ID: ffff"):
$ sudo avarice --jtag /dev/ttyUSB0 -1
AVaRICE version 2.11, Jan 17 2014 02:53:19
Defaulting JTAG bitrate to 250 kHz.
JTAG config starting.
Hardware Version: 0xc3
Software Version: 0x80
Reported JTAG device ID: 0xFFFF
No configuration available for device ID: ffff
The avarice can be set as a gdb server mode, so we can debug the target removely. For example, to make it as gdb-server listening on port 4242.
$ sudo avarice --jtag /dev/ttyUSB0 :4242
From another PC (or the same PC, if host and server is on the same machine), we open gdb, and connect:
$ gdb
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) target remote 127.0.0.1:4242
Anyway, here is the detail how to use it:
The other end of the stick has dual-line 10-pin connector. The pins are:
Pin Purpose
------------------------------
1 TCK
2 GND
3 TDO
4 VTref
5 TMS
6 nSRT
7 VSupply
8 (nSRT)
9 TDI
10 GND
These pins are actually JTAG pins. The connections to the Microcontroller is as follow (the pullup resistors are all 4.7k):
The USB id:
$ lsusb
...
Bus 003 Device 006: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
...
Upon inserting the stick to my PC's USB (running Ubuntu Linux):
[118845.955500] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[118845.955541] ch341 3-2:1.0: device disconnected
[118851.692044] usb 3-2: new full-speed USB device number 6 using ohci-pci
[118851.901261] usb 3-2: New USB device found, idVendor=1a86, idProduct=7523
[118851.901271] usb 3-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[118851.901276] usb 3-2: Product: USB2.0-Serial
[118851.904683] ch341 3-2:1.0: ch341-uart converter detected
[118851.940428] usb 3-2: ch341-uart converter now attached to ttyUSB0
To use it as programmer, we can use avrdude:
$ sudo avrdude -c avrisp -P /dev/ttyUSB0 -pm328p <other options>
To debug, we can use another opensource, AvaRICE (from ubuntu, just do "apt-get install avarice").
For example (this is just to show how to use it, as my ICE stick is not connected to any target device yet so it reports it "No configuration available for device ID: ffff"):
$ sudo avarice --jtag /dev/ttyUSB0 -1
AVaRICE version 2.11, Jan 17 2014 02:53:19
Defaulting JTAG bitrate to 250 kHz.
JTAG config starting.
Hardware Version: 0xc3
Software Version: 0x80
Reported JTAG device ID: 0xFFFF
No configuration available for device ID: ffff
The avarice can be set as a gdb server mode, so we can debug the target removely. For example, to make it as gdb-server listening on port 4242.
$ sudo avarice --jtag /dev/ttyUSB0 :4242
From another PC (or the same PC, if host and server is on the same machine), we open gdb, and connect:
$ gdb
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) target remote 127.0.0.1:4242