Universal utility for programming FPGA
Go to file
Petr Nechaev 1bbe448f3a Limit automatic read burst length to 64K
Reading of very large binaries (e.g. 32 MB) can cause stack overflow.
Put a reasonable limit on read burst length.
2022-10-16 15:44:33 +03:00
.github/workflows .github/workflows/Test.yml: Add CI for macOS 2022-02-24 21:15:20 +01:00
doc Update doc/boards.yml. 2022-09-30 22:27:23 +02:00
scripts/msys2 scripts/msys2/PKGBUILD: try to fix msys2 build failure 2022-02-26 16:52:10 +01:00
spiOverJtag Add support for xc7s_csga225 and the Digilent CMOD S7 board. 2022-09-30 22:27:20 +02:00
src Limit automatic read burst length to 64K 2022-10-16 15:44:33 +03:00
.btd.yml ci: use BuildTheDocs 2021-11-28 10:24:06 +01:00
.gitignore doc/cable: move to yml 2022-02-20 15:47:35 +01:00
99-openfpgaloader.rules 99-openfpgaloader: add NXP LCP-Link2 2022-09-06 06:38:03 +02:00
CMakeLists.txt src/libusb_ll: libusb wrapper (currently limited to scan device), src/main: add scan-usb option 2022-10-15 22:28:06 +02:00
LICENSE move to APACHE-2.0 license 2021-06-26 15:24:07 +02:00
README.md src/libusb_ll: libusb wrapper (currently limited to scan device), src/main: add scan-usb option 2022-10-15 22:28:06 +02:00

README.md

openFPGALoader

'Test' workflow Status

First stepsInstallTroubleshootingAdvanced usage

Universal utility for programming FPGAs. Compatible with many boards, cables and FPGA from major manufacturers (Xilinx, Altera/Intel, Lattice, Gowin, Efinix, Anlogic, Cologne Chip). openFPGALoader works on Linux, Windows and macOS.

Not sure if your hardware is supported? Check the hardware compatibility lists:

Also checkout the vendor-specific documentation: Anlogic, Cologne Chip, Efinix, Gowin, Intel/Altera, Lattice, Xilinx.

OpenFPGALoader has a dedicated channel: #openFPGALoader at libera.chat.

Quick Usage

arty in the example below is one of the many FPGA board configurations listed here.

openFPGALoader -b arty arty_bitstream.bit # Loading in SRAM
openFPGALoader -b arty -f arty_bitstream.bit # Writing in flash

You can also specify a JTAG cable model (complete list here) instead of the board model:

openFPGALoader -c cmsisdap fpga_bitstream.bit

Usage

Usage: ./openFPGALoader [OPTION...] BIT_FILE
openFPGALoader -- a program to flash FPGA

      --altsetting arg      DFU interface altsetting (only for DFU mode)
      --bitstream arg       bitstream
  -b, --board arg           board name, may be used instead of cable
  -c, --cable arg           jtag interface
      --invert-read-edge    JTAG mode / FTDI: read on negative edge instead
                            of positive
      --vid arg             probe Vendor ID
      --pid arg             probe Product ID
      --cable-index arg     probe index (FTDI and cmsisDAP)
      --busdev-num arg      select a probe by it bus and device number
                            (bus_num:device_addr)
      --ftdi-serial arg     FTDI chip serial number
      --ftdi-channel arg    FTDI chip channel number (channels 0-3 map to
                            A-D)
  -d, --device arg          device to use (/dev/ttyUSBx)
      --detect              detect FPGA
      --dfu                 DFU mode
      --dump-flash          Dump flash mode
      --external-flash      select ext flash for device with internal and
                            external storage
      --file-size arg       provides size in Byte to dump, must be used with
                            dump-flash
      --file-type arg       provides file type instead of let's deduced by
                            using extension
      --flash-sector arg    flash sector (Lattice parts only)
      --fpga-part arg       fpga model flavor + package
      --freq arg            jtag frequency (Hz)
  -f, --write-flash         write bitstream in flash (default: false)
      --index-chain arg     device index in JTAG-chain
      --ip arg              IP address (only for XVC client)
      --list-boards         list all supported boards
      --list-cables         list all supported cables
      --list-fpga           list all supported FPGA
  -m, --write-sram          write bitstream in SRAM (default: true)
  -o, --offset arg          start offset in EEPROM
      --pins arg            pin config TDI:TDO:TCK:TMS
      --probe-firmware arg  firmware for JTAG probe (usbBlasterII)
      --protect-flash arg   protect SPI flash area
      --quiet               Produce quiet output (no progress bar)
  -r, --reset               reset FPGA after operations
      --scan-usb            scan USB to display connected probes
      --skip-load-bridge    skip writing bridge to SRAM when in write-flash
                            mode
      --skip-reset          skip resetting the device when in write-flash
                            mode
      --spi                 SPI mode (only for FTDI in serial mode)
      --unprotect-flash     Unprotect flash blocks
  -v, --verbose             Produce verbose output
      --verbose-level arg   verbose level -1: quiet, 0: normal, 1:verbose,
                            2:debug
  -h, --help                Give this help list
      --verify              Verify write operation (SPI Flash only)
      --xvc                 Xilinx Virtual Cable Functions
      --port arg            Xilinx Virtual Cable Port (default 3721)
      --mcufw arg           Microcontroller firmware
      --conmcu              Connect JTAG to MCU
  -V, --Version             Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to <gwenhael.goavec-merou@trabucayre.com>.