Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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