Building the image is pretty well documented on ADI's wiki about the pluto :
So this document will only describe the broad lines and deviations from the process described in those links.
Xilinx Vivado 2017.4.1 is required to build the image. We will also use the Vivado hardfloat toolchain rather than the default one (documentation for this can be found in the
README.md of the
Required environment variables :
export CROSS_COMPILE=arm-linux-gnueabihf- export PATH=$PATH:/opt/Xilinx/SDK/2017.4/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/ export VIVADO_SETTINGS=/opt/Xilinx/Vivado/2017.4/settings64.sh
DO NOT source the vivado settings (
settings64.sh ) directly into your shell. This will break the build ! The build process will use the environment variable
VIVADO_SETTINGS to manually setup the required envirtonment whenever it's needed.
The build process also needs X running (because Xilinx's SDK needs X). But no interaction is needed, so running Xvfb in the background and manually setting up
DISPLAY works fine to build on headless servers.
Xvfb & export DISPLAY=:0
First step is to clone them from ADI :
git clone --recursive https://github.com/analogdevicesinc/plutosdr-fw.git cd plutosdr-fw
Then apply the patches in this repository to the appropriate submodules :
patch-hdl-add-signal-delay-datapath.diff: This is the main patch add custom logic in the datapath of the FPGA
patch-buildroot-vivado-crosscompiler.diff: This updates the buildroot configuration to be compatible with the arm-linux-gnueabihf toolchain.
patch-buildroot-use-ecm-instead-of-rndis.diff: This replaces the propriatary RNDIS mode with the standard CDC ECM mode for network gadget.
patch-buildroot-add-ssh-key-example.diff: Example patch to add SSH key directly into the image for easy access
Finally you can copy the latest version of the
sig_delay.v files from this repository (in
If everything above went well, just type
make in the
plutosdr-fw directory and it will build everything ...
Building Control Software
To build the control software, you need the 'SDK' / 'SYSROOT' that will be built as part of building the image above. It can be found under
Then in the
sw directory of this repository, simply type
make while specifying the sysroot to use:
This should result in a
To include it directly on the image, you can copy it to
plutosdr-fw/buildroot/output/target/usr/sbin/ and run the
plutosdr-fw again to update the image.