Como instalar o ISE 10.1 no Linux (Ubuntu 8.04)

Ano passado postei um tutorial de como instalar e resolver os problemas de utilização da ferramenta iMPACT, que faz parte do ISE Desing Suite da Xilinx, utilizada para programar FPGAs via cabo JTAG. Na ocasião estava usando a versão 9.1i do ISE no Ubuntu 7.10). Recentemente precisei instalar a versão 10.1 do ISE em um Ubuntu 8.04 e percebi que meu tutorial postado anteriormente não cobria mais todos os probleminhas de instalação. Como o outro tutorial foi útil para algumas pessoas, resolvi reescreve-lo adicionado essas novas informações.

Instalação

Colocar o DVD de instalação do ISE e instalar normalmente:

mount /media/cdrom
cd /media/cdrom/ise
./setup

No meu exemplo, escolhi instalar o ISE no diretório que ele sugeriu: /opt/Xilinx/10.1

Os “Cable Drivers” da instalação padrão não funcionam na maioria das distribuições Linux (são específicos para RHEL). Por isso, é necessário instalar um usb-driver alternativo que pode ser obtido em:

A instalação do driver resume-se a:

apt-get install libusb-dev
tar xzf usb-driver-HEAD.tar.gz -C /opt/Xilinx/10.1
cd /opt/Xilinx/10.1/usb-driver
make
ls libusb-driver.so

Teste do Cabo JTAG

1. Testar o dispositivo com o comando lsusb:

lsusb | grep "Xilinx"
Bus 006 Device 017: ID 03fd:0008 Xilinx, Inc.

O campo ID deve conter 03fd:0008. Caso seja diferente desse valor, é sinal que o firmware inicial do dispositivo não foi carregado corretamente (após o carregamento do firmware, o ID do produto é trocado para 0008). Caso o ID esteja correto, pule para o passo 5.

2. Copiar as regras de carregamento e os arquivo de firmware:

cp /opt/Xilinx/10.1/ISE/bin/lin/xusbdfwu.rules /etc/udev/rules.d/xusbdfwu.rules
cp /opt/Xilinx/10.1/ISE/bin/lin/xusb*.hex /usr/share/

3. O programa fxload é utilizado para carregar o firmware inicial, portanto:

apt-get install fxload

4. O programa fxload utiliza o USB File System para acessar os dispositivos USB, então é necessário adicionar a seguinte linha ao /etc/fstab:

none  /proc/bus/usb  usbfs  defaults  0  0

Na primeira vez, montar o usbfs na mão:

mount /proc/bus/usb

5. Para acessar o dispositivo usb como usuário normal, colocar a seguinte linha no arquivo /etc/udev/rules.d/libusb-driver.rules e reiniciar o udev novamente:

ACTION=="add", BUS=="usb", SYSFS{idVendor}=="03fd", MODE="666"

6. Reiniciar o udev e plugar o cabo JTAG novamente:

/etc/init.d/udev restart

Alternativamente, é possivel fazer um teste rápido com:

lsusb | grep Xilinx
Bus 002 Device 004: ID 03fd:0007 Xilinx, Inc.
sudo /sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D  /proc/bus/usb/002/004
lsusb | grep Xilinx
Bus 006 Device 007: ID 03fd:0008 Xilinx, Inc.

Utilização

Para executar a ferramenta iMPATCT, criei um scriptizinho ao qual chamei de impact.sh:

#!/bin/sh

XIL_DIR=/opt/Xilinx/10.1
DRV_DIR=$XIL_DIR/usb-driver

export LD_PRELOAD=$DRV_DIR/libusb-driver.so
$XIL_DIR/ISE/bin/lin/impact

Pronto! O iMPACT será executado corretamente.

./impact.sh

-veiga

Para mais informações:

4 comments

  1. Cristiano

    Eu testei no ISE 11.1 com o Ubuntu 9.04 e funciona bem também. Infelizmente, só o System Generator é que não está dando muito certo. Consigo simular, mas não consigo compilar. Dá uma mensagem de “caught standard exception” e o diz que “couldn’t open first pass text file”.

  2. pedro

    está um tutorial muito bom, eu testei também no ubuntu 9.04 e funcionou correctamente. Cristiano gostava de saber onde conseguiste arranjar o system generator 10.1, se for esta a versão que estás a usar. Já tentei arranjar pacotes de instalação do xilinx 10.1 e nenhum deles tem esta ferramenta activa no linux. Diz qulquer coisa.

  3. pedro

    Tu tens o system generator 10.1? Precisava disso mas não consigo fazer o download do site da xilinx, está com problemas ao tentar aceder os ficheiros remotamente. Podias-me arranjar o instalador ou dizer onde conseguistes?

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>