Pages : 1
#1 Le 22/05/2008, à 15:30
- Jonas813
VHDL avec Qucs+Freehdl et Xilinx ISE
Bonjour
Hier et avant-hier, j'ai passé des heures et des heures à trouver comment installer les drivers pour Xilinx ISE et j'ai finalement trouvé comment.
Alors, pour éviter ça à d'autres, j'ai décidé de faire un résumé de ce qu'il faut faire.
Mon installation fonctionne avec la programmation par le cable usb et je pense que la plupart des étapes fonctionneront si on veut faire la programmation avec le cable parallèle.
L'installation a été faite sous Ubuntu Hardy, kernel : 2.6.24-16, et j'ai utiliser Xilinx ISE 10.1.
Par défaut, gcc 4.2.3 a été utilisé.
Installation de freehdl et de Qucs
Tout d'abord il faut il faut installer freehdl. La version disponible sous Ubuntu ne fonctionne pas sous Qucs, j'ai donc téléchargé et compilé la dernière version de freehdl (la version 0.0.6) sur http://www.freehdl.seul.org/. Je n'ai pas réussi à compiler freehdl avec gcc-4.2, j'ai donc téléchargé et compilé gcc-4.3.0 sur http://gcc.gnu.org/ avant d'installer freehdl.
Attention : le lien /usr/bin/gcc a été remplacé par le nouveau gcc; si vous voulez avoir gcc 4.2 par défaut, il faudra corriger ça.
Une fois freehdl installé, on peut installer Qucs. Pour ma part, je l'ai aussi installé depuis les sources.
Il y a un petit tutoriel tout simple sur comment faire une simulation numérique dans Qucs, il se trouve dans l'aide en anglais (il n'a pas été traduit en français). Chez moi il se trouve dans /opt/qucs/share/qucs/docs/en/start_digi.html puisque j'ai installé qucs dans /opt.
Sinon il y en a un plus long et plus compliqué http://qucs.sourceforge.net/docs/digital.pdf.
On peut utiliser kwrite ou kate comme éditeur VHDL puisqu'ils puisqu'ils ont la coloration synthaxique du VHDL.
voir http://stefan.endrullis.de/en/vhdl_editors.html
Installation de Xilinx ISE et des drivers
Télécharger le dernier Xilinx ISE sur le site officiel, et lancer l'installation. Chez moi, tout s'est bien passé, à part qu'à la fin j'ai eu un message d'erreur qui m'a dit qu'il n'a pas pu installer les drivers du câble. Xilinx ISE n'est supporté pour l'instant que sur Red Hat et Suse.
Il faut donc installer manuellement les drivers et c'est là que les choses se compliquent.
Il existe 3 possibilités pour installer les drivers.
La solution la plus simple qui me semble aussi la meilleure est d'installer le driver de câble userspace. Malheureusement chez moi ça n'a pas fonctionné comme il faut. La lumière de l'appareil qui programme la FPGA s'allumait comme il faut, mais quand je voulais envoyer un programme sur la FPGA, j'avais ce message d'erreur :
ERROR : iMPACT - Windriver open error
À mon avis, il ne manquait pas grand chose pour que ça marcherait.
J'avais suivi les instructions de ce lien : https://wiki.kip.uni-heidelberg.de/KIPw … SB-Treiber
Une autre serait d'installer Xup et XC3Sprog (voir http://gentoo-wiki.com/HOWTO_Xilinx), mais je ne l'ai pas essayée
La solution qui a marché pour moi a été d'installer le windriver fournit par Jungo et le driver xilinx.
Je me suis basé sur http://stefan.endrullis.de/en/xilinx_is … on_ise_edk, et aussi un peu sur http://gentoo-wiki.com/HOWTO_Xilinx, mais tout n'a pas fonctionné tel quel.
Voilà comment j'ai fait :
D'abord on télécharge le dernier windriver :
wget http://www.jungo.com/st/download/WD920LN.tgz
Le problème est que le kernel 2.6.24 a changé l'API du scatterlist (voir http://lwn.net/Articles/256368). Je sais pas trop ce que c'est, mais j'ai trouvé qu'il fallait changer les lignes qui contenaient "sgl[i].page" dans le fichier linux_wrappers.c
En plus le fichier wdreg contient 3 lignes avec "==" et il fallait les remplacer par un simple "="
Voici le patch qui fait tout ça :
http://b.imagehost.org/download/0313/wi … uals.patch
Une fois avoir décompressé le fichier WD920LN.tgz, il faut exécuter les commandes suivantes
cd WinDriver
patch -Np1 < ../windriver-sglpage_2equals.patch
cd redist
./configure
make
sudo make install
chown stefan:users /dev/windrvr6 (Remplacer stefan par votre nom)
chmod 660 /dev/windrvr6
Maintenant, on va installer le driver xilinx
J'ai essayé d'installer le driver pour le kernel 2.6 qui se trouve sur ftp://ftp.xilinx.com/pub/utilities/M1_w … 2.6.tar.gz
Mais je n'ai pas réussi à le compiler
On va donc installer celui prévu pour le kernel 2.4
wget ftp://ftp.xilinx.com/pub/utilities/fpga/linuxdrivers.tar.gz
wget http://stefan.endrullis.de/downloads/fpga/linuxdrivers.patch
tar xzf linuxdrivers.tar.gz
cd linuxdrivers
patch -Np1 <../linuxdrivers.patch
Pour que le driver puisse compiler j'ai dû ajouter un 2e patch
Le voici :
http://b.imagehost.org/download/0064/li … wner.patch
patch -Np1 < ../linuxdrivers-autoconf_h_setmoduleowner.patch
cd xpc4drvr
mv Makefile Makefile_old
Télécharger le nouveau Makefile : http://b.imagehost.org/download/0334/Makefile
make
sudo insmod ./xpc4drv.ko
et si tout va bien:
sudo make install
Maintenant les 2 drivers sont installés, ils devraient pouvoir être chargés avec :
modprobe xpc4drv
modprobe windrvr6
Si vous avez le message suivant :
FATAL: Module xpc4drv not found.
Faites plutôt :
insmod /lib/modules/`uname -r`/kernel/drivers/misc/xpc4drv.ko
Installer le dernier firmware
wget ftp://ftp.xilinx.com/pub/utilities/fpga/xusbdfwu-1025.zip
unzip xusbdfwu-1025.zip
sudo cp xusbdfwu.hex /usr/share
Installer fxload: (peut-être pas nécessaire)
apt-get install fxload
Configuration de Xilinx:
sudo mv /chemindelise/bin/lin/xusbdfwu.hex /chemindel/bin/lin/xusbdfwu.hex.old
sudo cp /usr/share/xusbdfwu.hex /chemindel/bin/lin/
sudo bash /chemindelise/bin/lin/setup_pcusb
Remplacer chemindelise par le chemin de votre dossier ISE (chez moi c'était : /opt/Xilinx/10.1/ISE)
Si je lançait setup_pcusb avec un autre interpréteur que le bash, le script s'arrêtait avec une erreur :
setup_usb: 205: Bad substitution
Ce que fait entre autres le script setup_pcusb est de copier le fichier xusbdfwu.rules, qui se trouve dans le même répertoire que lui, dans le dossier /etc/udev/rules.d. Il va se plaindre de ne pas trouver le fichier dans le répertoire des règles d'udev, alors il va le copier.
Voilà un script qui permet de charger les drivers si c'est pas déjà fait, puis de lancer ISE avec comme dossier de travail : ~/.xilinx
#!/bin/bash
############################
# ISE start script #
# #
# by Stefan Endrullis #
#
# and modified after
############################
# Controle si les modules ont été chargés, les charge sinon
if [ ! -e /dev/windrvr6 ]; then
sudo xilinx_modules
fi
# Please adapt these values to your system configuration.
XILINX_DIR=/opt/Xilinx/10.1/ISE/
# less importantly
XILINX_USER_DIR=~/.xilinx
### script begin ###
# create XILINX_USER_DIR if nessessary and change dir
if [ ! -d ${XILINX_USER_DIR} ]; then
mkdir ${XILINX_USER_DIR}
fi
cd ${XILINX_USER_DIR}
# load settings
. ${XILINX_DIR}/settings32.sh
# start xilinx ise
${XILINX_DIR}/bin/lin/ise
Vous devrez bien sûr adapter ce script à votre installation, en y mettant le chemin de votre dossier ISE.
Chez moi, à chaque redémarrage, le fichier /dev/windrvr6 disparaît. Si ce n'est pas le cas chez vous, remplacer le "if [ ! -e /dev/windrvr6 ]; then"
par qqch du style :
r=`lsmod | grep windrvr6`
if [ ${#r} -gt 0 ] ; then
En plus vous devrez changer un peut le script xilinx_modules
D'ailleurs le voici:
#!/bin/bash
modprobe windrvr6
modprobe xpc4drv
# utile seulement si le fichier /dev/windrvr6 disparait à chaque redémarrage
major=`grep -w windrvr6 /proc/devices | cut -f1 -d" "`
mknod /dev/windrvr6 c $major 0
chown jonas.users /dev/windrvr6 (remplacer jonas par votre nom)
chmod 660 /dev/windrvr6
Si vous n'arrivé pas à utiliser comme il faut Xilinx sans être root, ajouter la règle udev suivante dans /etc/udev/rules.d/z25-xilinx.rules
ACTION!="add", GOTO="xilinx_rules_end"
SUBSYSTEM!="usb_device", GOTO="xilinx_rules_end"
# xilinx xup cable
SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", MODE="664", GROUP="users"
LABEL="xilinx_rules_end"
Vous devrez bien sûr appartenir au groupe users
Maintenant on recharge les règles udev
udevcontrol reload_rules
Voilà, sauf erreur, j'ai rien oublié de mettre et tout devrait fonctionner.
Si jamais il y a encore quelques scripts qui pourrait être utiles dans les liens que j'ai mis.
Dernière modification par Jonas813 (Le 06/06/2008, à 20:32)
Hors ligne
#2 Le 25/05/2008, à 21:10
- Luzerne
Re : VHDL avec Qucs+Freehdl et Xilinx ISE
Merci d'avoir pris le temps de partager ces explications, qui j'espere serviront a qqn.
Juste pour info, Michael Gernoth a écrit un driver alternatif libre :
http://rmdir.de/~michael/xilinx/
Il y mentionne que la derniere version de ISE (10.1) integre un driver reposant sur libusb :
News (2008-03-26): Xilinx has released their own drivers based on libusb with ISE Design Suite 10.1. To use them, you need to set the environment-variable XIL_IMPACT_USE_LIBUSB to 1 before running the tools. The driver on this page no longer needs to be preloaded if you only used it to access USB cables. Parallel port support still seems to rely on windrvr, which can be emulated by libusb-driver.
Voila. Bonne continuation.
Luzerne GANHIR
Hors ligne
#3 Le 13/06/2008, à 20:15
- Jonas813
Re : VHDL avec Qucs+Freehdl et Xilinx ISE
Salut
Merci pour ta réponse.
J'ai installé libusb et maintenant ça marche si je lance Xilinx avec XIL_IMPACT_USE_LIBUSB=1 /opt/Xilinx/10.1/ISE/bin/lin/ise
Jonas
Hors ligne
Pages : 1