• 0
kursatgol

XUP USB-JTAG Programmer

Question

Hi All,

Is there anybody have any experience about XUP (Xilinx University Program) USB-JTAG Programmer Revision-G using with Vivado 2015 or 2018? I have some little experience with Vivado 2015.5 and 2018.1 but regarding my experiences XUP USB-JTAG Programmer is not compatible with Vivado? I tried all ways on Centos-7 OS and the particular script (install_drivers.tar.gz). I aimed to program the Zedboard for petalinux applications developing but no success with XUP USB-JTAG Rev.G and Vivado running on Centos-7. Could you please share any suggestions if you have?

Regards.

Kursat Gol

xup_problem.png

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

@kursatgol

What I did to get this working the last time someone asked about using the XUP JTAG Cable in Linux was the following:

1. Execute "cd /opt/Xilinx/Vivado/2018.1/data/xicom/cable_drivers/lin64/install_script/install_drivers/"
2. Execute "sudo ./install_drivers"
3. Execute “source /opt/Xilinx/Vivado/2018.1/settings64.sh”
4. Execute “vivado” to launch the application.
5. Open hardware manager and click auto connect.

Today I tried to replicate the setup in my CentOS 7 Virtual Machine running on my Windows 10 host and Vivado 2018.1 didn't initially find XUP JTAG Cable. In my attempts to debug this I disconnected the cable from the virtual machine and opened Vivado 2018.1 in Windows 10 and proceeded to see if it could be found. Much to my surprise, Vivado could not find it. I then opened the device manager and discovered that in Windows the XUP USB JTAG Cable was showing up as "Xilinx Embedded Platform USB Firmware Loader", which is effectively a bootloader firmware that's used to download the real firmware image. When the driver is properly installed in Windows 10 the OS should initially detect that the device does not have the application firmware programmed, programm it, and then re-enumerate it on the bus. To get Windows to do this I had to do the following:

1. Right click on “Xilinx Embedded Platform USB Firmware Loader” in the device manager and click “Uninstall”.
2. When the uninstall dialog popped up I checked the box the box that says “Delete the driver software for this device.” And then click ok.
3. Once driver uninstall completed I disconnected the programming cable.
4. Launched a command prompt in administrator mode and navigate to "c:\Xilinx\Vivado\2018.1\data\xicom\cable_drivers\nt64\dlc10_win7"
5. execute "wdreg -compat -inf %cd%\windrvr6.inf uninstall"
6. execute "wdreg -compat -inf %cd%\xusbdrvr.inf uninstall"
7. execute "wdreg -compat -inf %cd%\windrvr6.inf install"
8. execute "wdreg -compat -inf %cd%\xusbdrvr.inf install"
9. Reattach the XUP JTAG cable to the USB port.

After doing this I connected the cable and Windows loaded two drivers for it: a Jungo driver and a “Xilinx USB Cable” driver under the “Programming cables” section. My Windows 10 installation of Vivado 2018.1 is now able to recognize the XUP JTAG cable and find the Zynq 7020 that’s on the Zed board.

Now when I connect the XUP JTAG CABLE to my Centos7 VM and run Vivado Hardware manager is able to find it (see attached screenshots). Having observed this jogs my memory a bit. I remember that in the old days when you wanted to use the XUP JTAG CABLE, or any Xilinx Platform USB Cable in Linux, it was necessary to manually install the drivers via a script. This script not only installed a set of udev rules, but it also modified those rules so that they would call an fxload application and pass it the pathname for the correct firmware image to download to the cable. I also remember having to manually install fxload.

A quick look at the udev rules file installed with the 2018.1 drivers:

cat /etc/udev/rules.d/52-xilinx-pcusb.rules
# version 0002
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0007", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0013", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0015", MODE="666"

Here we can see that there is no call to fxload and there are no pathnames specified for the firmware images. I suspect that if you want to get this to work seamlessly then you will need to install impact and the cable drivers that impact includes. However, I cannot gaurantee that will work either. Since you are running a Windows host you could just do the same thing that works for me, which is installing the Windows drivers and letting Windows download the firmware to the XUP JTAG cable before you connect it to your Linux VM.

Thanks,
Michael

xup_jtag_centos_7_vivado_2018.1-01.JPG

xup_jtag_centos_7_vivado_2018.1-02.JPG

Share this post


Link to post
Share on other sites
  • 0

Hi @malexander,

You are the one and you are the wonderful guy for me. Many thanks for your kindly answer. It works!!! I don't have any vivado installation on my host windows-7 so i don't want to install. When i connect the Xilinx XUP-USB debugger to Centos-7 vm and the solution was editing the /etc/udev/rules.d/52-xilinx-pcusb.rules file like below;

[root@oeee lin]# cat /etc/udev/rules.d/52-xilinx-pcusb.rules

SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $TEMPNODE"

ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0007", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0013", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0015", MODE="666"

@malexander,

My last question is in vivade hardware manager GUI i couldn't see the flash programming option with an *.mcs file? But impact has this feature? How can i program my zedboard's flash memory with Vivado 2018.1 hardware manager via Xilinx XUP-USB JTAG debugger/programmer? So now it's working. :)

regards.

kursat

Share this post


Link to post
Share on other sites
  • 0

Hi @kursatgol,

I'm glad to here you are able to see your board through the XUP-USB through the VM.  My understanding is that the .mcs file process for configuring the flash has been deprecated. The .bin file is used to program flash. For the Zedboard you will need to create a boot.bin file in SDK.  Here is the Zedboard Programming Guide which is an older tutorial for doing this with the Zedboard.

thank you,

Jon

Share this post


Link to post
Share on other sites
  • 0

Hi @malexander,

Everything is fine from my side. I would share last point of my problem that the failure been regarding with xusb_xup.hex firmware file. The file which is coming with Vivado 2018.1 is not properly running but (I know hearing this is strange) the one which was coming with ISE-DS-14.6 is properly running on my host Windows 7. :)

Thanks again for your kindly regards.

kursat

Share this post


Link to post
Share on other sites
  • 0
On 1/11/2019 at 12:55 AM, kursatgol said:

Hi @malexander,

You are the one and you are the wonderful guy for me. Many thanks for your kindly answer. It works!!! I don't have any vivado installation on my host windows-7 so i don't want to install. When i connect the Xilinx XUP-USB debugger to Centos-7 vm and the solution was editing the /etc/udev/rules.d/52-xilinx-pcusb.rules file like below;

[root@oeee lin]# cat /etc/udev/rules.d/52-xilinx-pcusb.rules

SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $TEMPNODE"

ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0007", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0013", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0015", MODE="666"

@malexander,

My last question is in vivade hardware manager GUI i couldn't see the flash programming option with an *.mcs file? But impact has this feature? How can i program my zedboard's flash memory with Vivado 2018.1 hardware manager via Xilinx XUP-USB JTAG debugger/programmer? So now it's working. :)

regards.

kursat

I am having the same issue with the XUP JTAG when it is not detected by Vivado. I have installed the drivers using the Xilinx scripts for both install_digilent.sh  and install_drivers scripts.

Do you think this will work for Vivado 2018.3 on Ubuntu 18.04?

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now