在Ubuntu 16.04 x64中安装xilinx平台usb

在Ubuntu 16.04 x64中安装xilinx平台usb

我正确安装了 ise14.7,然后尝试按照本指南安装平台电缆。所有步骤均正确。我的 ls usb 命令输出如下

$ lsusb
Bus 002 Device 022: ID 03fd:0008 Xilinx, Inc. Platform Cable USB II
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 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

您可以看到我的操作系统知道已连接 xilinx usb 设备,并且 usbdev 正常工作。但我的电缆不工作。然后我在 impact 中看到输出内容为:

Active mode is BS
Project: '/home/faryad_mfa/Desktop/Projects/GE_TS_XILINX/GE_TS_XILINX.ipf' loaded.
GUI --- Auto connect to cable...
INFO:iMPACT - Digilent Plugin: Plugin Version: 2.4.4
INFO:iMPACT - Digilent Plugin: no JTAG device was found.
AutoDetecting cable. Please wait.
*** WARNING ***: When port is set to auto detect mode, cable speed is set to default 6 MHz regardless of explicit arguments supplied for setting the baud rates
PROGRESS_START - Starting Operation.
If you are using the Platform Cable USB, please refer to the USB Cable Installation Guide (UG344) to install the libusb package.
Connecting to cable (Usb Port - USB21).
Checking cable driver.
 Linux release = 4.4.0-42-generic.
WARNING:iMPACT -  Module windrvr6 is not loaded. Please reinstall the cable drivers. See Answer Record 22648.
Cable connection failed.
Connecting to cable (Parallel Port - parport0).
 Linux release = 4.4.0-42-generic.
...

之后,我尝试使用此链接中的 xilinx 帮助文档安装驱动程序。

我在终端中输入此命令

sudo ./install_drivers

并得到一些错误:

--Driver versions in this package: windrvr=900, xpc4drvr=1041
--Script name = ./install_drivers
--HostName = mehrkavir-Lab2
--Current working dir = /opt/Xilinx/install_drivers
--Script location = /opt/Xilinx/install_drivers
--Kernel version = 4.4.0-42-generic.
--Arch = x86_64.
--Installer version = 1053
--Unsetting ARCH environment variable.
--User has root permission.
--File /lib/modules/misc/install_windrvr6 does not exist.
--Installing USB drivers------------------------------------------
--File /etc/hotplug/usb/xusbdfwu.fw/xusbdfwu.hex exists.
./setup_pcusb: 94: ./setup_pcusb: Bad substitution
--File /sbin/fxload exists.
--Installing windrvr6---------------------------------------------
--Checking version.
--File /lib/modules/4.4.0-42-generic/kernel/drivers/misc/windrvr6.ko does not exist.
--File LINUX.4.4.0-42-generic.x86_64/windrvr6.ko does not exist.
--Setting source version to 900.
--File LINUX.4.4.0-42-generic.x86_64/windrvr6.ko is newer than the destination file.
checking for cpu architecture... x86_64
checking for WinDriver root directory... /opt/Xilinx/install_drivers/linux_drivers/windriver64
checking for linux kernel source... found at /lib/modules/4.4.0-42-generic/build
checking for lib directory... ln -sf $(ROOT_DIR)/lib/$(SHARED_OBJECT)_32.so /usr/lib/$(SHARED_OBJECT).so; ln -sf $(ROOT_DIR)/lib/$(SHARED_OBJECT).so /usr/lib64/$(SHARED_OBJECT).so
checking which directories to include... -I/lib/modules/4.4.0-42-generic/build/include
checking linux kernel version... hello.c:1:30: fatal error: linux/utsrelease.h: No such file or directory
compilation terminated.
not found
configure: error: can't find kernel version
make: *** No rule to make target 'clean'.  Stop.
make: *** No targets specified and no makefile found.  Stop.
make: *** No rule to make target 'install'.  Stop.
--make windrvr install rc= 2
--install_windrvr6 rc = 2
--Module windrvr6 is not running.
--Module xpc4drvr is not running.
--Note: By default, the file permission of /dev/windrvr6 is enabled for the root user only
  and must be changed to allow access to other users.

--Return code = 2

根据这一行,我觉得我的内核版本有问题

checking which directories to include... -I/lib/modules/4.4.0-42-generic/build/include
checking linux kernel version... hello.c:1:30: fatal error: linux/utsrelease.h: No such file or directory
  1. 我应该怎么做才能正确安装驱动程序?

  2. 还有其他方法可以安装此驱动程序吗?

答案1

