<spanid="first-steps"></span><h1>First steps with openFPGALoader<aclass="headerlink"href="#first-steps-with-openfpgaloader"title="Link to this heading">¶</a></h1>
<sectionid="install">
<h2>Install<aclass="headerlink"href="#install"title="Link to this heading">¶</a></h2>
<p>Packages are available for Linux distributions, Windows (MSYS2) and macOS:</p>
<p>More instructions for other installation scenarios are available in <aclass="reference internal"href="install.html#install"><spanclass="std std-ref">Installing openFPGALoader</span></a>.</p>
</section>
<sectionid="programming-a-development-board">
<h2>Programming a development board<aclass="headerlink"href="#programming-a-development-board"title="Link to this heading">¶</a></h2>
<p>Just simply replace <codeclass="docutils literal notranslate"><spanclass="pre">my_fpga_board</span></code> with any FPGA board from <aclass="reference internal"href="../compatibility/board.html#compatibility-boards"><spanclass="std std-ref">Boards</span></a>
(or <codeclass="docutils literal notranslate"><spanclass="pre">openFPGALoader</span><spanclass="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>
<divclass="highlight-bash notranslate"><divclass="highlight"><pre><span></span>openFPGALoader<spanclass="w"></span>-b<spanclass="w"></span>my_fpga_board<spanclass="w"></span>my_bitstream.bit<spanclass="w"></span><spanclass="c1"># Program to SRAM</span>
openFPGALoader<spanclass="w"></span>-b<spanclass="w"></span>my_fpga_board<spanclass="w"></span>-f<spanclass="w"></span>my_bitstream.bit<spanclass="w"></span><spanclass="c1"># Program to flash</span>
</pre></div>
</div>
<divclass="admonition note">
<pclass="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>
<sectionid="programming-an-standalone-fpga">
<h2>Programming an “standalone” FPGA<aclass="headerlink"href="#programming-an-standalone-fpga"title="Link to this heading">¶</a></h2>
<p>If your FPGA doesn’t come with a built-in programmer or if you prefer to use an external cable, you can specify a cable
to use from <aclass="reference internal"href="../compatibility/cable.html#compatibility-cables"><spanclass="std std-ref">Cables</span></a> (or <codeclass="docutils literal notranslate"><spanclass="pre">openFPGALoader</span><spanclass="pre">--list-cables</span></code>):</p>
<divclass="highlight-bash notranslate"><divclass="highlight"><pre><span></span>openFPGALoader<spanclass="w"></span>-c<spanclass="w"></span>my_cable<spanclass="w"></span>my_bitstream.bit<spanclass="w"></span><spanclass="c1"># Program to SRAM</span>
openFPGALoader<spanclass="w"></span>-c<spanclass="w"></span>my_cable<spanclass="w"></span>-f<spanclass="w"></span>my_bitstream.bit<spanclass="w"></span><spanclass="c1"># Program to flash</span>
</pre></div>
</div>
<divclass="admonition note">
<pclass="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 <codeclass="docutils literal notranslate"><spanclass="pre">-c</span></code> must be added.</p>
</div>
<divclass="admonition hint">
<pclass="admonition-title">Hint</p>
<p>FTDI/FTDI-compatible cable users: the <codeclass="docutils literal notranslate"><spanclass="pre">-d</span></code> option lets you specify a specific FTDI device:</p>
<p>When the <codeclass="docutils literal notranslate"><spanclass="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>
<sectionid="troubleshooting">
<h2>Troubleshooting<aclass="headerlink"href="#troubleshooting"title="Link to this heading">¶</a></h2>