This commit is contained in:
BuildTheDocs
2026-02-12 16:26:28 +00:00
commit 3e69beea2a
72 changed files with 11202 additions and 0 deletions
+262
View File
@@ -0,0 +1,262 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Advanced usage of openFPGALoader &mdash; openFPGALoader: universal utility for programming FPGA latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="FPGAs" href="../compatibility/fpga.html" />
<link rel="prev" title="Troubleshooting" href="troubleshooting.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> openFPGALoader: universal utility for programming FPGA
</a>
<div class="version">
latest
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="first-steps.html">First steps with openFPGALoader</a></li>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installing openFPGALoader</a></li>
<li class="toctree-l1"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Advanced usage of openFPGALoader</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#resetting-an-fpga">Resetting an FPGA</a></li>
<li class="toctree-l2"><a class="reference internal" href="#using-negative-edge-for-tdo-s-sampling">Using negative edge for TDOs sampling</a></li>
<li class="toctree-l2"><a class="reference internal" href="#reading-the-bitstream-from-stdin">Reading the bitstream from STDIN</a></li>
<li class="toctree-l2"><a class="reference internal" href="#automatic-file-type-detection-bypass">Automatic file type detection bypass</a></li>
<li class="toctree-l2"><a class="reference internal" href="#ft231-ft232-bitbang-mode-and-pins-configuration">FT231/FT232 bitbang mode and pins configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="#writing-to-an-arbitrary-address-in-flash-memory">Writing to an arbitrary address in flash memory</a></li>
<li class="toctree-l2"><a class="reference internal" href="#detect-read-write-on-primary-secondary-flash-memories">Detect/read/write on primary/secondary flash memories</a></li>
<li class="toctree-l2"><a class="reference internal" href="#using-an-alternative-directory-for-spioverjtag">Using an alternative directory for <em>spiOverJtag</em></a></li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Compatibility</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/fpga.html">FPGAs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/board.html">Boards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/cable.html">Cables</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Vendors</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../vendors/anlogic.html">Anlogic notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/colognechip.html">Cologne Chip notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/efinix.html">Efinix notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/gowin.html">Gowin notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/intel.html">Intel notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/lattice.html">Lattice notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/xilinx.html">Xilinx notes</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Development</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../todo.html">To Do</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">openFPGALoader: universal utility for programming FPGA</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Advanced usage of openFPGALoader</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/trabucayre/openFPGALoader/blob/master/doc/guide/advanced.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="advanced-usage-of-openfpgaloader">
<span id="advanced-usage"></span><h1>Advanced usage of openFPGALoader<a class="headerlink" href="#advanced-usage-of-openfpgaloader" title="Link to this heading"></a></h1>
<section id="resetting-an-fpga">
<h2>Resetting an FPGA<a class="headerlink" href="#resetting-an-fpga" title="Link to this heading"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span><span class="o">[</span>options<span class="o">]</span><span class="w"> </span>-r
</pre></div>
</div>
</section>
<section id="using-negative-edge-for-tdo-s-sampling">
<h2>Using negative edge for TDOs sampling<a class="headerlink" href="#using-negative-edge-for-tdo-s-sampling" title="Link to this heading"></a></h2>
<p>If transaction are unstable you can try to change read edge by using</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span><span class="o">[</span>options<span class="o">]</span><span class="w"> </span>--invert-read-edge
</pre></div>
</div>
</section>
<section id="reading-the-bitstream-from-stdin">
<h2>Reading the bitstream from STDIN<a class="headerlink" href="#reading-the-bitstream-from-stdin" title="Link to this heading"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>cat<span class="w"> </span>/path/to/bitstream.ext<span class="w"> </span><span class="p">|</span><span class="w"> </span>openFPGALoader<span class="w"> </span>--file-type<span class="w"> </span>ext<span class="w"> </span><span class="o">[</span>options<span class="o">]</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">--file-type</span></code> is required to detect file type.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Its possible to load a bitstream through network:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># FPGA side</span>
nc<span class="w"> </span>-lp<span class="w"> </span>port<span class="w"> </span><span class="p">|</span><span class="w"> </span>openFPGALoader<span class="w"> </span>--file-type<span class="w"> </span>xxx<span class="w"> </span><span class="o">[</span>option<span class="o">]</span>
<span class="c1"># Bitstream side</span>
nc<span class="w"> </span>-q<span class="w"> </span><span class="m">0</span><span class="w"> </span>host<span class="w"> </span>port<span class="w"> </span>&lt;<span class="w"> </span>/path/to/bitstream.ext
</pre></div>
</div>
</div>
</section>
<section id="automatic-file-type-detection-bypass">
<h2>Automatic file type detection bypass<a class="headerlink" href="#automatic-file-type-detection-bypass" title="Link to this heading"></a></h2>
<p>Default behavior is to use file extension to determine file parser.
To avoid this mechanism <code class="docutils literal notranslate"><span class="pre">--file-type</span> <span class="pre">type</span></code> must be used.</p>
</section>
<section id="ft231-ft232-bitbang-mode-and-pins-configuration">
<h2>FT231/FT232 bitbang mode and pins configuration<a class="headerlink" href="#ft231-ft232-bitbang-mode-and-pins-configuration" title="Link to this heading"></a></h2>
<p>FT232R and ft231X may be used as JTAG programmer.
JTAG communications are emulated in bitbang mode.</p>
<p>To use these devices user needs to provides both the cable and the pin mapping:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span><span class="o">[</span>options<span class="o">]</span><span class="w"> </span>-cft23XXX<span class="w"> </span>--pins<span class="o">=</span>TDI:TDO:TCK:TMS<span class="w"> </span>/path/to/bitstream.ext
</pre></div>
</div>
<p>where:</p>
<ul class="simple">
<li><p>ft23XXX may be <code class="docutils literal notranslate"><span class="pre">ft232RL</span></code> or <code class="docutils literal notranslate"><span class="pre">ft231X</span></code>.</p></li>
<li><p>TDI:TDO:TCK:TMS may be the pin ID (0 &lt;= id &lt;= 7) or string value.</p></li>
</ul>
<p>allowed values are:</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>value</p></th>
<th class="head"><p>ID</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>TXD</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>RXD</p></td>
<td><p>1</p></td>
</tr>
<tr class="row-even"><td><p>RTS</p></td>
<td><p>2</p></td>
</tr>
<tr class="row-odd"><td><p>CTS</p></td>
<td><p>3</p></td>
</tr>
<tr class="row-even"><td><p>DTR</p></td>
<td><p>4</p></td>
</tr>
<tr class="row-odd"><td><p>DSR</p></td>
<td><p>5</p></td>
</tr>
<tr class="row-even"><td><p>DCD</p></td>
<td><p>6</p></td>
</tr>
<tr class="row-odd"><td><p>RI</p></td>
<td><p>7</p></td>
</tr>
</tbody>
</table>
</section>
<section id="writing-to-an-arbitrary-address-in-flash-memory">
<h2>Writing to an arbitrary address in flash memory<a class="headerlink" href="#writing-to-an-arbitrary-address-in-flash-memory" title="Link to this heading"></a></h2>
<p>With FPGA using an external SPI flash (<em>xilinx</em>, <em>lattice ECP5/nexus/ice40</em>, <em>anlogic</em>, <em>efinix</em>) option <code class="docutils literal notranslate"><span class="pre">-o</span></code> allows
one to write raw binary file to an arbitrary adress in FLASH.</p>
</section>
<section id="detect-read-write-on-primary-secondary-flash-memories">
<h2>Detect/read/write on primary/secondary flash memories<a class="headerlink" href="#detect-read-write-on-primary-secondary-flash-memories" title="Link to this heading"></a></h2>
<p>With FPGA using two external SPI flash (some <em>xilinx</em> boards) option <code class="docutils literal notranslate"><span class="pre">--target-flash</span></code> allows to select the QSPI chip.</p>
<p>To detect:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>-b<span class="w"> </span>kcu105<span class="w"> </span>-f<span class="w"> </span>--target-flash<span class="w"> </span><span class="o">{</span>primary,secondary<span class="o">}</span><span class="w"> </span>--detect
</pre></div>
</div>
<p>To read the primary flash memory:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>-b<span class="w"> </span>kcu105<span class="w"> </span>-f<span class="w"> </span>--target-flash<span class="w"> </span>primary<span class="w"> </span>--dump-flash<span class="w"> </span>--file-size<span class="w"> </span>N_BYTES<span class="w"> </span>mydump.bin
</pre></div>
</div>
<p>and the second flash memory:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>-b<span class="w"> </span>kcu105<span class="w"> </span>-f<span class="w"> </span>--target-flash<span class="w"> </span>secondary<span class="w"> </span>--dump-flash<span class="w"> </span>--file-size<span class="w"> </span>N_BYTES<span class="w"> </span>--secondary-bitstream<span class="w"> </span>mydump.bin
</pre></div>
</div>
<p>To write on secondary flash memory:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>-b<span class="w"> </span>kcu105<span class="w"> </span>-f<span class="w"> </span>--target-flash<span class="w"> </span>secondary<span class="w"> </span>--secondary-bitstream<span class="w"> </span>mySecondaryBitstream.bin
</pre></div>
</div>
</section>
<section id="using-an-alternative-directory-for-spioverjtag">
<h2>Using an alternative directory for <em>spiOverJtag</em><a class="headerlink" href="#using-an-alternative-directory-for-spioverjtag" title="Link to this heading"></a></h2>
<p>By setting <code class="docutils literal notranslate"><span class="pre">OPENFPGALOADER_SOJ_DIR</span></code> its possible to override default
<em>spiOverJtag</em> bitstreams directory:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span><span class="w"> </span><span class="nv">OPENFPGALOADER_SOJ_DIR</span><span class="o">=</span>/somewhere
openFPGALoader<span class="w"> </span>xxxx
</pre></div>
</div>
<p>or</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">OPENFPGALOADER_SOJ_DIR</span><span class="o">=</span>/somewhere<span class="w"> </span>openFPGALoader<span class="w"> </span>xxxx
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="troubleshooting.html" class="btn btn-neutral float-left" title="Troubleshooting" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../compatibility/fpga.html" class="btn btn-neutral float-right" title="FPGAs" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2019-2022, Gwenhael Goavec-Merou and contributors.</p>
</div>Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/buildthedocs/sphinx.theme">theme</a>
provided by <a href="https://buildthedocs.github.io">Build the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
+189
View File
@@ -0,0 +1,189 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>First steps with openFPGALoader &mdash; openFPGALoader: universal utility for programming FPGA latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Installing openFPGALoader" href="install.html" />
<link rel="prev" title="openFPGALoader: universal utility for programming FPGA" href="../index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> openFPGALoader: universal utility for programming FPGA
</a>
<div class="version">
latest
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">First steps with openFPGALoader</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#install">Install</a></li>
<li class="toctree-l2"><a class="reference internal" href="#programming-a-development-board">Programming a development board</a></li>
<li class="toctree-l2"><a class="reference internal" href="#programming-an-standalone-fpga">Programming an “standalone” FPGA</a></li>
<li class="toctree-l2"><a class="reference internal" href="#troubleshooting">Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installing openFPGALoader</a></li>
<li class="toctree-l1"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="advanced.html">Advanced usage of openFPGALoader</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Compatibility</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/fpga.html">FPGAs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/board.html">Boards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/cable.html">Cables</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Vendors</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../vendors/anlogic.html">Anlogic notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/colognechip.html">Cologne Chip notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/efinix.html">Efinix notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/gowin.html">Gowin notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/intel.html">Intel notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/lattice.html">Lattice notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/xilinx.html">Xilinx notes</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Development</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../todo.html">To Do</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">openFPGALoader: universal utility for programming FPGA</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>First steps with openFPGALoader</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/trabucayre/openFPGALoader/blob/master/doc/guide/first-steps.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="first-steps-with-openfpgaloader">
<span id="first-steps"></span><h1>First steps with openFPGALoader<a class="headerlink" href="#first-steps-with-openfpgaloader" title="Link to this heading"></a></h1>
<section id="install">
<h2>Install<a class="headerlink" href="#install" title="Link to this heading"></a></h2>
<p>Packages are available for Linux distributions, Windows (MSYS2) and macOS:</p>
<ul class="simple">
<li><p><em>Arch Linux</em>: <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">pacman</span> <span class="pre">-S</span> <span class="pre">openfpgaloader</span></code></p></li>
<li><p><em>Fedora</em>: <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">dnf</span> <span class="pre">copr</span> <span class="pre">enable</span> <span class="pre">mobicarte/openFPGALoader;</span> <span class="pre">sudo</span> <span class="pre">dnf</span> <span class="pre">install</span> <span class="pre">openFPGALoader</span></code></p></li>
<li><p><em>MSYS2</em>: <code class="docutils literal notranslate"><span class="pre">pacman</span> <span class="pre">-S</span> <span class="pre">mingw-w64-ucrt-x86_64-openFPGALoader</span></code></p></li>
<li><p><em>macOS</em>: <code class="docutils literal notranslate"><span class="pre">brew</span> <span class="pre">install</span> <span class="pre">openfpgaloader</span></code></p></li>
</ul>
<p>More instructions for other installation scenarios are available in <a class="reference internal" href="install.html#install"><span class="std std-ref">Installing openFPGALoader</span></a>.</p>
</section>
<section id="programming-a-development-board">
<h2>Programming a development board<a class="headerlink" href="#programming-a-development-board" title="Link to this heading"></a></h2>
<p>Just simply replace <code class="docutils literal notranslate"><span class="pre">my_fpga_board</span></code> with any FPGA board from <a class="reference internal" href="../compatibility/board.html#compatibility-boards"><span class="std std-ref">Boards</span></a>
(or <code class="docutils literal notranslate"><span class="pre">openFPGALoader</span> <span class="pre">--list-boards</span></code>) in any of the two commands below, depending on if you want to program the volatile
part of your FPGA (faster but not persistent) or the flash part of your FPGA (slower but persistent):</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>-b<span class="w"> </span>my_fpga_board<span class="w"> </span>my_bitstream.bit<span class="w"> </span><span class="c1"># Program to SRAM</span>
openFPGALoader<span class="w"> </span>-b<span class="w"> </span>my_fpga_board<span class="w"> </span>-f<span class="w"> </span>my_bitstream.bit<span class="w"> </span><span class="c1"># Program to flash</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>When a bitstream file is compatible with both memory load and FLASH write, the default behavior is to load bitstream
in memory.</p>
</div>
</section>
<section id="programming-an-standalone-fpga">
<h2>Programming an “standalone” FPGA<a class="headerlink" href="#programming-an-standalone-fpga" title="Link to this heading"></a></h2>
<p>If your FPGA doesnt come with a built-in programmer or if you prefer to use an external cable, you can specify a cable
to use from <a class="reference internal" href="../compatibility/cable.html#compatibility-cables"><span class="std std-ref">Cables</span></a> (or <code class="docutils literal notranslate"><span class="pre">openFPGALoader</span> <span class="pre">--list-cables</span></code>):</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>-c<span class="w"> </span>my_cable<span class="w"> </span>my_bitstream.bit<span class="w"> </span><span class="c1"># Program to SRAM</span>
openFPGALoader<span class="w"> </span>-c<span class="w"> </span>my_cable<span class="w"> </span>-f<span class="w"> </span>my_bitstream.bit<span class="w"> </span><span class="c1"># Program to flash</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>For some cable (like digilent adapters) signals from the converter are not just directly to the FPGA.
For this case, the <code class="docutils literal notranslate"><span class="pre">-c</span></code> must be added.</p>
</div>
<div class="admonition hint">
<p class="admonition-title">Hint</p>
<p>FTDI/FTDI-compatible cable users: the <code class="docutils literal notranslate"><span class="pre">-d</span></code> option lets you specify a specific FTDI device:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>-d<span class="w"> </span>/dev/ttyUSBX
</pre></div>
</div>
<p>When the <code class="docutils literal notranslate"><span class="pre">-d</span></code> option is not provided, openFPGALoader will opens the first FTDI adapter it finds.
Therefore it is preferable to use this flag if your computer is connected to multiple FTDI devices.</p>
</div>
</section>
<section id="troubleshooting">
<h2>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Link to this heading"></a></h2>
<p>Please refer to <a class="reference internal" href="troubleshooting.html#troubleshooting"><span class="std std-ref">Troubleshooting</span></a>.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../index.html" class="btn btn-neutral float-left" title="openFPGALoader: universal utility for programming FPGA" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="install.html" class="btn btn-neutral float-right" title="Installing openFPGALoader" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2019-2022, Gwenhael Goavec-Merou and contributors.</p>
</div>Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/buildthedocs/sphinx.theme">theme</a>
provided by <a href="https://buildthedocs.github.io">Build the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
+307
View File
@@ -0,0 +1,307 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Installing openFPGALoader &mdash; openFPGALoader: universal utility for programming FPGA latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Troubleshooting" href="troubleshooting.html" />
<link rel="prev" title="First steps with openFPGALoader" href="first-steps.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> openFPGALoader: universal utility for programming FPGA
</a>
<div class="version">
latest
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="first-steps.html">First steps with openFPGALoader</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installing openFPGALoader</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#linux">Linux</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#debian-ubuntu">Debian/Ubuntu</a></li>
<li class="toctree-l3"><a class="reference internal" href="#guix">Guix</a></li>
<li class="toctree-l3"><a class="reference internal" href="#arch-linux">Arch Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="#fedora">Fedora</a></li>
<li class="toctree-l3"><a class="reference internal" href="#from-source">From source</a></li>
<li class="toctree-l3"><a class="reference internal" href="#udev-rules">Udev rules</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#macos">macOS</a></li>
<li class="toctree-l2"><a class="reference internal" href="#windows">Windows</a></li>
<li class="toctree-l2"><a class="reference internal" href="#common">Common</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="advanced.html">Advanced usage of openFPGALoader</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Compatibility</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/fpga.html">FPGAs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/board.html">Boards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/cable.html">Cables</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Vendors</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../vendors/anlogic.html">Anlogic notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/colognechip.html">Cologne Chip notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/efinix.html">Efinix notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/gowin.html">Gowin notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/intel.html">Intel notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/lattice.html">Lattice notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/xilinx.html">Xilinx notes</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Development</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../todo.html">To Do</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">openFPGALoader: universal utility for programming FPGA</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Installing openFPGALoader</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/trabucayre/openFPGALoader/blob/master/doc/guide/install.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="installing-openfpgaloader">
<span id="install"></span><h1>Installing openFPGALoader<a class="headerlink" href="#installing-openfpgaloader" title="Link to this heading"></a></h1>
<section id="linux">
<h2>Linux<a class="headerlink" href="#linux" title="Link to this heading"></a></h2>
<section id="debian-ubuntu">
<h3>Debian/Ubuntu<a class="headerlink" href="#debian-ubuntu" title="Link to this heading"></a></h3>
<p>openFPGALoader is available in the default repositories:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>openfpgaloader
</pre></div>
</div>
</section>
<section id="guix">
<h3>Guix<a class="headerlink" href="#guix" title="Link to this heading"></a></h3>
<p>openFPGALoader is available in the default repositories:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>guix<span class="w"> </span>install<span class="w"> </span>openfpgaloader
</pre></div>
</div>
<p>To use openFPGALoader under GuixSystem without root privileges it is necessary to install the necessary udev rules. This can be done by extending <code class="docutils literal notranslate"><span class="pre">udev-service-type</span></code> in the <code class="docutils literal notranslate"><span class="pre">operating-system</span></code> configuration file with this package</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="o">(</span>udev-rules-service<span class="w"> </span><span class="s1">&#39;openfpgaloader openfpgaloader #:groups &#39;</span><span class="o">(</span><span class="se">\&quot;</span>plugdev<span class="se">\&quot;</span><span class="o">)</span>
</pre></div>
</div>
<p>Additionally, <code class="docutils literal notranslate"><span class="pre">plugdev</span></code> group should be registered in the <code class="docutils literal notranslate"><span class="pre">supplementary-groups</span></code> field of your <code class="docutils literal notranslate"><span class="pre">user-account``declaration.</span>&#160; <span class="pre">Refer</span> <span class="pre">to</span> <span class="pre">``Base</span> <span class="pre">Services</span></code> section in the manual for examples.</p>
</section>
<section id="arch-linux">
<h3>Arch Linux<a class="headerlink" href="#arch-linux" title="Link to this heading"></a></h3>
<p>openFPGALoader is available in the default repositories:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>pacman<span class="w"> </span>-S<span class="w"> </span>openfpgaloader
</pre></div>
</div>
<p>Alternatively, you could build from source. First: install required libraries:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>pacman<span class="w"> </span>-S<span class="w"> </span>git<span class="w"> </span>cmake<span class="w"> </span>make<span class="w"> </span>gcc<span class="w"> </span>pkgconf<span class="w"> </span>libftdi<span class="w"> </span>libusb<span class="w"> </span>zlib<span class="w"> </span>hidapi<span class="w"> </span>gzip
</pre></div>
</div>
<p>Build step is similar as Debian</p>
</section>
<section id="fedora">
<h3>Fedora<a class="headerlink" href="#fedora" title="Link to this heading"></a></h3>
<p>openFPGALoader is available as a Copr repository:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>dnf<span class="w"> </span>copr<span class="w"> </span><span class="nb">enable</span><span class="w"> </span>mobicarte/openFPGALoader
sudo<span class="w"> </span>dnf<span class="w"> </span>install<span class="w"> </span>openFPGALoader
</pre></div>
</div>
</section>
<section id="from-source">
<h3>From source<a class="headerlink" href="#from-source" title="Link to this heading"></a></h3>
<p>This application uses <code class="docutils literal notranslate"><span class="pre">libftdi1</span></code>, so this library must be installed (and, depending on the distribution, headers too):</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>git<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>gzip<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>libftdi1-2<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>libftdi1-dev<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>libhidapi-hidraw0<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>libhidapi-dev<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>libudev-dev<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>zlib1g-dev<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>cmake<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>pkg-config<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>make<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>g++
</pre></div>
</div>
<div class="admonition hint">
<p class="admonition-title">Hint</p>
<p><code class="docutils literal notranslate"><span class="pre">libudev-dev</span></code> is optional, may be replaced by <code class="docutils literal notranslate"><span class="pre">eudev-dev</span></code> or just not installed.</p>
</div>
<p>By default, <code class="docutils literal notranslate"><span class="pre">(e)udev</span></code> support is enabled (used to open a device by his <code class="docutils literal notranslate"><span class="pre">/dev/xx</span></code> node).
If you dont want this option, use:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>-DENABLE_UDEV<span class="o">=</span>OFF
</pre></div>
</div>
<p>By default, <code class="docutils literal notranslate"><span class="pre">cmsisdap</span></code> support is enabled (used for colorlight I5, I9).
If you dont want this option, use:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>-DENABLE_CMSISDAP<span class="o">=</span>OFF
</pre></div>
</div>
<p>Alternatively you can manually specify the location of <code class="docutils literal notranslate"><span class="pre">libusb</span></code> and <code class="docutils literal notranslate"><span class="pre">libftdi1</span></code>:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>-DUSE_PKGCONFIG<span class="o">=</span>OFF<span class="w"> </span><span class="se">\</span>
-DLIBUSB_LIBRARIES<span class="o">=</span>&lt;path_to_libusb&gt;<span class="w"> </span><span class="se">\</span>
-DLIBFTDI_LIBRARIES<span class="o">=</span>&lt;path_to_libftdi&gt;<span class="w"> </span><span class="se">\</span>
-DLIBFTDI_VERSION<span class="o">=</span>&lt;version&gt;<span class="w"> </span><span class="se">\</span>
-DCMAKE_CXX_FLAGS<span class="o">=</span><span class="s2">&quot;-I&lt;libusb_include_dir&gt; -I&lt;libftdi1_include_dir&gt;&quot;</span>
</pre></div>
</div>
<p>You may also need to add this if you see link errors between <code class="docutils literal notranslate"><span class="pre">libusb</span></code> and <code class="docutils literal notranslate"><span class="pre">pthread</span></code>:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>-DLINK_CMAKE_THREADS<span class="o">=</span>ON
</pre></div>
</div>
<p>By default, <code class="docutils literal notranslate"><span class="pre">libgpiod</span></code> support is enabled
If you dont want this option, use:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>-DENABLE_LIBGPIOD<span class="o">=</span>OFF
</pre></div>
</div>
<p>Additionaly you have to install <code class="docutils literal notranslate"><span class="pre">libgpiod</span></code></p>
<p>To build the app:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/trabucayre/openFPGALoader
<span class="nb">cd</span><span class="w"> </span>openFPGALoader
mkdir<span class="w"> </span>build
<span class="nb">cd</span><span class="w"> </span>build
cmake<span class="w"> </span>..<span class="w"> </span><span class="c1"># add -DBUILD_STATIC=ON to build a static version</span>
<span class="w"> </span><span class="c1"># add -DENABLE_UDEV=OFF to disable udev support and -d /dev/xxx</span>
<span class="w"> </span><span class="c1"># add -DENABLE_CMSISDAP=OFF to disable CMSIS DAP support</span>
cmake<span class="w"> </span>--build<span class="w"> </span>.
<span class="c1"># or</span>
make<span class="w"> </span>-j<span class="k">$(</span>nproc<span class="k">)</span>
</pre></div>
</div>
<p>To install</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>sudo<span class="w"> </span>make<span class="w"> </span>install
</pre></div>
</div>
<p>The default install path is <code class="docutils literal notranslate"><span class="pre">/usr/local</span></code>, to change it, use <code class="docutils literal notranslate"><span class="pre">-DCMAKE_INSTALL_PREFIX=myInstallDir</span></code> in cmake invokation.</p>
</section>
<section id="udev-rules">
<h3>Udev rules<a class="headerlink" href="#udev-rules" title="Link to this heading"></a></h3>
<p>By default, users have no access to converters.
A rule file (<a class="reference external" href="https://github.com/trabucayre/openFPGALoader/blob/master/99-openfpgaloader.rules">99-openfpgaloader.rules</a>) for <code class="docutils literal notranslate"><span class="pre">udev</span></code> is provided at the root directory
of this repository.
These rules set access right and group (<code class="docutils literal notranslate"><span class="pre">plugdev</span></code>) when a converter is plugged.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>cp<span class="w"> </span><span class="m">99</span>-openfpgaloader.rules<span class="w"> </span>/etc/udev/rules.d/
sudo<span class="w"> </span>udevadm<span class="w"> </span>control<span class="w"> </span>--reload-rules<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>sudo<span class="w"> </span>udevadm<span class="w"> </span>trigger<span class="w"> </span><span class="c1"># force udev to take new rule</span>
sudo<span class="w"> </span>usermod<span class="w"> </span>-a<span class="w"> </span><span class="nv">$USER</span><span class="w"> </span>-G<span class="w"> </span>plugdev<span class="w"> </span><span class="c1"># add user to plugdev group</span>
</pre></div>
</div>
<p>After that you need to unplug and replug your device.</p>
<div class="admonition hint">
<p class="admonition-title">Hint</p>
<p><code class="docutils literal notranslate"><span class="pre">usermod</span></code> is used to add <code class="docutils literal notranslate"><span class="pre">$USER</span></code> as a member of <code class="docutils literal notranslate"><span class="pre">plugdev</span></code> group.
However this update is not taken into account immediately: its required to
logout from current session and login again.
Check, by using <code class="docutils literal notranslate"><span class="pre">id</span> <span class="pre">$USER</span></code>, if <code class="docutils literal notranslate"><span class="pre">plugdev</span></code> is mentioned after <code class="docutils literal notranslate"><span class="pre">groups=</span></code>.
An alternate (and temporary) solution is to use <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">-</span> <span class="pre">$USER</span></code> to have
your user seen as a member of <code class="docutils literal notranslate"><span class="pre">plugdev</span></code> group (works only for the current terminal).</p>
</div>
</section>
</section>
<section id="macos">
<h2>macOS<a class="headerlink" href="#macos" title="Link to this heading"></a></h2>
<p>openFPGALoader is available as a <a class="reference external" href="https://brew.sh">Homebrew</a> formula:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>brew<span class="w"> </span>install<span class="w"> </span>openfpgaloader
</pre></div>
</div>
<p>Alternatively, if you want to build it by hand:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>brew<span class="w"> </span>install<span class="w"> </span>--only-dependencies<span class="w"> </span>openfpgaloader
brew<span class="w"> </span>install<span class="w"> </span>cmake<span class="w"> </span>pkg-config<span class="w"> </span>zlib<span class="w"> </span>gzip
git<span class="w"> </span>clone<span class="w"> </span>https://github.com/trabucayre/openFPGALoader
<span class="nb">cd</span><span class="w"> </span>openFPGALoader
mkdir<span class="w"> </span>build
<span class="nb">cd</span><span class="w"> </span>build
cmake<span class="w"> </span>..
make<span class="w"> </span>-j
</pre></div>
</div>
</section>
<section id="windows">
<h2>Windows<a class="headerlink" href="#windows" title="Link to this heading"></a></h2>
</section>
<section id="common">
<h2>Common<a class="headerlink" href="#common" title="Link to this heading"></a></h2>
<p>Bitstreams for <em>XC2C (coolrunner-II)</em> needs to be remapped using <code class="docutils literal notranslate"><span class="pre">.map</span></code> shipped with <em>ISE</em>.
<em>ISE</em> path is set at configure time using:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>-DISE_PATH<span class="o">=</span>/somewhere/Xilinx/ISE_VERS/
</pre></div>
</div>
<p>default: <code class="docutils literal notranslate"><span class="pre">/opt/Xilinx/14.7</span></code>.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="first-steps.html" class="btn btn-neutral float-left" title="First steps with openFPGALoader" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="troubleshooting.html" class="btn btn-neutral float-right" title="Troubleshooting" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2019-2022, Gwenhael Goavec-Merou and contributors.</p>
</div>Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/buildthedocs/sphinx.theme">theme</a>
provided by <a href="https://buildthedocs.github.io">Build the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
+175
View File
@@ -0,0 +1,175 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Troubleshooting &mdash; openFPGALoader: universal utility for programming FPGA latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Advanced usage of openFPGALoader" href="advanced.html" />
<link rel="prev" title="Installing openFPGALoader" href="install.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> openFPGALoader: universal utility for programming FPGA
</a>
<div class="version">
latest
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="first-steps.html">First steps with openFPGALoader</a></li>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installing openFPGALoader</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Troubleshooting</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#i-installed-openfpgaloader-but-it-says-command-not-found-when-i-try-to-launch-it">I installed openFPGALoader but it says <cite>command not found</cite> when I try to launch it</a></li>
<li class="toctree-l2"><a class="reference internal" href="#gowin-device-could-not-communicate-since-last-bitstream-flashed-issue-206">Gowin device could not communicate since last bitstream flashed. (issue #206)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#jtag-init-failed">JTAG init failed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#tang-primer-20k-program-slow-and-stucked-issue-250">Tang Primer 20k program slow and stucked (issue #250)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cannot-flash-tang-nano-20k-issue-251">Cannot flash Tang Nano 20k (issue #251)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cannot-flash-tang-nano-9k-issue-251">Cannot flash Tang Nano 9k (issue #251)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#unable-to-open-ftdi-device-4-usb-open-failed-issue-245">Unable to open FTDI device: -4 (usb_open() failed) (issue #245)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="advanced.html">Advanced usage of openFPGALoader</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Compatibility</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/fpga.html">FPGAs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/board.html">Boards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compatibility/cable.html">Cables</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Vendors</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../vendors/anlogic.html">Anlogic notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/colognechip.html">Cologne Chip notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/efinix.html">Efinix notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/gowin.html">Gowin notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/intel.html">Intel notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/lattice.html">Lattice notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vendors/xilinx.html">Xilinx notes</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Development</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../todo.html">To Do</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">openFPGALoader: universal utility for programming FPGA</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Troubleshooting</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/trabucayre/openFPGALoader/blob/master/doc/guide/troubleshooting.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="troubleshooting">
<span id="id1"></span><h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Link to this heading"></a></h1>
<section id="i-installed-openfpgaloader-but-it-says-command-not-found-when-i-try-to-launch-it">
<h2>I installed openFPGALoader but it says <cite>command not found</cite> when I try to launch it<a class="headerlink" href="#i-installed-openfpgaloader-but-it-says-command-not-found-when-i-try-to-launch-it" title="Link to this heading"></a></h2>
<p>The correct spelling of the program is <em>openFPGALoader</em> with FPGA and the “L” of “Loader” in uppercase.
Ensure the spelling of the program is correct.</p>
</section>
<section id="gowin-device-could-not-communicate-since-last-bitstream-flashed-issue-206">
<h2>Gowin device could not communicate since last bitstream flashed. (issue <a class="reference external" href="https://github.com/trabucayre/openFPGALoader/issues/206">#206</a>)<a class="headerlink" href="#gowin-device-could-not-communicate-since-last-bitstream-flashed-issue-206" title="Link to this heading"></a></h2>
<p>Gowins FPGA may fails to be detected if <strong>JTAGSEL_N</strong> (pin 08 for <em>GW1N-4K</em>) is used as a GPIO.
To recover you have to pull down this pin (before power up) to recover JTAG interface (<em>UG292 - JTAGSELL_N section</em>).</p>
</section>
<section id="jtag-init-failed">
<h2>JTAG init failed<a class="headerlink" href="#jtag-init-failed" title="Link to this heading"></a></h2>
<p>Avoid using USB hubs and connect it directly to your PC USB port.</p>
</section>
<section id="tang-primer-20k-program-slow-and-stucked-issue-250">
<h2>Tang Primer 20k program slow and stucked (issue <a class="reference external" href="https://github.com/trabucayre/openFPGALoader/issues/250">#250</a>)<a class="headerlink" href="#tang-primer-20k-program-slow-and-stucked-issue-250" title="Link to this heading"></a></h2>
<p>Check your openFPGALoader version:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>-V
</pre></div>
</div>
<p>If it is older than release then v0.9.0, install the most recent version (from commit <a class="reference external" href="https://github.com/trabucayre/openFPGALoader/commit/fe259fb78d185b3113661d04cd7efa9ae0232425">f5b89bff68a5e2147404a895c075773884077438</a> or later).</p>
</section>
<section id="cannot-flash-tang-nano-20k-issue-251">
<h2>Cannot flash Tang Nano 20k (issue <a class="reference external" href="https://github.com/trabucayre/openFPGALoader/issues/511">#251</a>)<a class="headerlink" href="#cannot-flash-tang-nano-20k-issue-251" title="Link to this heading"></a></h2>
<p>Some firmware version cannot be flashed on Linux-based systems. Version 2024122312 is such an example. It seems this version was not published on the <a class="reference external" href="https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/">SiPeed website</a>, however some boards sold have this firmware.</p>
<p>The cause of the problem is the debugger on the Tang Nano, specifically the firmware of this debugger. This firmware can be easily updated by following <a class="reference external" href="https://wiki.sipeed.com/hardware/en/tang/common-doc/update_debugger.html">these</a> steps.</p>
</section>
<section id="cannot-flash-tang-nano-9k-issue-251">
<h2>Cannot flash Tang Nano 9k (issue <a class="reference external" href="https://github.com/trabucayre/openFPGALoader/issues/251">#251</a>)<a class="headerlink" href="#cannot-flash-tang-nano-9k-issue-251" title="Link to this heading"></a></h2>
<p>This is a device issue, erase its Embedded Flash using Official GoWin Programmer (preferentially in Windows) and SRAM too, then you can use openFPGALoader again.</p>
</section>
<section id="unable-to-open-ftdi-device-4-usb-open-failed-issue-245">
<h2>Unable to open FTDI device: -4 (usb_open() failed) (issue <a class="reference external" href="https://github.com/trabucayre/openFPGALoader/issues/245">#245</a>)<a class="headerlink" href="#unable-to-open-ftdi-device-4-usb-open-failed-issue-245" title="Link to this heading"></a></h2>
<p>Edit your <cite>/etc/udev/rules.d/99-ftdi.rules</cite> file exchanging your programming device permissions.</p>
<p>For more information, check the udev section from <a class="reference external" href="install.rst">this guide</a></p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="install.html" class="btn btn-neutral float-left" title="Installing openFPGALoader" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="advanced.html" class="btn btn-neutral float-right" title="Advanced usage of openFPGALoader" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2019-2022, Gwenhael Goavec-Merou and contributors.</p>
</div>Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/buildthedocs/sphinx.theme">theme</a>
provided by <a href="https://buildthedocs.github.io">Build the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>