electronics:fpga:freebsd_xilinx

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
electronics:fpga:freebsd_xilinx [2010/01/16 13:58] – Add tables for images WojciechKoszekelectronics:fpga:freebsd_xilinx [2022/10/03 07:59] (current) – Remove name/email from opening, add HomePage link in intro KubilayKocak
Line 1: Line 1:
 ====== Working with Xilinx FPGAs on FreeBSD ====== ====== Working with Xilinx FPGAs on FreeBSD ======
-//Wojciech A. Koszek// \\  
-''%%wkoszek@FreeBSD.org%%'' \\  
-''%%http://FreeBSD.czest.pl/~wkoszek/%%'' \\  
  
 This page documents steps necessary to get Xilinx ISE 11.1 This page documents steps necessary to get Xilinx ISE 11.1
-IDE running on %%FreeBSD%% 9 system. Please contact the author+IDE running on %%FreeBSD%% 9 system. Please contact [[/WojciechKoszek|WojciechKoszek]]
 if information found here didn't let you to get Xilinx FPGA if information found here didn't let you to get Xilinx FPGA
 toolkit working, are inappropriate or obsolete. toolkit working, are inappropriate or obsolete.
 +
 +Note that the newer Xilinx Vivado Design Suite uses Java, including the xsetup installer.
 +Unfortunately I ([[/RebeccaCran|RebeccaCran]]) haven't been able to get it to work on %%FreeBSD%% 11.1 since java (%%OpenJRE%% 8) segfaults as the installer starts.
  
 ===== Introduction to free Xilinx ISE environment ===== ===== Introduction to free Xilinx ISE environment =====
  
-ISE [[/WebPack|WebPack]] is a free variant of ISE Design Suite supporting+ISE %%WebPack%% is a free variant of ISE Design Suite supporting
 most popular FPGA chips manufactured by Xilinx. This version most popular FPGA chips manufactured by Xilinx. This version
 should be enough for you in most of the cases and its use will should be enough for you in most of the cases and its use will
Line 74: Line 74:
 running next to me. Apart from X11 and %%ViM%%, nothing has been installed. running next to me. Apart from X11 and %%ViM%%, nothing has been installed.
 Installer and command-line utilities as well as "ise" -- graphical frontend Installer and command-line utilities as well as "ise" -- graphical frontend
-require couple of packages installed:+require couple of ports installed: 
 + 
 +<code> 
 +(cd /usr/ports/emulators/linux_base-f10 && make install) 
 +(cd /usr/ports/textproc/linux-f10-expat && make install) 
 +(cd /usr/ports/x11-fonts/linux-f10-fontconfig && make install) 
 +(cd /usr/ports/graphics/linux-f10-png && make install) 
 +(cd /usr/ports/x11/linux-f10-xorg-libs && make install) 
 +</code> 
 + 
 +After installation, this is how ''%%/var/db/pkg%%'' look like:
  
 <code> <code>
Line 86: Line 96:
  
 You can see full list of packages installed at a time of writing this tutorial here You can see full list of packages installed at a time of writing this tutorial here
-(while most of ports has been installed as a part of [[/ImageMagic|ImageMagic]] installation, so+(while most of ports has been installed as a part of %%ImageMagic%% installation, so
 that obtaining screenshots could be possible): that obtaining screenshots could be possible):
  
Line 105: Line 115:
 ===== Obtaining Xilinx ISE environment ===== ===== Obtaining Xilinx ISE environment =====
  
-In order to obtain Xilinx ISE [[/WebPack|WebPack]], you must visit this site:+In order to obtain Xilinx ISE %%WebPack%%, you must visit this site:
  
