Xilinx-USB-Treiber: Difference between revisions
(ââEin Bitfile auf den FPGA laden: Devicenummer auswählbar) |
 |
||
(11 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
== Ab Version 10.1 SP2== |
|||
In manchen Distributionen (z.B. Gentoo-Linux) existiert die Datei <code>/lib/libusb.so</code> nicht. Diese muss gegebenenfalls angelegt werden: |
|||
ln -s /lib/libusb-0.1.so.4.4.4 /lib/libusb.so |
|||
FĂźr die neueren Versionen der Xilinx-Tools (ab Version 10.1 SP2) ist die Wrapper-Library nicht mehr notwendig. Es genĂźgt die Umgebungsvariable <code>XIL_IMPACT_USE_LIBUSB</code> auf 1 zu setzen. |
|||
export XIL_IMPACT_USE_LIBUSB=1 |
|||
fxload und libusb mĂźssen installiert sein: |
|||
sudo apt-get fxload libusb-0.1-4 |
|||
Die Firmware Files finden sich unter $XILINX/bin/lin64/*.hex und sollten nach /usr/share/ kopiert werden, falls sie dort noch nicht existieren. |
|||
Die udev-Rules liegen unter $XILINX/bin/lin64/xusbdfw.rules und mĂźssen nach /etc/udev/rules.d/xusbdfw.rules kopiert werden, falls nicht schon geschehen. |
|||
FĂźr Ubuntu 9.10 muss die xusbdfw.rules modifiziert werden: ersetze <code>$TEMPNODE</code> durch <code>$tempnode</code> |
|||
# version 0003 |
|||
SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666" |
|||
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $tempnode" |
|||
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $tempnode" |
|||
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $tempnode" |
|||
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $tempnode" |
|||
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $tempnode" |
|||
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $tempnode" |
|||
Durch Neustart von udev sollte die Programmer-LED orange oder grĂźn leuchten: |
|||
sudo /etc/init.d/udev restart |
|||
--[[User:Hengel|hengel]] 09:58, 3 November 2009 (UTC) |
|||
== Bis Version 10.1 == |
|||
Wer Probleme hat unter Linux die Treiber von Xilinx zu installieren, der sollte mal einen Blick [http://www.rmdir.de/~michael/xilinx/ hierauf] werfen. Ich hab versucht kurz zusammen zu schreiben wie es bei mir auf einem 64 bit Linux geklappt hat die alternativen Treiber zu installieren, vielleicht hilfts ja jemandem. --[[User:Smanz|Smanz]] 18:03, 3 July 2007 (CEST) |
Wer Probleme hat unter Linux die Treiber von Xilinx zu installieren, der sollte mal einen Blick [http://www.rmdir.de/~michael/xilinx/ hierauf] werfen. Ich hab versucht kurz zusammen zu schreiben wie es bei mir auf einem 64 bit Linux geklappt hat die alternativen Treiber zu installieren, vielleicht hilfts ja jemandem. --[[User:Smanz|Smanz]] 18:03, 3 July 2007 (CEST) |
||
== Ubuntu 7.04 == |
=== Ubuntu 7.04 === |
||
'''(optional)''' |
'''(optional)''' |
||
Ubuntu 7.04 hat ein paar ''features'', die man normalerweise nicht will. |
Ubuntu 7.04 hat ein paar ''features'', die man normalerweise nicht will. |
||
* GCC und co. installieren: |
|||
sudo apt-get install build-essential |
|||
* ''/bin/sh'' sollte auf ''/bin/bash'' und nicht auf ''/bin/dash'' zeigen: |
* ''/bin/sh'' sollte auf ''/bin/bash'' und nicht auf ''/bin/dash'' zeigen: |
||
sudo ls -l /bin/sh |
|||
und falls der Link auf ''dash'' zeigt: |
|||
⚫ | |||
sudo rm /bin/sh |
|||
⚫ | |||
* ''/usr/bin/gmake'' gibts nicht und sollte verlinkt werden: |
* ''/usr/bin/gmake'' gibts nicht und sollte verlinkt werden: |
||
Line 19: | Line 56: | ||
echo sy on >> ~/.vimrc |
echo sy on >> ~/.vimrc |
||
== Die Bibliothek bauen == |
=== Die Bibliothek bauen === |
||
* ''libusb-dev'' installieren (vielleicht optional auf 64 bit Rechnern): |
* ''libusb-dev'' installieren (vielleicht optional auf 64 bit Rechnern): |
||
Ich bin mir nicht sicher, ob man das auf 64 bit Rechnern wirklich braucht, da man später ja eigentlich 32 bit Treiber kompilieren wird, aber es war mein erster Versuch und deshalb hatte ich auch die 64 bit libs drauf. |
Ich bin mir nicht sicher, ob man das auf 64 bit Rechnern wirklich braucht, da man später ja eigentlich 32 bit Treiber kompilieren wird, aber es war mein erster Versuch und deshalb hatte ich auch die 64 bit libs drauf. |
||
Line 46: | Line 83: | ||
sudo cp libusb-driver.so /usr/local/lib/ |
sudo cp libusb-driver.so /usr/local/lib/ |
||
== Firmware == |
=== Firmware === |
||
* Die Firmware runterladen: |
* Die Firmware runterladen (es gibt mittlerweile eine neuere Firmware): |
||
wget ftp://ftp.xilinx.com/pub/utilities/fpga/xusbdfwu-1025.zip |
wget ftp://ftp.xilinx.com/pub/utilities/fpga/xusbdfwu-1025.zip |
||
Line 71: | Line 108: | ||
Sobald man nun das Board per USB verbindet, wird die Firmware hochgeladen. |
Sobald man nun das Board per USB verbindet, wird die Firmware hochgeladen. |
||
* Die Firmware auch der Xilinx-Software bekannt machen, damit ''impact'' auch als normaler Nutzer läuft (Dank an [http://stefan.endrullis.de Stefan Endrullis]): |
|||
⚫ | |||
sudo mv /opt/xilinx/bin/lin/xusbdfwu.hex /opt/xilinx/bin/lin/xusbdfwu.hex.old |
|||
sudo cp /usr/share/xusbdfwu.hex /opt/xilinx/bin/lin/ |
|||
sudo sh /opt/xilinx/bin/lin/setup_pcusb |
|||
⚫ | |||
'''(Xilinx Pfad anpassen)''' |
'''(Xilinx Pfad anpassen)''' |
||
Dieser Abschnitt ist fĂźr 64 bit Rechner wichtig, da es nicht funktioniert einfach allen |
Dieser Abschnitt ist fĂźr 64 bit Rechner wichtig, da es nicht funktioniert einfach allen Binaries die ''libusb-driver.so'' zu prelinken. |
||
Es gibt wohl drei |
Es gibt wohl drei Binaries, die mit dem USB-Kabel kommunizieren: ''/opt/xilinx/bin/lin/_impact'' (man beachte das "_") ''/opt/xilinx/bin/lin/cse'' und ''/opt/xilinx/bin/lin/xmd''. Diese benĂśtigen die oben erstellte ''libusb-driver.so'' ge''prelink''t. |
||
* Die binary umbenennen: |
* Die binary umbenennen: |
||
Line 93: | Line 135: | ||
* Die obigen drei Punkte fĂźr ''/opt/chipscope/bin/lin/cse'' und ''/opt/edk/bin/lin/xmd'' wiederholen. |
* Die obigen drei Punkte fĂźr ''/opt/chipscope/bin/lin/cse'' und ''/opt/edk/bin/lin/xmd'' wiederholen. |
||
=== Chipscope reparieren === |
|||
Es kann sein, dass Chipscope Probleme mit dem eigenen ''tcl'' hat. Abhilfe schafft: |
|||
cp -r /opt/xilinx/chipscope/xilinx/bin/lib /opt/xilinx/chipscope/bin/ |
|||
== NĂźtzliche Skripte == |
== NĂźtzliche Skripte == |
||
Line 149: | Line 196: | ||
* [http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver?a=snapshot;h=HEAD Userspace Treiber] von http://www.rmdir.de/~michael/xilinx/ |
* [http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver?a=snapshot;h=HEAD Userspace Treiber] von http://www.rmdir.de/~michael/xilinx/ |
||
* [http://groups.google.com/group/comp.arch.fpga/browse_thread/thread/954a145428ec2c54/555f6bfb766a3a93#555f6bfb766a3a932 howto / diskussion] |
* [http://groups.google.com/group/comp.arch.fpga/browse_thread/thread/954a145428ec2c54/555f6bfb766a3a93#555f6bfb766a3a932 howto / diskussion] |
||
* Die [ftp://ftp.xilinx.com/pub/utilities/fpga/xusbdfwu-1025.zip Firmware] von Xilinx. |
* Die [ftp://ftp.xilinx.com/pub/utilities/fpga/xusbdfwu-1025.zip Firmware] von Xilinx (es gibt mittlerweile eine neuere Firmware). |
||
* [http://gentoo-wiki.com/ |
* [http://en.gentoo-wiki.com/wiki/Xilinx_ISE_WebPACK Gentoo Wiki] |
||
* [http://de.archive.ubuntu.com/ubuntu/pool/main/libu/libusb/ |
* [http://de.archive.ubuntu.com/ubuntu/pool/main/libu/libusb/ 32-bit-libusb-dev] von Ubuntu |
Latest revision as of 15:03, 13 July 2011
Ab Version 10.1 SP2
In manchen Distributionen (z.B. Gentoo-Linux) existiert die Datei /lib/libusb.so
nicht. Diese muss gegebenenfalls angelegt werden:
ln -s /lib/libusb-0.1.so.4.4.4 /lib/libusb.so
FĂźr die neueren Versionen der Xilinx-Tools (ab Version 10.1 SP2) ist die Wrapper-Library nicht mehr notwendig. Es genĂźgt die Umgebungsvariable XIL_IMPACT_USE_LIBUSB
auf 1 zu setzen.
export XIL_IMPACT_USE_LIBUSB=1
fxload und libusb mĂźssen installiert sein:
sudo apt-get fxload libusb-0.1-4
Die Firmware Files finden sich unter $XILINX/bin/lin64/*.hex und sollten nach /usr/share/ kopiert werden, falls sie dort noch nicht existieren. Die udev-Rules liegen unter $XILINX/bin/lin64/xusbdfw.rules und mĂźssen nach /etc/udev/rules.d/xusbdfw.rules kopiert werden, falls nicht schon geschehen.
FĂźr Ubuntu 9.10 muss die xusbdfw.rules modifiziert werden: ersetze $TEMPNODE
durch $tempnode
# version 0003 SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $tempnode"
Durch Neustart von udev sollte die Programmer-LED orange oder grĂźn leuchten:
sudo /etc/init.d/udev restart
--hengel 09:58, 3 November 2009 (UTC)
Bis Version 10.1
Wer Probleme hat unter Linux die Treiber von Xilinx zu installieren, der sollte mal einen Blick hierauf werfen. Ich hab versucht kurz zusammen zu schreiben wie es bei mir auf einem 64 bit Linux geklappt hat die alternativen Treiber zu installieren, vielleicht hilfts ja jemandem. --Smanz 18:03, 3 July 2007 (CEST)
Ubuntu 7.04
(optional)
Ubuntu 7.04 hat ein paar features, die man normalerweise nicht will.
- GCC und co. installieren:
sudo apt-get install build-essential
- /bin/sh sollte auf /bin/bash und nicht auf /bin/dash zeigen:
sudo ls -l /bin/sh
und falls der Link auf dash zeigt:
sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh
- /usr/bin/gmake gibts nicht und sollte verlinkt werden:
sudo ln -s /usr/bin/make /usr/bin/gmake
- vim-tiny durch den richtigen vim esetzen:
apt-get install vim # fĂźr Syntax highlighting: echo sy on >> ~/.vimrc
Die Bibliothek bauen
- libusb-dev installieren (vielleicht optional auf 64 bit Rechnern):
Ich bin mir nicht sicher, ob man das auf 64 bit Rechnern wirklich braucht, da man später ja eigentlich 32 bit Treiber kompilieren wird, aber es war mein erster Versuch und deshalb hatte ich auch die 64 bit libs drauf.
sudo apt-get install libusb-dev
- Die Quellen von http://www.rmdir.de/~michael/xilinx/ runterladen:
wget http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver?a=snapshot;h=HEAD
- FĂźr 64 bit Rechner braucht man auch noch die 32 bit libs:
wget http://de.archive.ubuntu.com/ubuntu/pool/main/libu/libusb/libusb-dev_0.1.12-2_i386.deb # daraus muss man irgendwie die data.tar.gz und # daraus wiederum die libusb.a extrahieren und # diese dann nach /usr/lib32/ kopieren
- Die Quellen entpacken:
tar xzf usb-driver-HEAD.tar.gz cd usb-driver
- Kompilieren:
Auf 64 bit Rechnern:
make lib32
Auf 32 bit Rechnern:
make
- Die Bibliothek ins System kopieren:
sudo cp libusb-driver.so /usr/local/lib/
Firmware
- Die Firmware runterladen (es gibt mittlerweile eine neuere Firmware):
wget ftp://ftp.xilinx.com/pub/utilities/fpga/xusbdfwu-1025.zip
- Auspacken und an die richtige Stelle kopieren:
unzip xusbdfwu-1025.zip sudo cp xusbdfwu.hex /usr/share
- fxload installieren:
apt-get install fxload
- Die firmware Automatisch per udev aufs board laden:
Eine Datei /etc/udev/rules.d/xusbdfwu.rules mit dem folgenden Inhalt anlegen:
SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", NAME="windrvr6" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd",SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd",SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd",SYSFS{idProduct}=="000b", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd",SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd",SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE" ACTION=="add", BUS=="usb", SYSFS{idVendor}=="03fd", MODE="666"
Nicht vergessen udev neu zu starten:
/etc/init.d/udev restart
Sobald man nun das Board per USB verbindet, wird die Firmware hochgeladen.
- Die Firmware auch der Xilinx-Software bekannt machen, damit impact auch als normaler Nutzer läuft (Dank an Stefan Endrullis):
sudo mv /opt/xilinx/bin/lin/xusbdfwu.hex /opt/xilinx/bin/lin/xusbdfwu.hex.old sudo cp /usr/share/xusbdfwu.hex /opt/xilinx/bin/lin/ sudo sh /opt/xilinx/bin/lin/setup_pcusb
Xilinx Software anpassen
(Xilinx Pfad anpassen)
Dieser Abschnitt ist fĂźr 64 bit Rechner wichtig, da es nicht funktioniert einfach allen Binaries die libusb-driver.so zu prelinken.
Es gibt wohl drei Binaries, die mit dem USB-Kabel kommunizieren: /opt/xilinx/bin/lin/_impact (man beachte das "_") /opt/xilinx/bin/lin/cse und /opt/xilinx/bin/lin/xmd. Diese benĂśtigen die oben erstellte libusb-driver.so geprelinkt.
- Die binary umbenennen:
cd /opt/xilinx/bin/lin mv _impact _impact.bin
- Erstelle ein Skript /opt/xilinx/bin/lin/_impact mit folgendem Inhalt:
#!/bin/sh # # Preload driver binary LD_PRELOAD=/usr/local/lib/libusb-driver.so $0.bin $*
- Die richtigen Rechte vergeben:
chmod +x /opt/xilinx/bin/lin/_impact
- Die obigen drei Punkte fĂźr /opt/chipscope/bin/lin/cse und /opt/edk/bin/lin/xmd wiederholen.
Chipscope reparieren
Es kann sein, dass Chipscope Probleme mit dem eigenen tcl hat. Abhilfe schafft:
cp -r /opt/xilinx/chipscope/xilinx/bin/lib /opt/xilinx/chipscope/bin/
NĂźtzliche Skripte
Das USB-Kabel zurĂźcksetzen
(Xilinx Pfad anpassen)
Folgendes Skript kann man z.B. in /usr/local/bin/usbreset speichern:
#!/bin/bash echo "setmode -bs" > /tmp/impact.keys echo "cleancablelock" >> /tmp/impact.keys echo "exit">> /tmp/impact.keys echo "">> /tmp/impact.keys . /opt/xilinx/8.2i/settings.sh impact -batch < /tmp/impact.keys rm /tmp/impact.keys # clean up impact's mess rm _impact.cmd _impactbatch.log
Ein Bitfile auf den FPGA laden
(Xilinx Pfad anpassen)
Folgendes Skript kann man z.B. in /usr/local/bin/usbupload speichern und dann mit usbupload <bitfile> <devicenummer> ein bitfile hochladen. Falls keine Devicenummer angegeben wurde wird der Defaultwert 3 verwendet (passend fĂźr das XUP-Board):
#!/bin/bash if [ -z "$2" ] ; then DEVICE=3 else DEVICE=$2 fi echo "setMode -bscan" > /tmp/usbdownload echo "setCable -p auto" >> /tmp/usbdownload echo "identify" >> /tmp/usbdownload echo "assignfile -p $DEVICE -file $1" >> /tmp/usbdownload echo "program -p $DEVICE" >> /tmp/usbdownload echo "quit" >> /tmp/usbdownload . /opt/xilinx/8.2i/settings.sh impact -batch < /tmp/usbdownload rm /tmp/usbdownload # clean up impact's mess rm _impactbatch.log _impact.cmd
Links
Folgende Links waren nĂźtzlich:
- Userspace Treiber von http://www.rmdir.de/~michael/xilinx/
- howto / diskussion
- Die Firmware von Xilinx (es gibt mittlerweile eine neuere Firmware).
- Gentoo Wiki
- 32-bit-libusb-dev von Ubuntu