Xilinx ISE Linux

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Installation

Hier sind zwei komplette Beschreibungen (auf englisch) was zu tun ist, um das ISE von Xilinx unter Linux zu installieren. Das ISE ist recht unproblematisch zu installieren, aber der CableDriver ist recht zickig.

Es ist möglich die Installation von einem Linux System ins andere zu nehmen z. B. von Debian/32 zu Debian/64. Falls ISE nicht startet, mit strace nachsehen wo es hängt, meistens fehlen 32 bit lib's. Falls z. B. libuuid1 fehlt: die lib bei www.debian.de runterladen, mit dpkg -x entpacken und in /emul/ia32-linux/lib/ kopieren.

Nutzung des CableDrivers

Der CableDriver funktioniert nur mit einem älteren Kernel, da sich dessen Infrastruktur geändert hat. Daher empfiehlt sich der auf libusb basierende User-Space-Treiber von http://www.rmdir.de/~michael/xilinx/. Bei aktuellen (2010) Distributionen müssen beim selberkompilieren die Kompatibilitäts-Header für libusb-0.1 installiert sein.

Da es speziell mit ubuntu edgy eft (Linux-Kernel 2.6.17) doch nicht ganz nach den Fahrplänen von oben funktioniert, hier ein paar Tipps:

  • Ggf. muss im ./configure-script #!/bin/sh zu #!/bin/bash geändert werden. Außerdem sollte man Symlinks anlegen, wenn eine Datei fehlt

Impact und 64Bit Linux mit CableServer

Mit der derzeitige Version von Impact (ISE8.2i) ist es nicht möglich unter einem 64Bit Linux direkt einen Parallel-Port-Programmer zu verwenden, da Impact ein Kernelmodul verwendet, welches nicht für 64Bit verfügbar ist.

Stattdessen gibt es aber die Möglichkeit einen Remote-Programmer zu verwenden. Notwendig ist hierzu ein Server, der die Anfragen von Impact an den Parallel-Port-Programmer weiterleitet. Das erfreuliche ist, dass es diesen Server als OpenSource gibt, und er unter jedem Linux kompilierbar ist.

Der Vorteil der Cable-Server-Lösung ist, dass man den Win Driver nicht mehr benötigt und Impact von hausaus alle Xilinx-ICs unterstützt.

Eine inoffizielle Version des cblsrv (Version enthält einen Bugfix für das Parallel-Cable-III) gibt es hier: http://www.oxed.de/fpga/cblsrv-0.2-src.tar.bz2

ISE9.1 Impact und Cableserver

Für die Verwendung des CableServers mit der ISE9.1 Version ist es unbedingt erforderlich mindestens auf SP3 upzudaten, da sich in Impact ein Fehler im Kommunikationsprotokol mit dem CableServer eingeschlichen hat!

Impact und 64Bit Linux mit WinDriver-Emulation

Es ist auch möglich den in Impact integrierten (lokalen) Cableserver, ohne das WinDriver Kernelmodul, unter einem 64Bit Linux zu nutzen. Dazu benötigt man eine Library, die das Kernelmodul im Userspace emuliert. Die Library ist hier erhältlich: http://www.rmdir.de/~michael/xilinx/

Da Impact als 32Bit Programm keine 64Bit Libraries laden kann, muss die Library als 32Bit Library kompiliert werden. Dazu muss im Makefile bei den CFLAGS zusätzlich -m32 angegeben werden (Beispiel: CFLAGS=-Wall -O2 -fPIC -m32). Alternativ kann eine 32Bit-chroot-Umgebung benutzt werden.

Zum Kompilieren benötigt man außerdem eine 32Bit Version der libusb.a [1]. Das Paket muss/kann nicht installiert werden, aber es reicht, wenn man es entpackt und aus der enthaltenen Datei data.tar.gz die libusb.a extrahiert und nach /usr/lib32/libusb.a kopiert. Danach sollte die Library erfolgreich kompilieren.

Wenn man USB-JTAG-Kabel von Xilinx verwenden möchte, muss man sich auch noch eine 32Bit Version der libusb.so erzeugen, worauf man aber verzichten kann, wenn man nur ein Parallel-Cable-III verwendet.

Beim Parallel-Cable-III benötigt man Schreibrechte auf /dev/parport0 (Benutzer zur Gruppe lp hinzufügen; Unter Ubuntu zusätzlich in der /etc/modules "lp" auskommentieren, damit man überhaupt ein /dev/parport0 hat).

