cd /u1/Xilinx git clone git://git.zerfleddert.de/usb-driver cd usb-driver makeI get a few warnings and take a look at them. They are bogus stupid rubbish the compiler should just ignore and accept.
The driver gets used as follows. This line should go into the "ise" script before launching ise. If you have a separate script to launch "impact", it should go there too before launching impact.
export LD_PRELOAD=/u1/Xilinx/usb-driver/libusb-driver.so
su ./setup_pcusb /u1/Xilinx/14.7/ISE_DS/ISE/This yields:
Looking for USB cable files: /u1/Xilinx/14.7/ISE_DS/ISE//bin/lin64 Copying firmware to /usr/share: '/u1/Xilinx/14.7/ISE_DS/ISE//bin/lin64/xusbdfwu.hex' -> '/usr/share/xusbdfwu.hex' '/u1/Xilinx/14.7/ISE_DS/ISE//bin/lin64/xusb_emb.hex' -> '/usr/share/xusb_emb.hex' '/u1/Xilinx/14.7/ISE_DS/ISE//bin/lin64/xusb_xlp.hex' -> '/usr/share/xusb_xlp.hex' '/u1/Xilinx/14.7/ISE_DS/ISE//bin/lin64/xusb_xp2.hex' -> '/usr/share/xusb_xp2.hex' '/u1/Xilinx/14.7/ISE_DS/ISE//bin/lin64/xusb_xpr.hex' -> '/usr/share/xusb_xpr.hex' '/u1/Xilinx/14.7/ISE_DS/ISE//bin/lin64/xusb_xse.hex' -> '/usr/share/xusb_xse.hex' '/u1/Xilinx/14.7/ISE_DS/ISE//bin/lin64/xusb_xup.hex' -> '/usr/share/xusb_xup.hex' Installing udev rules: doneI might have put the hex files into /usr/local/share, but what the heck. The udev rules are the file /etc/udev/rules.d/xusbdfwu.rules which is:
# version 0003 ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0008", MODE="666" SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $tempnode" SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $tempnode" SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $tempnode" SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $tempnode" SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $tempnode" SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $tempnode"This attemps "/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D /dev/bus/usb/001/018", which now fails since I have no file /sbin/fxload on my system. I can fix that, but before I do I get rid of these new udev rules and replug my board just for the record and get:
May 12 16:15:50 trona kernel: usb 1-1.2: New USB device found, idVendor=03fd, idProduct=000d, bcdDevice= 0.00 May 12 16:15:50 trona kernel: usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0Now I do "su; dnf install fxload", replace the udev script, and I get:
May 12 16:18:37 trona kernel: usb 1-1.2: USB disconnect, device number 25 May 12 16:18:39 trona kernel: usb 1-1.2: new high-speed USB device number 26 using ehci-pci May 12 16:18:39 trona kernel: usb 1-1.2: New USB device found, idVendor=03fd, idProduct=000d, bcdDevice= 0.00 May 12 16:18:39 trona kernel: usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 .... May 12 16:18:39 trona systemd-udevd[118647]: 1-1.2:1.0: Process '/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D ' failed with exit code 255. May 12 16:18:39 trona kernel: usb 1-1.2: USB disconnect, device number 26 May 12 16:18:41 trona kernel: usb 1-1.2: new full-speed USB device number 27 using ehci-pci May 12 16:18:41 trona kernel: usb 1-1.2: not running at top speed; connect to a high speed hub May 12 16:18:41 trona kernel: usb 1-1.2: New USB device found, idVendor=03fd, idProduct=0008, bcdDevice= 0.00 May 12 16:18:41 trona kernel: usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 May 12 16:18:41 trona kernel: usb 1-1.2: Product: XILINX May 12 16:18:41 trona kernel: usb 1-1.2: Manufacturer: XILINX May 12 16:18:44 trona kernel: usb 1-1.2: USB disconnect, device number 27 May 12 16:18:46 trona kernel: usb 1-1.2: new high-speed USB device number 28 using ehci-pci May 12 16:18:46 trona kernel: usb 1-1.2: New USB device found, idVendor=03fd, idProduct=0008, bcdDevice= 0.00 May 12 16:18:46 trona kernel: usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 May 12 16:18:46 trona kernel: usb 1-1.2: Product: XILINX May 12 16:18:46 trona kernel: usb 1-1.2: Manufacturer: XILINXNotably, a green LED next to the USB port lights up a few seconds after the board is powered on (when the firmware download finishes).
So, everything now seems to work fine! But it would rather be on a higher speed port. Full speed is 480 mbit/sec, whereas high speed is 12 mbit/second. Both are USB 2.0 -- The ports on my machine certainly ought to be full speed 2.0. I try a different cable and get the same result. And even using a USB 3.0 port on my machine. Well, this is the least of my problems, so never mind for now (or maybe forever?)
Note that nothing is permanently flashed by fxload -- it just loads fimware for this plug of the device. And note that the product number changes from 000d to 0008, which is what xc3sprog software expects.
I download the runtime, both as RPM and tar -- version 2.26.1
I download the utilities, both as RPM and tar -- version 2.7.1
I put all this stuff into /u1/Xilinx/Adept
The utilities RPM installs just fine using "dnf install", but the runtime indicates an error with a post install script, which is not entirely surprising. The utilities are dependent on the runtime, so when I remote the utilities, the runtime goes also.
See below. The reason the runtime "failed" is because I am not running firewalld, and as near as I can tell the RPM installed fine, but was unable to open the port for mdns. So probably I could have just used the RPM files and ignored the error, but how was I to know?
So, I untar the runtime and then "su ; ./install.sh"
It puts libraries into /usr/lib64/digilent/adept
It puts system binaries into /usr/sbin
It puts data files into /usr/share/digilent/adept/data
It puts configuration stuff in /etc
The only executable it puts in sbin is "dftdrvdtch".
Into /etc it places:
/etc/digilent-adept.conf /etc/udev/rules.d/52-digilent-usb.rules /etc/ld.so.conf.d/digilent-adept-libraries.conf
The error it gets is because FirewallD is not running, and it may not be able to run something called the "mdns" service. What it tries to do is:
firewall-cmd --permanent --add-service=mdns firewall-cmd --reload
Now the utilities tarball. I untar it and run "su; ./install.sh"
It puts binaries into /usr/local/bin
Installing binaries..... installed dadutil: "/usr/local/bin/dadutil" installed djtgcfg: "/usr/local/bin/djtgcfg" installed dsumecfg: "/usr/local/bin/dsumecfg" Successfully installed binaries in "/usr/local/bin" Installing bitstreams..... installed bitstreams for dsumecfg: "/usr/share/digilent/dsumecfg/bitstreams" Successfully installed bitstreams in "/usr/share/digilent" Installing manuals..... installed dadutil.1: "/usr/local/share/man/man1/dadutil.1" installed djtgcfg.1: "/usr/local/share/man/man1/djtgcfg.1" installed dsumecfg.1: "/usr/local/share/man/man1/dsumecfg.1" Successfully installed manuals in "/usr/local/share/man" Successfully installed Adept Utilities
To program the FPGA (from Windows or Linux) you can use: - iMpact from Xilinx ISE Design Suite which contains and installs Adept Runtime automatically. - djtgcfg from Adept Utilities Enumerate the attached devices using: dadutil enum djtgcfg enum Initialize the scan chain: djtgcfg -d Nexys3 init Program the FPGA: djtgcfg -d Nexys3 -i 0 prog -f myproject.bitSadly, after all this, I type:
su djtgcfg enum No devices found dadutil enum No devices foundMy Spartan 3E starter is sitting here happy with the green light lit next to the USB cable.
xc3s500e xcf04s xc2c64a
Tom's Computer Info / [email protected]