-[[http://www.xilinx.com/tools/webpack.htm]]+[[http://www.xilinx.com/tools/!WebPack.htm]]
  
 In order to proceed, one needs to have an account on the Xilinx In order to proceed, one needs to have an account on the Xilinx
 page. After successful account creation, you have to log in and page. After successful account creation, you have to log in and
-download [[/WebPack|WebPack]] package. Successful process should result in+download %%WebPack%% package. Successful process should result in
 having ''%%.tar%%'' file on your disk: having ''%%.tar%%'' file on your disk:
  
 <code> <code>
-wkoszek@laptop:/media/Multimedia$ ls Xilinx_11.1_WebPack_SFD.tar +wkoszek@laptop:/media/Multimedia$ ls Xilinx_11.1_!WebPack_SFD.tar 
--rw-r--r--  1 wkoszek  wkoszek  2868316160  5 paź 17:04 Xilinx_11.1_WebPack_SFD.tar+-rw-r--r--  1 wkoszek  wkoszek  2868316160  5 paź 17:04 Xilinx_11.1_!WebPack_SFD.tar
  
 </code> </code>
Line 127: Line 137:
  
 <code> <code>
-# md5 /home/wkoszek/Xilinx_11.1_WebPack_SFD.tar  +# md5 /home/wkoszek/Xilinx_11.1_!WebPack_SFD.tar  
-MD5 (/home/wkoszek/Xilinx_11.1_WebPack_SFD.tar) = 42ce70bd3f78e68295175db2441c8b3a +MD5 (/home/wkoszek/Xilinx_11.1_!WebPack_SFD.tar) = 42ce70bd3f78e68295175db2441c8b3a 
-# sha1 /home/wkoszek/Xilinx_11.1_WebPack_SFD.tar +# sha1 /home/wkoszek/Xilinx_11.1_!WebPack_SFD.tar 
-SHA1 (/home/wkoszek/Xilinx_11.1_WebPack_SFD.tar) =2b57b4fb00914e50d1b0a4d0a49e511ca56e85fb+SHA1 (/home/wkoszek/Xilinx_11.1_!WebPack_SFD.tar) =2b57b4fb00914e50d1b0a4d0a49e511ca56e85fb
  
 </code> </code>
Line 144: Line 154:
  
 <code> <code>
-# tar xf Xilinx_11.1_WebPack_SFD.tar +# tar xf Xilinx_11.1_!WebPack_SFD.tar 
-# cd Xilinx_11.1_WebPack_SFD+# cd Xilinx_11.1_!WebPack_SFD
 </code> </code>
  
Line 169: Line 179:
  
 | {{electronics/fpga/freebsd_xilinx/1_welcome.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_1_welcome.jpg}}}} | {{electronics/fpga/freebsd_xilinx/2_agreement2.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_2_agreement2.jpg}}}} | | {{electronics/fpga/freebsd_xilinx/1_welcome.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_1_welcome.jpg}}}} | {{electronics/fpga/freebsd_xilinx/2_agreement2.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_2_agreement2.jpg}}}} |
- 
 | {{electronics/fpga/freebsd_xilinx/3_agreement2.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_3_agreement2.jpg}}}} | {{electronics/fpga/freebsd_xilinx/4_directory_selection.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_4_directory_selection.jpg}}}} | | {{electronics/fpga/freebsd_xilinx/3_agreement2.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_3_agreement2.jpg}}}} | {{electronics/fpga/freebsd_xilinx/4_directory_selection.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_4_directory_selection.jpg}}}} |
- 
 | {{electronics/fpga/freebsd_xilinx/5_products_selection.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_5_products_selection.jpg}}}} | {{electronics/fpga/freebsd_xilinx/6_install_options.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_6_install_options.jpg}}}} | | {{electronics/fpga/freebsd_xilinx/5_products_selection.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_5_products_selection.jpg}}}} | {{electronics/fpga/freebsd_xilinx/6_install_options.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_6_install_options.jpg}}}} |
