Tagged: Embedded System

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:

Como instalar o ISE 9.1i no Linux (Ubuntu)

No trabalho, já tive diversas vezes que utilizar a ferramenta iMPACT do ISE para programar uma FPGA via cabo JTAG. Para não ter que usar uma máquina Windows, resolvi perder um tempinho e fazer funcionar o ISE 9.1i no Linux (mais especificamente no Ubuntu, que é a distro padrão que utilizamos na empresa). A seguir encontra-se uma descrição do processo de instalação e alguns probleminhas enfrentados.

Obs: este tutorial está desatualizado, por favor leia o post Como instalar o ISE 10.1 no Linux (Ubuntu 8.04).

Instalação

Definir o bash como shell padrão (Ubuntu vem com dash):

  # rm /bin/sh
  # ls -s /bin/bash /bin/sh

Montar o cdrom e executar o comando setup:

  # mount /media/cdrom
  # cd /media/cdrom
  # ./setup

Será iniciado o programa de instalação semelhante ao do Windows. Após a instalação, deve-se configurar o PATH para conter os programas instalados.

Problemas encontrados

1. Caso ocorra o seguinte erro: “./setup: /bin/sh: bad interpreter: Permission denied” é necessário editar o /etc/fstab para permitir execução no cdrom/dvd. Exemplo de como deve ficar:

  /dev/hda        /media/cdrom0   udf,iso9660 user,noauto,exec     0       0

Obs: é importante montar o cdrom novamente para garantir a modificação.

2. Caso os “Cable Drivers” não funcionem (e muito provavelmente não vão funcionar porque são específicos para RHEL 3/4), pode-se instalar um usb-driver alternativo como o descrito em:

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

  # apt-get install libusb-dev
  # tar xzf usb-driver-HEAD.tar.gz
  # cd usb-driver
  # make
  # ls libusb-driver.so

Para executar o iMPACT com essa biblioteca:

  export LD_PRELOAD=/path/to/usb-driver/libusb-driver.so
  ./Xilinx9.1i/bin/lin/impact

-veiga