5 stable releases

1.3.0 Apr 20, 2020
1.2.0 Jun 14, 2019
1.1.1 Jun 13, 2019
1.0.0 Jun 13, 2019

#1173 in Hardware support

Apache-2.0 OR MIT

31KB
622 lines

FFP Control Software

The control software for FFP runs on your computer and uses the FFP hardware to program an FPGA or SPI flash. It is written in Rust.

Pre-built Binaries

Pre-built binaries are available for Windows and Linux on the Releases page. You must have libusb installed or available on your system.

Build Requirements

  • You must have a working Rust compiler installed. Visit rustup.rs to install Rust.

  • You'll need to set up drivers or permissions to access the USB device, see the drivers page for more details.

Building

cargo build --release

You can either run the ffp executable directly from target/release/ffp, or install it for your user using cargo install --path ..

Installing

FFP software can be installed directly using Cargo:

cargo install ffp

Usage

Run ffp help for detailed usage. Commonly used commands:

  • ffp fpga program bitstream.bin
  • ffp fpga reset
  • ffp fpga power on
  • ffp flash id
  • ffp flash program bitstream.bin

Python Alternative

The prototype for this software was written as a Python script which is also available (prog.py).

Cross-Compiling for Windows from Linux

From a stock Ubuntu 18.04 image, the following commands generate an ffp.exe suitable for 64-bit Windows:

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# (accept defaults)
$ source $HOME/.cargo/env
$ cd /tmp
$ rustup target add x86_64-pc-windows-gnu
$ apt install -y p7zip-full build-essential gcc-mingw-w64-x86-64 libusb-1.0 pkg-config
$ wget https://github.com/libusb/libusb/releases/download/v1.0.23/libusb-1.0.23.7z
$ 7z x libusb-1.0.23.7z
$ git clone https://github.com/adamgreig/ffp
$ cd ffp/software
$ mkdir .cargo
$ echo -e '[target.x86_64-pc-windows-gnu]\nlinker = "x86_64-w64-mingw32-gcc"\nrustflags = [ "-L", "/tmp/MinGW64/dll/"]' > .cargo/config
$ env PKG_CONFIG_ALLOW_CROSS=1 cargo build --release --target x86_64-pc-windows-gnu

The resulting binary is target/x86_64-pc-windows-gnu/release/ffp.exe. It needs the libusb-1.0.dll file from /tmp/MinGW64/dll/ available on the Windows system, either in the same directory as ffp.exe or installed system-wide.

Dependencies

~4.5–6.5MB
~113K SLoC