Electronic – Multiple USB – JTAG devices, how to specify target over Xilinx XMD

jtagxilinx

I couldn't find an answer to this anywhere, so I'll post my hack-tastic solution here with the hopes that anyone else who comes across this same problem can share a better answer.

I need to communicate with multiple JTAG devices connected to the same host using XMD. I have 2 USB-JTAG devices connected to my Windows 7 host: a Digilent HS2, and a Xilinx Platform Cable USB II, and I need to keep both of these devices plugged in to the same USB hub.

By the Xilinx "Embedded System Tools Reference Manual", it's possible to specify the target device using XMD% xrjtagchain [-cable <cable_options>]. Some of the cable options include using either the Electronic Serial Number (ESN) or USB port. I prefer using the ESN; I couldn't figure out how my devices were enumerated in the USB list, and so had no luck with XMD% xrjtagchain -cable port USB21, to use an example from the documentation. I looked at the device information in the Windows device manager and tried several USB port numbers with no luck.

Using the ESN approach, the Xilinx Platform Cable USB II device did not respond with a valid ESN, so I could not address it.

XMD% cableesn
XMD_DEBUG - Executing Command: xrcableesn
XMD_DEBUG - Xilinx hw_server URL=TCP::3121
XMD_DEBUG - Connecting to hw_server at TCP::3121
XMD_DEBUG - Connected to hw_server at TCP::3121
XMD_DEBUG - Target 0: jsn-JTAG-HS2-210249983399=Digilent/210249983399/
XMD_DEBUG - Target 1: jsn-DLC10-000180fe56601=unknown/unknown/
Digilent/210249983399/,unknown/unknown/

The device I need to address is "Target 1", but the ESN is unknown/unknown.

The best I could come up with was to use the following command:

XMD% connect arm hw -cable esn unknown/unknown

This is the only way that worked for me. Is there a better way?

Best Answer

I know this is a bit old, but the solution was so frustratingly simple that I had to post it...

As you may have seen, you can specify the port to connect to using

... -cable port <port number> ...

However, it seems that XMD will try to auto-connect and select the last connected JTAG device, which defeats the purpose of specifying the port.

The solution is to specify the cable type before the port number. For example:

... -cable type xilinx_platformusb port USB21 ...

You can try this out by using the xrjtagchain command and ensure that it connects to the proper port each time.