- 
 | {{electronics/fpga/freebsd_xilinx/7_install_options2.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_7_install_options2.jpg}}}} | {{electronics/fpga/freebsd_xilinx/8_summary.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_8_summary.jpg}}}} | | {{electronics/fpga/freebsd_xilinx/7_install_options2.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_7_install_options2.jpg}}}} | {{electronics/fpga/freebsd_xilinx/8_summary.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_8_summary.jpg}}}} |
- 
 | {{electronics/fpga/freebsd_xilinx/9_license.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_9_license.jpg}}}} | {{electronics/fpga/freebsd_xilinx/10_license2.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_10_license2.jpg}}}} | | {{electronics/fpga/freebsd_xilinx/9_license.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_9_license.jpg}}}} | {{electronics/fpga/freebsd_xilinx/10_license2.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_10_license2.jpg}}}} |
 +| {{electronics/fpga/freebsd_xilinx/11_update.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_11_update.jpg}}}} | As a result, you should have following message displayed at the end. \\  {{electronics/fpga/freebsd_xilinx/12_success.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_12_success.jpg}}}} |
  
-| {{electronics/fpga/freebsd_xilinx/11_update.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_11_update.jpg}}}} |+And basically, ISE installation should be ready.
  
-As a result, you should have following message displayed at the end.+| On reference system..: \\  {{electronics/fpga/freebsd_xilinx/13_ise.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_13_ise.jpg}}}} |
  
-| {{electronics/fpga/freebsd_xilinx/12_success.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_12_success.jpg}}}} |+In order to let you to work with Xilinx command line tools, you can use preprepared 
 +shell scripts ''%%settings32.csh%%'' (for CSH) and ''%%settings32.sh%%'' (for sh-alike shells) 
 +living in ''%%/compat/linux/opt/Xilinx/11.1%%''. You need to modify a path stating where 
 +to find the tools from:
  
-And basically, ISE should be ready to start. This is the result of what +<code> 
-I see on my reference system:+set INSTALL_LOC="/opt/Xilinx/11.1" 
 +</code> 
 + 
 +to 
 + 
 +<code> 
 +set INSTALL_LOC="/compat/linux/opt/Xilinx/11.1/" 
 +</code> 
 + 
 +I've put: 
 + 
 +<code> 
 +source /compat/linux/opt/Xilinx/11.1/settings32.csh 
 +</code>
  
-| {{electronics/fpga/freebsd_xilinx/13_ise.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_13_ise.jpg}}}} |+Into my ''%%~/.cshrc%%'' script.
  
 ===== FPGA processor programming ===== ===== FPGA processor programming =====
  
 Once you have software tools working it would be quite nice to Once you have software tools working it would be quite nice to
-see that you can actually upload something to your FPGA board and see +see that you can actually upload something to your FPGA board and have 
-that it actually works. In terms of programming, two options exist:+a proof that it actually works.
  
-**A**. You're Spartan 3e Starter Kit (S3ESK) user+Due to the popularity of the FPGA development boards we can distinguish 
 +two cases here: 
 + 
 +**A**. You're Xilinx Spartan 3e Starter Kit (S3ESK) user
  
 **B**. You're other FPGA board user **B**. You're other FPGA board user
  
-//B isn't documented here, because author doesn't have any bigger standalone FPGA board//+//B isn't documented here (yet), because author doesn't have any bigger standalone FPGA board (yet)//
  
 Option A is quite comfortable, since this board is really popular and a lot Option A is quite comfortable, since this board is really popular and a lot
-of people has been dealing with it in UNIXish systems. The board, basically, +of people has been dealing with it in UNIXish systems. You just take 
-has JTAG cable embedded in itself. It is based on Cypress FX2 chip (also known +a bitstream targeted against Spartan 3e500 (fg320 variant) and you stream 
-as EZ-USB). This is 8051 microcontroller dealing with USB communication. +it through the programming application, that deals with USB communication. 
-It supports reenumeration -- processor implements special kind of protocol, +//Option B will be documented in the future//
-letting a user to submit a code which is being used later to program the controller. +
-Once it's finished, it detaches from USB bus and attaches back as a different, +
-target device. Together with modularity, some problems exist. You have to +
-have a software dealing with reenumeration. In order to save you some time, here is a brief background behind tools:+
  