Zum Starten von impact empfiehlt es sich die Impact-Binärdatei in "impact_bin" umzubenennen und ein "impact" Script zu schreiben, welches so aussehen könnte: "export LD_PRELOAD=/path/to/libusb-driver.so && /path/to/impact_bin".

Wenn man das ISE nutzt, empfielt es sich auch die ISE Binärdatei in "ise_bin" umzubenennen und ein Script "ise" analog zum Script "impact" anzulegen, da das ISE Impact nicht über das Script "impact" startet.

[1]: http://de.archive.ubuntu.com/ubuntu/pool/main/libu/libusb/libusb-dev_0.1.12-2_i386.deb (Ubuntu oder Debian)

Alternative für Impact

Wer mit Spartan3-Bausteinen arbeitet, könnte xc3sprog als Alternative für Impact verwenden. Finden kann man das Programm hier: http://www.rogerstech.force9.co.uk/xc3sprog/ Das Projekt wir auf Sourceforge weiterentwickelt. Neuerungen: - XC95X, XC2C und Serial Flash programmierung bei XC3SA(N), XC3SE und XC6S - mehr unterstützte Dateiformate - Atmel AVR JTAG programmierung - Mehr unterstützte Adapter, z. B. Xilinx DLC9/10, Amontec und Olimex - Readback von CPLD und (Serial) Flash - Bessere Platformunabhängigkeit Aktuell unter: svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog xc3sprog oder nicht ganz so aktuell aber kompiliert: http://sourceforge.net/projects/xc3sprog/

Digilent NEXYS2-Boards

Um den Onboard-Programmer auf Digilent NEXYS2-Boards zu verwenden gibt es hier Informationen: http://www.fpgarelated.com/usenet/fpga/show/83878-1.php

Digilent Plugin für Impact

Falls nach der Installation vom Digilent Plugin Xilinx Impact abstürzt (SegFault), sobald man "Cable Setup" anklickt, könnte dieser Hinweis hilfreich sein.

PDF Viewer (Could not find PDF Viewer)

Irgendwie hat Xilinx die Konfigurationsmöglichkeit für den PDF-Viewer vergessen. Durch folgenden Eintrag in die .qt/xilinxrc verschwindet die Fehlermeldung "Could not find PDF Viewer":

8.2i/Gq/PDFViewer=/usr/bin/xpdf %1

Anwendung

ERROR:Simulator:222

Wer bei der Simulation die Fehlermeldung "ERROR:Simulator:222 - Generated C++ compilation was unsuccessful" erhält, sollte die Dateien

./gnu/gcc/3.2.3/lin/i686-pc-linux-gnu/bin/ld
./gnu/gcc/3.2.3/lin/bin/ld

im Xilinx-Installationspfad umbenennen. Siehe auch: http://groups.google.de/group/comp.arch.fpga/msg/3f6c44c16d3a3f85

ERROR:Simulator:170

Falls die Simulation mit der Fehlermeldung

ERROR:Simulator:170 - work/counter/Behavioral is not compiled properly.
Please recompile work/counter/Behavioral in file
"C:/projects/Xilinx/tutorial2/counter.vhd" without -incremental option.
ERROR:Simulator:199 - Failed when handling dependencies for entity
counter_tbw, architecture testbench_arch 

abbricht, kann dies ggf. daran liegen, dass der Pfad zu dem Projektverzeichnis ein Leerzeichen oder einen '.' enthält. Zumindest kann das manchmal Abhilfe schaffen.

ERROR:Simulator:607

ERROR:Simulator:607 - ISE Simulator is unable to elaborate this design due to
specific coding constructs used in the design. Xilinx is actively working on
reducing the number of conditions where this error occurs. For more
information on this error, please consult Answer Record 24067 in Answers
Database at http://www.xilinx.com/support. 

Nicht ganz klar was das verursacht... Bei mir liess er sich uebrreden es dennoch zu simulieren indem ich wahllos synthetisiert / place n route / ... gemacht hab Danach ging es aufeinmal... Wobei ich auch noch die ld files gelöscht hab:

./gnu/gcc/3.2.3/lin/i686-pc-linux-gnu/bin/ld
./gnu/gcc/3.2.3/lin/bin/ld

--Sssssss