cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
sheheeraismail
Observer
Observer
3,089 Views
Registered: ‎11-17-2017

Debug multiple Zynq boards on same PC

Boards: picoZed Zynq z7030 x2

JTAG interface: Platform Cable USB II x2

SDK: version 2017.4

I have to program two picoZed boards to debug their peripheral communication. I have followed the steps in the article SDK New Features - Multiple cable and Multiple device Support. The Debug tool of Xilinx SDK does not have the option to concurrently detect and program two plugged-in picoZed boards in one Debug Configuration setting.

So I have opened two instances of SDK (say SDK 1 and SDK 2), each SDK opens a dedicated workspace (workspace 1 and workspace 2). I want to now load elf file and be able to have breakpoints in the code for each board.

I tried various XSCT commands using the Embedded System Tools Reference Manual. I start a hw_server on port 3122 but when I search for target boards, they are detected only on port 3121 (default) on localhost. Below is a screenshot to where 'targets' result in no hardware detection on other ports.

connect
connect -new -port 3122
connect -list
connect -set <tcf channel id>#
targets

board_only_detected_on_port_3121.png

The other option I tried was to have SDK 1 and SDK 2 connected to the same hw_server and port 3121 but use jtag commands to filter one Platform cable II for each SDK.

targets
jtag ta
jtag ta -ta
configp jtag-port-filter "Xilinx/DLC10/<cable esn>"
targets
target <target id>

The two debug configurations load successfully on each board. Each debug configuration programs the FPGA of my choice but when I run the code, both SDKs are synchronised in their display. The XSCT window of SDK 1 and SDK2 mirror each other and also mirror each others breakpoints and code running. This defeats the whole purpose of having two distinct+independent debug tools. Please help.

4 Replies
sheheeraismail
Observer
Observer
2,962 Views
Registered: ‎11-17-2017

It is so disappointing to find no help on Xilinx platform whether it is queries about peripherals, comms systems, Zynq boards or SDK setup.
I solved the problem. Start two hw_servers on two XSCT windows.

xsct% hw_server -s tcp:myfirstserver:3122 // leave this 1st server running
xsct% hw_server -s tcp:mysecondserver:3122 // leave this 2nd server running as well

Open two SDK instances SDK1 and SDK2. In the XSCT window of each SDK, connect to one hw_server.

%xsct connect -url tcp:myfirstserver:3122 // in SDK1
%xsct connect -url tcp:mysecondserver:3122 // in SDK2

Then plug in the two Platform Cable(s) USB II with the PC. Turn on the dev boards. Type 'jtag targets' on SDK1 and SDK2 and both cables are detected + listed. Use jtag ta and filtering to select one cable in each SDK like the image below.

jtag ta -ta
configp jtag-port-filter "Xilinx/DLC10/0000123456abc"

Launch Debug configuration ->Target Setup-> Connection ->click 'New'. Enter the new server details and select it instead of 'Local'. On the same window, click on 'Select' next to FPGA. In a pop-up window, select your new server from drop down menu. And possible do auto-search. It should list the relevant cable and target.

xilinx_sdk_detect_hardware.jpg

kalhana_oa
Observer
Observer
2,458 Views
Registered: ‎10-31-2018

Thanks for this! I'm going to try this (other option was to make a VM and connect the 2nd JTAG to the VM).

It's a common application where you'd need to debug multiple systems in parallel (I'm doing SDR development and need 2 systems) and Xilinx should really make this as easy as selecting from a dropdown menu!
0 Kudos
kalhana_oa
Observer
Observer
2,451 Views
Registered: ‎10-31-2018

OK, looks like there's an easier way.

 

a.png

sadanan
Xilinx Employee
Xilinx Employee
2,411 Views
Registered: ‎10-21-2010

Hi @kalhana_oa

This will work, but the debug view will still show contexts from both the cables. So, if one of the cores from the other cable is suspended (by someone else who is debugging that cable), then you'll see context switches in your debug view. If you're interested in hiding the other cable completely, then you can use the jtag-port-filter option

0 Kudos