-  * Xilinx ISE brings native ''%%libusb%%'' based driver together with software installation **i should really try to use this one**+Anyway, in order to start programming, you have to prepare your JTAG 
 +cable..
  
-  * before Xilinx ISE listened, where was a kernel driver that never worked for anyone, until a reverse engineered driver for GNU/Linux for ''%%libusb%%'' appeared here: http://rmdir.de/~michael/xilinx/+==== Xilinx FPGA programming tools: background ====
  
-  * Probably first tool to program S3ESK out-of-IDE was http://www.rogerstech.force9.co.uk/xc3sprog/index.html, but you won't be really happy with it unless you use parallel port JTAG adapter with cable and JTAG IDC connector.+Xilinx based its programming functionality on FX2 chip (also known as EZ-USB), 
 +nowadays made by Cypress. This chip is a 8051 microcontroller with USB support. 
 +It  supports reenumeration -- processor implements special kind of 
 +protocol that lets a user to submit '51 machine code which is being used to 
 +to program microcontroller. Once done, it detaches from the USB bus and 
 +attaches back as a different, 'target' device. Together with modularity, 
 +some problems exist. You have to have a software for uploading firmware 
 +to the chip.
  
-  * Andrew Rogers' work has been extended by bringing USB support (libusb). Project is called XUP: http://inisyn.org/src/xup/+I brought a support for ''%%libusb%%'' to the latest version of fxload(8) tool. 
 +Testing confirmed that I can program it on GNU/Linux and %%FreeBSD%% after 
 +my changes. Here's a Git command that will let you to synchronize with 
 +a code:
  
-  * Newest ''%%xc3sprog%%'' created not so long ago lives in sourceforge as well; **compiles under %%FreeBSD%% with minor tweaks; try it out, since it seems to support not only FX2-based cables**+<code>
  
-  * There exists ''%%fxload%%'' for Windows that deploys ''%%libusb%%'': http://wiki.epfl.ch/cfavi/fxload-libusb. It can be trivially changed and compiled without problems on %%FreeBSD%%. **Check if it works**+git clone http://freebsd.czest.pl/~wkoszek/fpga/fxload-multios.git
  
-  * There's http://volodya-project.sourceforge.net/fx2_programmer.php working natively with libusb. **test if it compiles and works'.**+</code>
  
-==== Ideas ====+You must have ''%%gmake%%'' on your system to build it -- it's pretty straight 
 +forward:
  
-* take information on the page ''%%http://rmdir.de/~michael/xilinx/%%'', and try to create +<code> 
-TCP/IP enabled wrapper library for Linux; copy it on %%FreeBSD%% and implement %%FreeBSD%%-based +gmake 
-''%%libusb%%'' client to programmer could be used.+</code>
  
