For this installation we will not use the provided setup_usb script from Xilinx, because it makes the installation of the scripts in /etc/hotplug which were substituted by udev.
To start let us install the following packages
apt-get install fxload libusb-0.1-4 libusb-dev
After this take a look at the rules file provided by xilinx
cat /opt/Xilinx/14.7/ISE_DS/common/bin/lin64/xusbdfwu.rules # version 0003 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"
As for the rules for rules file creation, i created a copy of the which consisted, on removing BUS=="usb , replacing SYSFS by ATTRS and $TEMPNODE by $tempnode. To do this let's use sed:
sed /opt/Xilinx/14.7/ISE_DS/common/bin/lin64/xusbdfwu.rules -e 's:BUS=="usb", ::g' -e 's:SYSFS:ATTRS:g' -e 's:TEMPNODE:tempnode:g' > /etc/udev/rules.d/xusbdfwu.rules
Now let's copy the usb firmware to the expected location (/usr/share), so udev can load the appropriate firmware to the device.
cp /opt/Xilinx/14.7/ISE_DS/common/bin/lin64/xusb*.hex /usr/share/
Let's restart udev.
/etc/init.d/udev restart
Now connect your device to the computer. If everything went okay the device enumeration should go this way:
kernel: [36003.892056] usb 2-1: new high-speed USB device number 4 using ehci_hcd kernel: [36004.024493] usb 2-1: New USB device found, idVendor=03fd, idProduct=000d kernel: [36004.024499] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 kernel: [36004.084649] usb 2-1: USB disconnect, device number 4 kernel: [36006.272080] usb 4-1: new full-speed USB device number 3 using uhci_hcd kernel: [36006.411949] usb 4-1: not running at top speed; connect to a high speed hub kernel: [36006.433946] usb 4-1: New USB device found, idVendor=03fd, idProduct=0008 kernel: [36006.433952] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 kernel: [36006.433956] usb 4-1: Product: XILINX kernel: [36006.433959] usb 4-1: Manufacturer: XILINX kernel: [36009.256112] usb 4-1: USB disconnect, device number 3 kernel: [36010.812067] usb 2-1: new high-speed USB device number 6 using ehci_hcd kernel: [36010.944863] usb 2-1: New USB device found, idVendor=03fd, idProduct=0008 kernel: [36010.944869] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 kernel: [36010.944874] usb 2-1: Product: XILINX kernel: [36010.944877] usb 2-1: Manufacturer: XILINX
What happens is that after the device is enumerated the udev loads the firmware into it through fxload, after that it gets enumerated and then it restarts it.So just after the second disconnect (third enumeration) the device is ready to used.
You will also need to create a link for the shared library, because impact will search for libusb in /usr/lib64/ and the libusb is installed on /usr/lib/x86_64-linux-gnu/
cd /usr/lib64/ ln -s ../lib/x86_64-linux-gnu/libusb-0.1.so.4 libusb.so
i also corrected the package names.
Sem comentários:
Enviar um comentário