上述答案对我不起作用,以下是最简单的,并且基于 arch linux 的人所做的事情(https://wiki.archlinux.org/index.php/Xilinx_ISE_WebPACK#Xilinx_Platform_Cable_USB-JTAG_Drivers

编辑:我不断回到我自己的指示 - 我想补充一点,这也适用于 Vivado - 与 Vivado 一起安装 14.7 并按正常方式执行以下操作。 它将适用于两者。

$ cd /opt/Xilinx/
$ sudo git clone git://git.zerfleddert.de/usb-driver
$ cd usb-driver/
$ apt install fxload libusb-dev
$ sudo make
$ ./setup_pcusb /opt/Xilinx/14.7/ISE_DS/ISE
$ sudo udevadm control --reload-rules

拔下插头并重新插入 - 您应该会看到红灯。

在获取设置文件后,您可能需要设置以下环境变量。

$ export LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so
$ impact

答案2

立即构建修复(不是解决方案)

对于您的特定构建问题,安装程序正在尝试构建驱动程序。为此,它需要您当前正在运行的内核的内核源代码来进行构建。获取它的命令是:

sudo apt-get install linux-source

这将解决即时构建问题,但 WinDriver 仍然无法正确构建。根据 发布文档,ISE 14.7 版本在所有 Linux 发行版中仅与 RHEL Workstation 5 和 6(32 位和 64 位)以及 SUSE Enterprise 11(32 位和 64 位)兼容。从年代上看,它与 Ubuntu 9.04 差不多。从那时起,内核发生了很大变化,从 RHEL 6.9 中的内核版本 2.6.32 变为 Ubuntu 16.04.1 中的内核版本 4.4.0。WinDriver 尚未由 Xilinx 维护,因此它无法与较新的内核版本一起构建/运行。

潜在的解决方法

在尝试解决此问题时,我找到的唯一半解决方法是使用 DLC9 或更早版本的 JTAG 设备。在这种情况下,您可以找到使用用户空间驱动程序代替 WinDriver 的说明,其中在此处找到说明在“在 Linux 下使用 Xilinx USB JTAG 编程器(安装电缆驱动程序)”标题下。请务必阅读它指向的 git 项目中的 README,因为如果您的 JTAG 设备不是受支持的设备之一,或者您缺少某些说明(例如设置 LD_PRELOAD),则从 git 项目构建的驱动程序将不适用于您的 JTAG 设备。


精简版链接的说明明确指定一些隐藏的信息:
创建驱动程序

sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev-i386 fxload libusb-dev
cd /opt/Xilinx     #or some directory to build the driver in
sudo git clone git://git.zerfleddert.de/usb-driver
cd usb-driver
sudo make
sudo cp -a /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusb*.hex /usr/share/
sed -e 's/[$]TEMPNODE/%N/' -e 's/SYSFS/ATTRS/g' -e 's/BUS="usb",/SUBSYSTEM="usb", ENV{DEVTYPE}=="usb_device",/' -e 's/MODE=/MODE:=/' /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusbdfwu.rules >xusbdfwu-new.rules
sudo cp xusbdfwu-new.rules /etc/udev/rules.d/
sudo udevadm control --reload

断开并重新连接 JTAG 设备。
运行工具(每次运行时都需要)

source /opt/Xilinx/14.7/ISE_DS/settings64.sh
export PATH=/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64:$PATH
export LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so
impact

编辑:

工作解决方案

我发现的唯一已知可行解决方案是安装较新版本的 Xilinx LabTools 并从中手动安装电缆驱动程序。根据您要使用的设备,您需要选择一个至少为 2014.4 的 LabTools 版本,但不要太新以至于不再支持您的芯片类型(我猜这就是您使用 14.7 的原因)。您仍然需要内核源代码,就像我最初的解决方案指出的那样。安装 LabTools(不尝试安装驱动程序)后,运行以下命令:

cd /opt/Xilinx/SDK/2014.4/data/xicom/cable_drivers/lin64/install_script/install_drivers
sudo ./install_drivers
sudo ./setup_pcusb
sudo su -
cd /etc/udev/rules.d
sed -i -e 's/MODE=/MODE:=/g' 52-xilinx*.rules
exit
sudo udevadm control --reload

断开并重新连接您的 JTAG 设备,然后在您想要放置项目的目录中的一次性终端中使用以下命令运行 impact:

source /opt/Xilinx/14.7/ISE_DS/settings64.sh
source /opt/Xilinx/SDK/2014.4/settings64.sh
impact

2014.4 未提供影响工具,因此最终将执行 14.7 版本,但如果存在,则将使用 2014.4 版本提供的所有库。

答案3

我通过这个环境设置解决了这个问题。

#Xilinx ISE path *****************
LM32_TOOLS=/opt/gcc-lm32/bin
XILINX=/opt/Xilinx/14.7/ISE_DS
export XILINX
HOST_PLATFORM=lin64
export HOST_PLATFORM
XILINX_BIN=${XILINX}/ISE/bin/${HOST_PLATFORM}
export XILINX_BIN
PATH=${PATH}:${XILINX_BIN}:${LM32_TOOLS}
XILINX_EDK=${XILINX}/ISE/EDK/bin/lin64
export XILINX_EDK
XILINX_CSE_TCL=${XILINX}/ISE/cse/tcl
#XILINX_CSE_TCL=/usr/lib/tclx8.4/
export XILINX_CSE_TCL
XIL_IMPACT_USE_LIBUSB=1
export XIL_IMPACT_USE_LIBUSB
XIL_IMPACT_USE_WINDRIVER=1
export XIL_IMPACT_USE_WINDRIVER
#export XILINX_USB_DEV= "001:005"
#export LD_PRELOAD="/usr/share/libusb.so"
#export LD_PRELOAD="/opt/Xilinx/usb-driver/libusb-driver.so";
export XKEYSYMDB=/usr/share/X11/XKeysymDB
export DISPLAY=:0
echo "XILINX ISE enviroment seted"
echo ""

PATH=$PATH:/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/:/opt/Xilinx/14.7/ISE_DS/EDK/bin/lin64/

目标在这里:

XIL_IMPACT_USE_LIBUSB=1
export XIL_IMPACT_USE_LIBUSB

您还应该先安装加密狗驱动程序。

答案4

旧文件无法与当前内核版本兼容。我也遇到了同样的问题。解决方案是安装 vivado 工具提供的电缆驱动程序文件。尝试从 Xilinx 网站下载这些文件。对我来说很管用。

相关内容