Installation von Xilinx ISE 6.3 oder ISE 7.1 unter Linux (Kernel 2.6.9 / 2.6.11)InhaltVorwort
Diese Anleitung basiert auf dem Artikel FPGA-FAQ: How to get the Xilinx parallel cable to work on Linux kernels 2.6.x auf http://www.fpga-faq.org/. Mein System war Linux Debian mit dem Kernel 2.6.9 und mit dem Kernel 2.6.11, selbstcompiliert.
Wenn möglich, sollte man das neuere ISE installieren, denn scheinbar wurde in der Version 7.1 das Problem behoben, daß wärend eines Compilierungsvorgangs das System komplett blockiert war. Bei Fragen, Hinweisen oder Problemlösungen freue ich mich über eMails. Installation von Xilinx ISE/EDK unter Debian
Die Installation muss unter
root ausgeführt werden und die CD-Rom mit Ausführungsrechten gemountet werden. Also beispielsweise folgendes unter root ausführen:
/opt/xilinx angegeben.Bei der Auswahl der Xilinx-Module sollte man Platform Cable USB Driver und Parallel Cable Drivers abwählen, wenn man nicht mit Red Hat Enterprise 3.0, Kernel 2.4 arbeitet. In meinem Fall (Debian, Kernel 2.6.11) habe ich also die Installation ohne die beiden Module fortgesetzt. Wenn die Installation der 1. CD fertig ist, die CD unmounten und CD 2 und 3 gleichermaßen installieren. Danach habe ich das ISE Service Packe 3 installiert (entpacken und setup starten).Auf die gleiche Weise hab ich auch das EDK installiert. Da das ISE (und das EDK) die dumme Angewohnheit hat, Dateien in dem Verzeichnis abzulegen, von dem aus es gestartet wurde, habe ich mir ein Script angelegt, daß dem ISE das Verzeichnis ~/.xilinx für diese Zwecke gibt. Es lädt gleichzeitig die Umgebungsvariable (settings.sh ) für das ISE.
#!/bin/bash
setup.sh angelegt habe, die einige Umgebungsvariablen zusätzlich setzt.
#!/bin/bash
setup.sh :
export XILINX_EDK=/opt/edk
WinDriver installieren
Zuerst sollte man die Kernel-Sourcen für den laufenden Kernel installieren.
Danach kann man den WinDriver von http://www.jungo.com/dnload.html herunterladen. Dies erfordert eine freie Registrierung. Nun kann man die heruntergeladene Datei entpacken usw.:
make install folgende Fehlermeldung zurück:
FATAL: Error inserting windrvr6 (/lib/modules/2.6.11stefan/kernel/drivers/misc/wi
CC=gcc-3.3
/dev/windrvr6 angelegt. Zugriff hat standardgemäß nur root . Also gegebenenfalls noch die rw-Rechte ändern, falls man ISE impact auch als normaler User nutzen möchte. In meinem Fall:
Xilinx-Treiber installieren
Die Kernel-Sourcen müssen installiert sein.
Danach wie im gelben Kasten dargestellt: herunterladen, entpacken, patchen. Den Patch bitte vorher auf bösen Code untersuchen (ich übernehme keine Garantie).
xpc4drvr wechseln und das alte Xilinx-Makefile umbenennen:
Makefile heißen) mit folgendem Inhalt (
RUN_VERSION=`uname -r`
insmod sollte nichts ausgeben. Falls doch, z.B.
insmod: error inserting './xpc4drv.ko': -1 Invalid module format
dmesg | tail nützliche Informationen liefern, z.B. folgende:
xpc4drv: version magic '2.6.11 SMP preempt PENTIUM4 gcc-4.0' should be '2.6.11 SMP preempt PENTIUM4 gcc-3.3'
dmesg | tail die Zeile xpc4drvr: init_module ausspuckt, wurde das Modul korrekt geladen und man kann das Modul installieren:
Gerät bei hotplug registrieren
setup_pcusb lieder nicht fehlerfrei, hab deshalb Anpassungen vorgenommen. Ich weiß leider nicht mehr, welche das waren.Wer das XUP-Board in Betrieb nehmen möchte und ISE 7.1 verwendet, sollte nach diesem Artikel noch eine kleine Änderung in der /etc/hotplug/usb.usermap vornehmen. Ob das ganze für ISE 8.1 auch nötig ist, weiß ich nicht. Jedenfalls stört es auch nicht. Und zwar muss der Wert für idProduct von 0x0007 auf 0x0009 gesetzt werden. In neueren ISE-Versionen ist dies vielleicht wieder überflüssig.Danach habe ich hotplug neugestartet.
xusbdfwu: loaded successfully
Interessanterweise änderte sich dadurch die Product id des XUP-Boardes von 0x0009 auf 0x0008 (nachprüfbar mit lsusb ). Und ohne diese Änderung funktionierte die USB-Datenübertragung bei mir nicht.
USB-Übertragung in iMPACT
iMPACT kann entweder direkt gestartet werden (
path_to_ise_installation/bin/lin/impact ) oder vom ISE heraus.Nach jedem System-Neustart müssen die beiden Treiber-Module geladen werden, um die USB-Datenübertragung in iMPACT nutzen zu können. Da dies in meinem Fall nicht gereicht hat, habe ich sämtliche Tests durchgeführt, um herauszufinden, was noch und in welcher Reihenfolge nötig ist, und schließlich ist folgendes USB init scipt dabei herausgekommen (rote Markierungen anpassen):
#!/bin/bash
Nachdem das Script ausgeführt wurde, sollte die USB-Übertragung funktionieren. Ob das Board über USB erreichbar ist, läßt sich im ISE iMPACT am besten durch Cable Auto Connect im Menu Output feststellen. Wenn die Verbindung nicht zu stande gekommen ist, hilft vielleicht ein Blick in das Log von iMPACT - dazu auf View->View Log File klicken. Hier erfährt man sinnvolle Informationen, wie z.B.
Connecting to cable (Usb Port - USB21).
Connecting to cable (Usb Port - USB21).
Beim Arbeiten mit dem EDK ist evtl. der schnellste Weg zur Übertragung, im Project-Verzeichnis make -f system.make download auszuführen. Vorher muss man aber die Xilin-Setup-Scripte ausführen, damit iMPACT und alle anderen Programme gefunden werden. Da ich sehr schreibfaul bin, habe ich zu diesem Zweck im Project-Verzeichnis ein settings.sh -Script der folgenden Form abgelegt
#!/bin/bash
. settings.sh aufrufen und alle Einstellungen sind geladen. Der Punkt darf dabei nicht vergessen werden. Er sorgt dafür, daß die Variablen, die durch die Scripte gesetzt wurden, von der Shell übernommen werden.Hinweis: Mit lsusb kann man sich die angeschlossenen USB-Geräte anzeigen lassen. Da ich das XUP-Board verwende, liefert mir dieser Befehl die Ausgabe:
Bus 002 Device 008: ID 03fd:0008 Xilinx, Inc.
lsusb das Gerät noch findet. Es scheint so, als würde sich das Board nach einiger Zeit im Leerlauf abschalten. Dann hilft es, es einmal aus- und einzuschalten. Danach müßte auch lsusb wieder das Gerät finden.
FAQ
Q:
Beim Aufruf von
./setup erhalte ich folgende Fehlermeldung:
A:
libXm.so.3 ist in dem Paket libmotif3 (unter Debian: apt-get install libmotif3 libcurl3 ).
Q:
Beim Aufruf von
make -f system.make download erhalte ich folgende Fehlermeldung:
A:
Die Systemvariablen wurden nicht gesetzt. Ein Aufruf von
. settings.sh
löst das Problem.
Bei weitere Fragen kann vielleicht die Seite FPGA-FAQ: How to get the Xilinx parallel cable to work on Linux kernels 2.6.x helfen.
|