05-15-2015 04:35 PM
Trying to program avnet spartan6 lx9 microboard from a recent installation of debian 8 (jessie). ise/impact v14.7
Using the type-A usb connector on the board, and have tried several USB ports on my PC. lsusb shows the following:
Bus 001 Device 008: ID 1443:0007 Digilent Development board JTAG
and when I connect it, dmesg shows:
[ 2414.405203] usb 1-1.4: new full-speed USB device number 8 using ehci-pci
[ 2414.500631] usb 1-1.4: New USB device found, idVendor=1443, idProduct=0007
[ 2414.500639] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2414.500644] usb 1-1.4: Product: Digilent Adept USB Device
[ 2414.500647] usb 1-1.4: Manufacturer: Digilent
error message in impact:
WARNING:iMPACT:923 - Can not find cable, check cable setup !
impact also shows lots of errors regarding unable to find windrvr6 but not sure if that's relevant to my config.
My other computer is also running debian and impact is working fine. the output from lsusb/dmesg is the same. kernel on the machine that's working is slightly older, 3.16-3-amd64 vs 3.16.0-4-amd64.
Do I need to install digilent plugin? Not sure what to try next.
05-19-2015 10:10 PM
05-15-2015 10:36 PM - edited 05-15-2015 10:36 PM
05-15-2015 10:48 PM
Just to confirm, this driver is necessary even if I am using a $2 USB male-to-female A-type and not a Xilinx programmer? I did try downloading the libCseDigilent.so file and installing it in my Xilinx folder but there was already a file there with the same name. I did not try replacing it. Are FTDI drivers required even if I am not using an FTDI chip?
Thanks for replying. I will try the installation script for the digilent driver you provided.
05-18-2015 05:13 PM
Some of the information in that AR is now old, depending on which Linux build you are using. Which distro are you using?
should show your device.
Depending on which distro you have, you may need to make the USB devices world writable. From lsusb you can see that my connection is on USB bus 5:
$ lsusb Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 002: ID 04b3:4010 IBM Corp. Bus 005 Device 002: ID 03fd:0008 Xilinx, Inc. Platform Cable USB II
$ ls -l /dev/bus/usb/005 total 0 crw-rw---- 1 root root 189, 512 May 14 13:11 001 crw-rw---- 1 root root 189, 515 May 14 13:11 002
$ sudo chmod 666 /dev/bus/usb/005/*
$ ls -l /dev/bus/usb/005
crw-rw-rw- 1 root root 189, 512 May 14 13:11 001
crw-rw-rw- 1 root root 189, 515 May 14 13:11 002
05-18-2015 07:14 PM
Thanks for the response. I am using debian 8. This is what I see in lsusb. My usb device is world writable.
Bus 002 Device 003: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 1443:0007 Digilent Development board JTAG
Bus 001 Device 004: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
Bus 001 Device 003: ID 0461:0010 Primax Electronics, Ltd HP Keyboard
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
alex@celery:~$ ls -l /dev/bus/usb/001/005
crw-rw-rw- 1 root root 189, 4 May 18 19:12 /dev/bus/usb/001/005
05-19-2015 09:31 AM
Cool @blocky. So Linux is going to pass through the connection to software that wants to talk to it. Now you need to show the software the device it is looking for. Start the hw_server and vcse_server. This can be done automatically for you by ISE or Vivado, or I run them from the command line:
HW_SERVER_ALLOW_PL_ACCESS=1 hw_server -L- -l0xFC00 &
The -L- and -l0xFC00 gives me some debugging output.
Now you should be able to see that the hw_server is now connected to your USB device. Find the process id of your hw_server and run:
$ sudo lsof -p 11592
hw_server 11592 username 19u CHR 189,1 0t0 6185 /dev/bus/usb/001/002
hw_server 11592 username 20u CHR 189,2 0t0 6372 /dev/bus/usb/001/003
This computer has two USB JTAG cables connected. If you do not see any /dev/bus/usb devices in the lsof listing, the hw_server is not finding what it recognizes as a USB JTAG cable. Write back with your results and we will take the next step.
After exiting the vcse_server by entering 'exit' in the command line, I run 'killall hw_server'
05-19-2015 11:48 AM
@dwisehart Thanks for your assistance.
By the way I'm using ISE and not Vivado (spartan 6 device). I started cse_server, did not have vcse_server. Here is the output of lsof. I don't see any usb devices being accessed
alex@celery:~$ sudo lsof -p $(pgrep hw_server)
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hw_server 1312 alex cwd DIR 8,6 4096 2752535 /home/alex/.opt/Xilinx/14.7/ISE_DS
hw_server 1312 alex rtd DIR 8,1 4096 2 /
hw_server 1312 alex txt REG 8,6 1296752 2895625 /home/alex/.opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/unwrapped/hw_server
hw_server 1312 alex mem REG 8,1 47712 261175 /lib/x86_64-linux-gnu/libnss_files-2.19.so
hw_server 1312 alex mem REG 8,1 43592 261185 /lib/x86_64-linux-gnu/libnss_nis-2.19.so
hw_server 1312 alex mem REG 8,1 89104 261169 /lib/x86_64-linux-gnu/libnsl-2.19.so
hw_server 1312 alex mem REG 8,1 31632 261171 /lib/x86_64-linux-gnu/libnss_compat-2.19.so
hw_server 1312 alex mem REG 8,1 1729984 261093 /lib/x86_64-linux-gnu/libc-2.19.so
hw_server 1312 alex mem REG 8,1 137440 261218 /lib/x86_64-linux-gnu/libpthread-2.19.so
hw_server 1312 alex mem REG 8,1 31784 261224 /lib/x86_64-linux-gnu/librt-2.19.so
hw_server 1312 alex mem REG 8,6 94776 2896079 /home/alex/.opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/libxftdi.so
hw_server 1312 alex mem REG 8,6 57064 2896088 /home/alex/.opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/libusb-1.0.so.0
hw_server 1312 alex mem REG 8,1 140928 261069 /lib/x86_64-linux-gnu/ld-2.19.so
hw_server 1312 alex mem REG 8,1 1607712 32818 /usr/lib/locale/locale-archive
hw_server 1312 alex 0u CHR 136,3 0t0 6 /dev/pts/3
hw_server 1312 alex 1u CHR 136,3 0t0 6 /dev/pts/3
hw_server 1312 alex 2u CHR 136,3 0t0 6 /dev/pts/3
hw_server 1312 alex 3u IPv4 4403980 0t0 TCP localhost:3121 (LISTEN)
hw_server 1312 alex 5u IPv4 4403981 0t0 UDP *:1534
05-19-2015 12:59 PM
OK, so you can see that libusb is linked, so hw_server is probably trying to connect to the USB device, but it doesn't find what it expects. If you start Wireshark and collect packets on the usbmon channel that matches the usb device for your JTAG cable, you will see what communicating is going on.
For a computer that has JTAG cables installed I see Wireshark go get the device descriptors and then as soon as I start hw_server, lots of URB_CONTROL in and out.
On a computer that does not have a JTAG cable currently, I see Wireshark go get the device descriptors and then when hw_server starts I see continual GET DESCRIPTOR requests, as if the hw_server is not finding what it expects but is looking on the USB bus anywise.
Do you see something similar? That would say the hw_server is nominally working and the cable USB device is responding to descriptor requests.
At this point the best I can think of is to try re-installing the Digilent driver. For Vivado it is here:
with the heavy lifting being done here:
Perhaps ISE has something similar. You have to run the install_drivers as root and I think you have to source the settings64.sh file first.
It sounds to me like the proper hex file didn't get loaded into the Digilent cable, but that is just a guess from the fact that everything seems to be working but the hw_server is not seeing what it expects.
Sorry I couldn't do more,
05-19-2015 01:24 PM
05-19-2015 01:33 PM
05-19-2015 10:10 PM