Instalace proběhla na i386, jádro 2.6.15-1.1830_FC4, distribuce Fedora Core 4.
Nové: Instalace na i386, jádro 2.6.23.1-49.fc8, distribuce Fedora Core 8.
Změny: v počítači mi zůstala verze 8.2i I.34, bohužel s novým jádrem přestal
fungovat WinDriver, naštěstí se objevila knihovna s názvem
libusb-driver, která
funguje v uživatelském prostoru a WinDriver není požadován.
Instalace vyžaduje dostatek místa na disku, kde se nachází /tmp. Instalovat jako uživatel root. Instalátor běží pod X11, může být nutné například nastavit pro roota $DISPLAY a podobně. Jinak je instalace klikací.
Instalace skončila hláškou:
Error: Cannot run process /usr/local/Xilinx/.xilinx/install_driverscript
Tento skript obsahuje příkazy pro zavedení modulů do jádra, jeho ruční vyvolání skončí hláškou:
insmod: error inserting '/lib/modules/misc/windrvr6.o': -1 Invalid module format
Problém je v tom, že dodávaný předkompilovaný jaderný modul je pro jádro řady 2.4.x v distribuci Red Hat Linux a jinde je nepoužitelný... Pokud chceme v ISE i obvody programovat je nutné vytvořit nový modul, ale o tom později.
Skript pro puštění ISE s potřebným nastavením proměnných prostředí:
#!/bin/sh # Environment variables # XILINX=/usr/local/Xilinx PLATFORM=lin LMC_HOME=$XILINX/smartmodel/$PLATFORM/installed_lin PATH=$PATH:$XILINX/bin/$PLATFORM LD_LIBRARY_PATH=$XILINX/bin/$PLATFORM:/usr/X11R6/lib NPX_PLUGIN_PATH=$XILINX/java/$PLATFORM/jre/plugin/i386/ns4 DISPLAY=:0 export PRINTER=ml170 # Start ISE # $XILINX/bin/$PLATFORM/ise
PACE slouží k nastavení I/O pinů obvodu, v ISE se spouští pomocí User Constrains / Assign Package Pins. Na rozdíl od ostatních aplikací používá PACE pro GUI knihovnu Motif. Je možné, že se po zavolání nespustí a ani se neobjeví žádná chybová hláška.
Po spuštění $XILINX/bin/$PLATFORM/pace z konzole, umře s hláškou:
Wind/U X-toolkit Error: wuDisplay: Can't open display
V tomto případě pomůže nastavit proměnnou DISPLAY:
export DISPLAY=:0
Navíc oproti Windows verzi se muselo označení I/O pinů zadávat s malými písmeny.
Programování pomocí podporovaného kabelu vyžaduje mít v jádře moduly windrv6 a xpc4drv.
Schéma kabelu s několika oddělovači sběrnice 74HC125. Funguje dobře ubastlený i ve stylu vrabčího hnízda.
Nefunguje pro jádro vyšší než 2.6.18, nahrazuje jej libusb-driver!.
Modul windrv6 slouží k jednoduššímu přenosu Windows ovladačů do Linuxu. Po zaregistrování je dostupný na stránkách www.jungo.com.
windrvr6: no version for "struct_module" found: kernel tainted. WinDriver v8.01 Jungo (c) 1997 - 2006 Build Date: Apr 4 2006 X86 32bit loaded
Libusb-driver vytvořil Michael Gernoth, podporuje kabely pro USB i paralelní port.
modprobe parport modprobe parport_pc modprobe ppdevVýpis modulů lsmod | grep par poté obsahuje:
parport_pc 26981 0 parport 32393 2 ppdev,parport_pc
export LD_PRELOAD=/...cesta k souboru.../libusb-driver.soPozor na případné ochrany, které znemožňují nahrávání knihoven z mimo systémových oblastí (setenforce 0). LD_PRELOAD zajišťuje přednostní nahrání daných knihoven a ty mohou měnit některé systémové funkce. Výpis lsmod, pak vypadá následovně, obsahuje pouze dva moduly:
Module Size Used by windrvr6 1 0 parport_pc 1 0
Release 8.2i - iMPACT I.34 Copyright (c) 1995-2006 Xilinx, Inc. All rights reserved. >setMode -bs // *** BATCH CMD : setMode -bs >setcable -p parport0 // *** BATCH CMD : setCable -port parport0 Reusing 7801B801 key. Reusing FC01B801 key. Connecting to cable (Parallel Port - parport0). libusb-driver.so version: 2007-11-10 13:31:49. parport0: baseAddress=0x0, ecpAddress=0x400 LPT base address = 0000h. ECP base address = 0400h. Cable connection established. >identify // *** BATCH CMD : identify Identifying chain contents ....Version is 0000 '1': : Manufacturer's ID =Xilinx xcf02s, Version : 0 INFO:iMPACT:1777 - Reading /usr/local/Xilinx/xcf/data/xcf02s.bsd... INFO:iMPACT:501 - '1': Added Device xcf02s successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- Version is 0000 '2': : Manufacturer's ID =Xilinx xc3s200, Version : 0 INFO:iMPACT:1777 - Reading /usr/local/Xilinx/spartan3/data/xc3s200.bsd... INFO:iMPACT:501 - '1': Added Device xc3s200 successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- done. Chain TCK freq = 0. Chain TCK freq = 0. Validating chain... Boundary-scan chain validated successfully. Elapsed time = 0 sec. // *** BATCH CMD : identifyMPM Elapsed time = 0 sec. >exit // *** BATCH CMD : quit ---------------------------------------------------------------------- ----------------------------------------------------------------------
S použitím libusb-driver není potřeba.
Modul xpc4drv zajišťuje programování přes paralelní port.
tar xvzf linuxdrivers.tar.gz cd linuxdrivers patch -Np1 <../linuxdrivers.patchA navíc je nutné předělat Makefile, popsáno taktéž na http://stefan.endrullis.de/, v opatchovaném zdrojáku je to již uděláno.
xpc4drvr: init_module
V tuto chvíli by po spuštění lsmod | grep drv ve výpise měly být vidět řádky:
windrvr6 155712 0 xpc4drv 8976 0
Zkontrolujte existenci zařízení /dev/windrvr6. Pokud se v systému neobjeví, je nutné ho vytvořit ručně (jako root):
set -- $(grep windrvr6 /proc/devices) mknod -m 0666 /dev/windrvr6 c $1 0
Samozřejmě, by podle použitého kabelu LPT/USB by měly být v jádře přítomny i ovladače daných rozhraní (např. pro LPT – lp, parport, parport_pc) což většinou bývá...
Aby mohli obvody programovat i obyčejní uživatelé je nutné nastavit práva na následujících zařízeních:
chmod 666 /dev/windrvr6 chmod 666 /dev/lp0
Vývojová deska Spartan-3E Starter Kit (HW-SPAR3E-SK-US), má možnost programovat přes USB a také je k ní dodáván pouze USB kabel. I přes značnou snahu se mi USB kabel nepodařilo zprovoznit. Linux po připojení zařízení nalezne a ve výpisu lsusb je vidět zařízení Xilinx, ale bota bude zřejmě na straně ovladačů od Xilinxu a programu iMPACT.
Řešení: Používat kablík přes paralelní port. Deska Spartan-3E Starter Kit má na sobě samozřejmě JTAG vývod přes 6 pinový nasouvací konektor, takže funguje např. s kabelem JTAG3.
V ISE v Processes záložce Generate Programming File zvolit Configure Device (iMPACT), pravé tlačítko, vybrat Properties, Display level Advanced, nastavit:
Port to by used: LPT1 (PC) Baud rate: Auto Configuration mode: Boundary Scan
Volbou Run se spustí aplikace iMPACT.
Program při programování skončí hláškou Program Failed a v podrobnostech se dozvídáme:
Programming terminated. DONE did not go high.
Řešení: V menu Edit → Preferences → iMPACT ConfigurationPreferences. zatrhnout položku: Use HIGHZ instead of BYPASS.
I want to target: Xilinx PROM PROM File Format: MCS a Next >
Může vzniknout problém se zablokováním kabelu , který se projeví následujícím výpisem v konzoly:
Cable is LOCKED. Retrying... The cable is being used by another application. Please try opening the cable connection at a later time.
Řešení: Spustit $XILINX/bin/lin/impact -batch a ručně zadat příkazy pro odblokování kabelu (cleancablelock), lze to také provést pomocí následujícího skriptu:
#!/bin/sh export LD_PRELOAD=/usr/local/lib/libusb-driver.so # místo WinDriveru XILINX=/usr/local/Xilinx $XILINX/bin/lin/impact -batch << __EOF setmode -bs cleancablelock setcable -p auto quit __EOF
Po restartu iMPACT vše funguje.
Linuxový iMPACT verze 8.2i I.34 má nepříjemný bug, pokud vygenerujete nový *.bit soubor, tak při jeho novém nahrání a programování iMPACT spadne a po spuštění se chová, jako by kabel nebyl připojen. Pro tento případ také pomůže odblokovat kabel výše uvedeným příkazem.
Chyba nenastává pokud před každým programování iMPACT restartujete.
Po spuštění iMPACT se objeví následující hláška a program skončí.
ERROR:iMPACT:2259 - The bit file '/home/bruchy/counting/my_counter.bit' does not have the startup clock set to 'JtagClk'. Please re-generate the bitfile with the startup clock option set to 'JtagClk'.
Pokud je v distribuci zapnutá podpora SELinux (Security-Enhanced Linux) se ISE nespustí při nejsilnější úrovni zabezpečení, jelikož SELinux nedovolí natáhnout sdílené knihovny z míst mimo systémové cesty a zahlásí např.:
/usr/local/Xilinx/bin/lin/_pn: error while loading shared libraries: /usr/local/Xilinx/bin/lin/libSTL.so: cannot restore segment prot after reloc: Permission denied
Pro konfiguraci SELinux se v FC4 používá klikací nástroj system-config-securitylevel, kde to lze nastavit a nebo před spuštěním SELinux zakázat příkazem setenforce 0.
Pokud se ve startovacím skriptu nenastaví proměnná PRINTER, pak pokus o tisk skončí zamítavou hláškou: Print fails because the default printer hs not been selected!, a v klikacím nastavení není o tiskárně ani slovo. Do startovacího skriptu potom stačí přidat např.:
export PRINTER=ml170
Ačkoliv nevím co je tiskárna ml170 zač, tak se díky tomuto nastavení lze dostat alespoň do tiskového dialogu a zde zvolit tisk do PostScriptového souboru. Tento soubor pak lze jednoduše poslat na tiskárnu případně převést do bitmapy.
Simulátor v ISE má omezené možnosti, takže je lepší použít jiný nástroj, např. Modelsim. Modelsim vyžaduje přístup k licenčnímu serveru a následující návod, který vytvořil Děda je šitý na míru studentům ČVUT FEL.
tar xvzf modelsim-docs.tar.gz && gunzip modelsim-linux.exe.gz chmod +x modelsim-linux.exe ./modelsim-linux.exeV daném adresáři vznikne nový podadresář modeltech, ve kterém se ukrývá vše potřebné.
147.32.80.30 moon.felk.cvut.cz moon
ssh -L 1718:moon.felk.cvut.cz:1717 username@dual2.felk.cvut.czV použitém terminálu se takto přihlásíte na server dual2.felk.cvut.cz, tunel poběží, dokud zůstanete vzdáleně připojeni.
export LM_LICENSE_FILE="1718@localhost"
modeltech/bin/vsim