-This will result in having Xilinx ISE [[/WebPack|WebPack]] installed.+It should compile cleanly on %%FreeBSD%% 8/9. Mail me otherwise. 
 +Once you have ''%%fxload(8)%%'' working, you can reprogram your FX2 chip with 
 +correct firmware. File: 
 + 
 +<code> 
 +/compat/linux/opt/Xilinx/11.1/ISE/bin/lin/xusbdfwu.rules 
 +</code> 
 + 
 +Has enough information for particular cases. You simply look at ''%%usbconfig%%'' 
 +output: 
 + 
 +<code> 
 +wkoszek@laptop:/compat/linux/opt/Xilinx/11.1/ISE/bin/lin# usbconfig  
 +ugen0.1: <OHCI root HUB nVidia> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON 
 +ugen1.1: <EHCI root HUB nVidia> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON 
 +ugen1.2: <USB2.0 Syntek> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON 
 +ugen0.2: <Optical USB Mouse Logitech> at usbus0, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON 
 +ugen1.3: <product 0x000d vendor 0x03fd> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON 
 +</code> 
 + 
 +As you see, the last line has something in common with following line from 
 +''%%xusbdfwu.rules%%'': 
 + 
 +<code> 
 +BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $TEMPNODE" 
 +</code> 
 + 
 +Finally, we craft a set of command line options: 
 + 
 +<code> 
 +./fxload -v -t fx2 -I /compat/linux/opt/Xilinx/11.1/ISE/bin/lin/xusb_emb.hex -D vid=0x03fd,pid=0x000d 
 +</code> 
 + 
 +After successful programming, you should see that USB device detached and that 
 +different device should reappear as: 
 + 
 +<code> 
 +ugen1.3: <XILINX XILINX> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON         
 +</code> 
 + 
 +If you want to check ''%%fxload%%'' out but you don't have Xilinx ISE installed 
 +yet, you have sample firmware for Spartan 3e Starter Kit here: 
 + 
 +<code> 
 +http://freebsd.czest.pl/~wkoszek/fpga/xusb_emb.hex 
 +</code> 
 + 
 +Green LED should blink first and get permanently turned on after 
 +that. If something else happens, mail me. LED is basically a sign 
 +of correct programming. 
 + 
 +==== Programming from Impact (2010-02-x, WIP: skip for now, please) ==== 
 + 
 +Starting from 9.2i Alpha release, Xilinx ISE brings native userspace, 
 +libusb-based driver for their cables. 
 + 
 +//it has been proven to be possible to get it to work in %%FreeBSD%% 9-CURRENT. We simply compile our ''%%libusb%%'' on Linux and install it in the Linuxolator. It had to be modified to use our ioctl() commands, but conflict within command space exists. There's an ongoing work related with investigating, what's the best way to bring support for Linux USB in the %%FreeBSD%%// 
 + 
 +| {{electronics/fpga/freebsd_xilinx/ise_after_programming.jpg?linkonly|{{electronics/fpga/freebsd_xilinx/thumb_ise_after_programming.jpg}}}} | 
 + 
 +//note about finding out a firmware for FX2 programmer// 
 +//note about searching through the udev configuration to see which file is the right one// 
 + 
 +**So basically -- not yet.** 
 + 
 +Before Xilinx started to ship , where was a kernel driver that never worked for anyone, until a reverse engineered driver for GNU/Linux for ''%%libusb%%'' appeared here: http://rmdir.de/~michael/xilinx/ //still needs checking--worth// 
 +//for people with parallel cables// 
 + 
 +==== Programming without proprietary tools ==== 
 + 
 +Number of "open" programming tools exist. To save you 
 +some time, I enlist tools known to me with functionality provided 
 +by them: 
 + 
 +  * [1] Probably first tool to program S3ESK out-of-IDE was: http://www.rogerstech.force9.co.uk/xc3sprog/index.html, but you won't be really happy with it unless you use parallel JTAG cable. 
 + 
 +  * [2] Andrew Rogers' work has been extended by "Inisyn Research" by bringing libUSB support. Project is called XUP: http://inisyn.org/src/xup/. It works (needs some hacks for %%FreeBSD%%). 
 + 
 +  * [3] Above projects has been consolidated into one big program by Uwe Bonnes. The project is hosted on %%SourceForge%%: http://sourceforge.net/projects/xc3sprog/ Compiles and works under %%FreeBSD%%. 
 + 
 +**WARNING: as you see, name "xc3sprog" has been reused number of times; below, "xc3sprog" only** 
 +**refers to the [3] project by Uwe Bonnes. The other two aren't supported, as I believe no further** 
 +**development happens there.** 
 + 
 +So, in order to have ''%%xc3sprog%%'', the best way is to obtain the fresh copy straight from the 
 +Subversion: 
 + 
 +<code> 
 +svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog xc3sprog 
 +</code> 
 + 
 +And build it: 
 + 
 +<code> 
 +cd xc3sprog/trunk 
 +mkdir build ; cd build ; cmake .. ; gmake 
 +</code> 
 + 
 +=== Quick start with xc3sprog === 
 + 
 +Default behavior of ''%%xc3sprog%%'' is to use parallel cable 
 +and perform JTAG scan. 
 + 
 +**Report to Uwe that it's actually wrong nowadays** 
 + 
 +Anyway, for Xilinx cables, you can do a JTAG boundary scan 
 +with: 
 + 
 +<code> 
 +./xc3sprog -c xpc 
 +</code> 
 + 
 +Programming: 
 + 
 +<code> 
 +./xc3sprog -c xpc <file.bit> 
 +</code> 
 + 
 +For those without Xilinx ISE yet, but willing to test whether everything 
 +works, I have provided sample bitstream for Spartan 3E Starter Kit implementing 
 +LED ruler 
 + 
 +<code> 
 +http://freebsd.czest.pl/~wkoszek/fpga/leds.bit 
 +</code> 
 + 
 +Checksums, just in case: 
 + 
 +  * MD5: 1b58146048ede072c9bca9815587974f 
 +  * SHA1: c675f524ade7bc729772b4850274a10192f95b23 
 + 
 +Let me know if something doesn't work for you! I'd like you 
 +to explicitly agree to put your name in a "Success stories". 
 + 
 +==== Success stories ==== 
 + 
 +Programmers: 
 + 
 +  * PCIII -- parallel cable III 
 +  * XUSB_EMB -- Startan 3E Starter Kit embedded USB JTAG cable 
 + 
 +^ Board ^ Cable ^ Program ^ Command line ^ Contributor ^ Additional notes ^ 
 +| [[http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,799&Prod=S3BOARD|S3BOARD]] | PCIII | [[http://sourceforge.net/projects/xc3sprog/|xc3sprog]] | ''%%xc3sprog -d /dev/ppi0 -i BIT file.bit -i MCS file.mcs%%'' | Grzegorz Behrens | Removing 'Missing power' block is necessary from ioparallel.cpp | 
 +| S3ESK | XUSB_EMB | [[http://sourceforge.net/projects/xc3sprog/|xc3sprog]] | ''%%xc3sprog -c xpc <file.bit>%%'' | wkoszek@ | Some warnings appear while ''%%xc3sprog%%'' operation. Reported to the author. | 
 + 
 +===== Before publishing announcement ===== 
 + 
 +  * bring fxload to mainstream development branch 
 +    * prepare a port 
 +    * check if ezload provides some more functionality for FX2 
 +  * ''%%devd.conf%%'' rules for cables 
 +  * mark "quick" steps with red background  
 +  * prepare command line options for ise 
 +  * prepare tar.gzs for cross-checking 
 +  * prepare scripts 
 +  * prepare PROM programming example 
 + 
 +==== Ideas ==== 
 + 
 +* Explore possibilities of %%CableServer%%
  
 ---- ----
Line 237: Line 430:
 Script for Wiki link generation {{electronics/fpga/freebsd_xilinx/wiki_gen.sh?linkonly|wiki_gen.sh}} Script for Wiki link generation {{electronics/fpga/freebsd_xilinx/wiki_gen.sh?linkonly|wiki_gen.sh}}
 Script for thumbnail generation {{electronics/fpga/freebsd_xilinx/thumb_gen.sh?linkonly|thumb_gen.sh}} Script for thumbnail generation {{electronics/fpga/freebsd_xilinx/thumb_gen.sh?linkonly|thumb_gen.sh}}
 +
 +----
 +
 +{{tag>HowTo}}
  
  • electronics/fpga/freebsd_xilinx.1263650311.txt.gz
  • Last modified: 2010/01/16 13:58
  • by WojciechKoszek