Instale o xilinx platform usb no Ubuntu 16.04 x64

0

Eu instalei o ise14.7 corretamente e tente executar este guia para instalar o cabo da plataforma. Todo o passo estava correto. minha saída do comando ls usb é assim

$ 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

Você pode ver que meu SO sabe que um dispositivo usb xilinx está conectado e usbdev funciona corretamente. mas meu cabo não funciona. Então vejo a saída no impacto que diz:

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

depois que eu tento instalar o driver usando o documento de ajuda xilinx neste link.

Eu digito este comando no terminal

sudo ./install_drivers

e tenha algum erro:

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

Eu sinto que há um problema com a versão do meu kernel baseada nesta linha

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. O que devo fazer para instalar o driver corretamente?

  2. Existe alguma maneira alternativa de instalar este driver?

por Mohammad Farahani 17.10.2016 / 12:05

3 respostas

1

Eu resolvi esse problema com essa configuração de ambiente.

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

o buraco está aqui:

XIL_IMPACT_USE_LIBUSB=1
export XIL_IMPACT_USE_LIBUSB

você também deve instalar seu driver dongle antes.

    
por Mohammad Farahani 22.04.2017 / 16:57
1

Correção de compilação imediata (não é uma solução)

Para o seu problema de compilação específico, o instalador está tentando construir um driver. Para fazer isso, ele precisa do código-fonte do kernel para o seu kernel atualmente em execução. O comando para obtê-lo é:

sudo apt-get install linux-source

Isso resolverá o problema imediato de compilação, mas o WinDriver ainda não será compilado adequadamente. De acordo com a documentação de lançamento , a versão 14.7 do ISE é declarado compatível apenas com o RHEL Workstation 5 & amp; 6 (32 e 64 bits) e SUSE Enterprise 11 (32 e 64 bits) entre todas as distribuições Linux. Age-wise que está em torno do nível do Ubuntu 9.04. O kernel mudou muito significativamente desde então, indo da versão 2.6.32 do kernel no RHEL 6.9 para a versão 4.4.0 do kernel no Ubuntu 16.04.1. O WinDriver não foi mantido pelo Xilinx, então ele não irá construir / trabalhar com a nova versão do kernel.

Solução Alternativa Potencial

A única semi-solução que consegui encontrar na tentativa de resolver o mesmo problema é se você estiver usando um dispositivo DLC9 ou JTAG anterior. Nesse caso, você pode encontrar instruções para construir e usar um driver de espaço do usuário no lugar do WinDriver com o instruções encontradas aqui sob o título" Usando Xilinx USB JTAG programadores sob o Linux (Instalando os drivers dos cabos) ". Certifique-se de ler o README do projeto git para o qual ele aponta porque se o seu dispositivo JTAG não é um daqueles suportados, ou se você não tiver algumas instruções (como configurar LD_PRELOAD), o driver construído a partir do projeto git não trabalhe para o seu dispositivo JTAG.

Uma versão condensada de as instruções vinculadas com algumas as informações enterradas explicitamente especificadas:
Crie o driver

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

Desanexe e reconecte o dispositivo JTAG.
Execute as ferramentas (necessárias em todas as execuções)

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

EDITAR:

Solução de trabalho

A única solução de trabalho conhecida que encontrei é também instalar uma versão mais recente do Xilinx LabTools e instalar manualmente os drivers de cabo a partir dele. Dependendo do dispositivo com o qual você vai trabalhar, você precisa escolher uma versão do LabTools que seja pelo menos 2014.4, mas não tão nova que não ofereça mais suporte ao seu tipo de chip (que eu presumo que seja o motivo pelo qual você está usando 14.7). Você ainda precisará da fonte do kernel, como minha solução original apontou. Depois de instalar o LabTools (sem tentar instalar drivers), execute o seguinte:

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

Desconecte e reconecte seu dispositivo JTAG e execute o impacto com o seguinte comando em um terminal descartável de um diretório em que você deseja que o projeto seja eliminado:

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

A ferramenta de impacto não é fornecida por 2014.4, por isso acabará executando a versão 14.7, mas todas as bibliotecas fornecidas pela versão 2014.4 serão usadas em seu lugar, se existirem.

    
por mtalexan 22.06.2017 / 02:34
-1

Os arquivos antigos não funcionarão com a versão atual do kernel. Eu também enfrentei o mesmo problema. Solução é instalar arquivos de driver de cabo dados com a ferramenta vivado. Tente baixar esses arquivos do site da Xilinx. Funcionou para mim.

    
por Suseela Budi 29.11.2016 / 12:09