web-dev-qa-db-fra.com

Installer la plate-forme USB xilinx dans Ubuntu 16.04 x64

J'installe ise14.7 correctement, puis essayez de suivre ce guide pour installer le câble de plate-forme. toutes les étapes étaient correctes. ma sortie de commande USB ls est comme ça

$ 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

Vous pouvez voir que mon système d'exploitation sait qu'un périphérique USB xilinx est connecté et que usbdev fonctionne correctement. mais mon câble ne fonctionne pas. Ensuite, je vois une sortie d'impact qui dit:

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.
...

après cela, j'essaie d'installer le pilote à l'aide du document d'aide xilinx via ce lien.

Je tape cette commande en terminal

Sudo ./install_drivers

et obtenir une erreur:

--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

Je pense qu'il y a un problème avec la version de mon noyau basée sur cette ligne

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. Que dois-je faire pour installer le pilote correctement?

  2. Existe-t-il d'autres moyens d'installer ce pilote?

1
Mohammad Farahani

J'ai résolu ce problème par ce paramètre d'environnement.

#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/

le gole est ici:

XIL_IMPACT_USE_LIBUSB=1
export XIL_IMPACT_USE_LIBUSB

vous devez également installer votre pilote de dongle avant.

1
Mohammad Farahani

Les réponses ci-dessus ne fonctionnaient pas pour moi. Ce qui suit est le plus simple et est basé sur ce que les gars d'Arch Linux ont fait ( https://wiki.archlinux.org/index.php/Xilinx_ISE_WebPACK#Xilinx_Platform_Cable_USB-JTAG_Drivers )

$ 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

Débranchez et rebranchez - et vous devriez voir un feu rouge.

Vous devrez peut-être définir la variable env suivante après avoir recherché un fichier de paramètres.

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

Correctif de construction immédiat (pas une solution)

Pour votre problème de construction spécifique, le programme d'installation tente de générer un pilote. Pour ce faire, il doit utiliser la source du noyau sur laquelle votre noyau en cours d'exécution est construit. La commande pour l'obtenir est:

Sudo apt-get install linux-source

Cela résoudra le problème de génération immédiate, mais WinDriver ne construira toujours pas correctement. Selon la documentation de version , la version ISE 14.7 est déclarée compatible uniquement avec RHEL Workstation 5 et 6 (32 et 64 bits) et SUSE Enterprise 11 (32 et 64 bits) parmi toutes les distributions Linux. En ce qui concerne l'âge, cela équivaut au niveau d'Ubuntu 9.04. Le noyau a beaucoup changé depuis lors, passant de la version 2.6.32 du noyau dans RHEL 6.9 à la version 4.4.0 du noyau dans Ubuntu 16.04.1. WinDriver n’a pas été mis à jour par Xilinx, il ne fonctionnera donc pas avec la nouvelle version du noyau.

Contournement potentiel

La seule solution semi-efficace que j'ai pu trouver en essayant de résoudre ce même problème est d'utiliser un périphérique DLC9 ou JTAG antérieur. Dans ce cas, vous pouvez trouver des instructions pour créer et utiliser un pilote d’espace utilisateur à la place de WinDriver avec le instructions trouvées ici sous la rubrique "Utilisation des programmeurs JTAG Xilinx USB sous Linux (Installation de pilotes de câble)". . Assurez-vous de lire le README du projet git auquel il vous renvoie, car si votre périphérique JTAG n'est pas pris en charge, ou si vous manquez certaines des instructions (comme la définition de LD_PRELOAD), le pilote créé à partir de le projet git ne fonctionnera pas pour votre appareil JTAG.


Une version condensée de les instructions liées avec certaines des informations enfouies explicitement spécifiées:
Créer le pilote

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

Détachez et reconnectez le périphérique JTAG.
Exécuter les outils (nécessaires à chaque exécution)

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

EDIT:

Solution de travail

La seule solution de travail connue que j'ai trouvée consiste également à installer une version plus récente de Xilinx LabTools et à installer manuellement les pilotes de câble correspondants. Selon le périphérique sur lequel vous allez travailler, vous devez choisir une version de LabTools d’au moins 2014.4, mais pas si nouvelle qu’elle ne prend plus en charge votre type de puce (ce qui, je suppose, est la raison pour laquelle vous utilisez 14.7). Vous aurez également besoin du code source du noyau, comme l’a souligné ma solution originale. Après avoir installé LabTools (sans essayer d'installer des pilotes), exécutez ce qui suit:

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

Déconnectez et reconnectez votre périphérique JTAG et exécutez impact à l'aide de la commande suivante dans un terminal jetable à partir d'un répertoire dans lequel vous souhaitez supprimer le projet:

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

L'outil d'impact n'étant pas fourni en 2014.4, il exécutera donc la version 14.7, mais toutes les bibliothèques fournies par la version 2014.4 seront utilisées si elles existent.

1
mtalexan