2026-02-12 17:26:28 +01:00
<!DOCTYPE html>
2026-02-16 11:10:48 +01:00
< html lang = "en" data-content_root = "../" >
< head >
< meta charset = "utf-8" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" / > < meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > Advanced usage of openFPGALoader — openFPGALoader: universal utility for programming FPGA latest documentation< / title >
< link rel = "stylesheet" type = "text/css" href = "../_static/pygments.css?v=5ecbeea2" / >
< link rel = "stylesheet" type = "text/css" href = "../_static/basic.css?v=b08954a9" / >
< link rel = "stylesheet" type = "text/css" href = "../_static/alabaster.css?v=27fed22d" / >
< script src = "../_static/documentation_options.js?v=c6e86fd7" > < / script >
< script src = "../_static/doctools.js?v=fd6eb6e6" > < / script >
< script src = "../_static/sphinx_highlight.js?v=6ffebe34" > < / script >
2026-02-12 17:26:28 +01:00
< 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" / >
2026-02-16 15:31:48 +01:00
< link rel = "prev" title = "Troubleshooting" href = "troubleshooting.html" / >
2026-02-16 11:10:48 +01:00
< link rel = "stylesheet" href = "../_static/custom.css" type = "text/css" / >
2026-02-12 17:26:28 +01:00
2026-02-16 11:10:48 +01:00
2026-02-12 17:26:28 +01:00
2026-02-16 11:10:48 +01:00
< / head > < body >
2026-02-12 17:26:28 +01:00
2026-02-16 11:10:48 +01:00
< div class = "document" >
< div class = "documentwrapper" >
< div class = "bodywrapper" >
2026-02-12 17:26:28 +01:00
2026-02-16 11:10:48 +01:00
< div class = "body" role = "main" >
2026-02-12 17:26:28 +01:00
< 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 TDO’ s 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 > It’ s 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 > < < 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 < = id < = 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 > it’ s 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 >
2026-02-16 11:10:48 +01:00
< / div >
< / div >
< div class = "sphinxsidebar" role = "navigation" aria-label = "Main" >
< div class = "sphinxsidebarwrapper" >
< h1 class = "logo" > < a href = "../index.html" > openFPGALoader: universal utility for programming FPGA< / a > < / h1 >
< search id = "searchbox" style = "display: none" role = "search" >
< div class = "searchformwrapper" >
< form class = "search" action = "../search.html" method = "get" >
< input type = "text" name = "q" aria-labelledby = "searchlabel" autocomplete = "off" autocorrect = "off" autocapitalize = "off" spellcheck = "false" placeholder = "Search" / >
< input type = "submit" value = "Go" / >
< / form >
2026-02-12 17:26:28 +01:00
< / div >
2026-02-16 11:10:48 +01:00
< / search >
< script > document . getElementById ( 'searchbox' ) . style . display = "block" < / script > < h3 > Navigation< / h3 >
< 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 >
2026-02-16 15:31:48 +01:00
< li class = "toctree-l1" > < a class = "reference internal" href = "troubleshooting.html" > Troubleshooting< / a > < / li >
2026-02-16 11:10:48 +01:00
< 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 TDO’ s 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 class = "relations" >
< h3 > Related Topics< / h3 >
< ul >
< li > < a href = "../index.html" > Documentation overview< / a > < ul >
2026-02-16 15:31:48 +01:00
< li > Previous: < a href = "troubleshooting.html" title = "previous chapter" > Troubleshooting< / a > < / li >
2026-02-16 11:10:48 +01:00
< li > Next: < a href = "../compatibility/fpga.html" title = "next chapter" > FPGAs< / a > < / li >
< / ul > < / li >
< / ul >
< / div >
2026-02-12 17:26:28 +01:00
< / div >
< / div >
2026-02-16 11:10:48 +01:00
< div class = "clearer" > < / div >
< / div >
< div class = "footer" >
© 2019-2022, Gwenhael Goavec-Merou and contributors.
|
Powered by < a href = "https://www.sphinx-doc.org/" > Sphinx 9.1.0< / a >
& < a href = "https://alabaster.readthedocs.io" > Alabaster 1.0.0< / a >
|
< a href = "../_sources/guide/advanced.rst.txt"
rel="nofollow">Page source< / a >
< / div >
2026-02-12 17:26:28 +01:00
2026-02-16 11:10:48 +01:00
< / body >
2026-02-12 17:26:28 +01:00
< / html >