Ho la necessità di utilizzare il software ISE 14.2 (della suite di Xilinx) per programmare una microboard Spartan-6 LX9, ovviamente su GNU/Linux (Debian Sid ma funziona anche su altri sistemi GNU/Linux).
Il procedimento è tutto sommato semplice se non fosse per la compilazione dei driver per la connessione via usb al device. Infatti i driver, che si trovano nella directory linux_drivers presente nel tarball, non compilano probabilmente per una incompatibilità del kernel (uso Linux 3.2).
Con questa guida verrà installato il plugin Digilent ad ISE. Questo plugin non fa altro che istruire il software a comunicare direttamente con il circuito di configurazione USB-JTAG Digilent.
Ecco la procedura d’installazione:
- Il driver Digilent necessita della libreria usb (libusb) 1.0 o superiore, in Debian Sid è già presente la versione pacchettizzata di questo software (in caso essa non fosse disponibile nel vostro sistema deve essere compilata):
apt-get install libusb-1.0-0 libusb-dev fxload
- Occore ovviamente scaricare l’ultima versione della suite Vivado and ISE Design Suites 14.2
- una volta ottenuto il tarball, esso va scompattato
- entriamo nella cartella così ottenuta ed eseguiamo lo script d’installazione
./xsetup
- effettuiamo l’installazione in /opt, come ci suggerisce, senza però installare anche il cable driver
- una volta installato il tutto (potrebbe metterci un bel po’), occorre effettuare l’installazione del plugin Digilent:
cd /opt/Xilinx/14.2/ISE_DS/common/bin/lin/digilent sudo ./install_digilent.sh
Attenzione che il path potrebbe cambiare nel caso stiate installando il software in un sistema a 64 bit. In tal caso i comandi sono i seguenti:
cd /opt/Xilinx/14.2/ISE_DS/common/bin/lin64/digilent sudo ./install_digilent.sh
- Ora c’è bisogno di aggiungere alcune regole ad udev per impostare correttamente i permessi, in modo da poter programmare la microboard da normale utente (non root). Bisogna aggiungere il file /etc/udev/rules.d/80-digilent.rules, contente il seguente testo:
ACTION!="add|change", GOTO="digilent_config_end" # Digilent USB Rules SUBSYSTEM=="usb", ATTRS{idVendor}=="1443", MODE:="0666" # Digilent FTDI? Rules SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{manufacturer}=="Digilent", MODE:="0666", RUN+="/usr/local/sbin/dftdrvdtch %s{busnum} %s{devnum}" LABEL="digilent_config_end"
e successivamente riavviare udev:
sudo service udev restart
- ci siamo quasi, creiamo uno script per l’avvio dell’ambiente sia per semplificarci la vita (altrimenti ogni volta bisogna caricare il file con i settaggi e poi avviare ise) sia forzare la libreria da utilizzare per la comunicazione via usb, creiamo il file xilinx.sh:
#!/bin/bash ARCH=32 #ARCH=64 source /opt/Xilinx/14.2/ISE_DS/settings${ARCH}.sh LD_PRELOAD=libdpcomm.so.2 ise
decommentiamo la riga corretta per il sistema in uso (32 o 64 bit) e settiamo il file come eseguibile:
chmod +x xilinx.sh
- ora finalmente possiamo avviare il software e programmare l’LX9!
./xilinx.sh
Ora è tutto pronto! Finalmente la board viene riconosciuta e può essere programmata!
Buon lavoro!