This repository contains the Dockerfiles and related assets used in Maia SDR. Docker images are published as GHCR packages.
ghcr.io/maia-sdr/maia-sdr-devel contains all the development tools used in Maia SDR. These are:
- Amaranth.
- The OSS CAD suite, which includes Yosys.
- Icarus Verilog.
- cocotb.
- The Rust toolchain for
armv7-unknown-linux-gnueabihf
andwasm32-unknown-unknown
. - wasm-pack.
- Miscellaneous tools used to build the Pluto SDR firmware image (buildroot requirements, etc.)
Additionally, the image has all the requirements to run Vivado 2022.2, which is needed to build the FPGA bitstream. Vivado needs to be installed manually on a volume as described below.
The docker image can be run as follows:
docker run --rm --net host -e DISPLAY=$DISPLAY -e TERM \
--name=maia-sdr-devel --hostname=maia-sdr-devel \
-v vivado2022_2_volume:/opt/Xilinx -v maia_sdr_devel_home:/home \
-v $HOME:/hdl \
-it ghcr.io/maia-sdr/maia-sdr-devel
This assumes that Vivado has been installed to a Docker volume
vivado2022_2_volume
and uses a volume to hold the home directory (in order to
have persistent bash history, etc.). It mounts the user home directory into
/hdl
, so that the Maia SDR repositories working copies can be accessed
(different paths can be used here.).
The home of the docker container user should contain the following in .bashrc
:
source /opt/Xilinx/Vivado/2022.2/settings64.sh
source /opt/rust/env
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin/:/usr/bin:/sbin:/bin:/opt/gcc-arm-linux-gnueabi/bin:$PATH:/opt/oss-cad-suite/bin
In order to install Vivado to the volume, the installer can be run as root. A root bash session can be launched in the container by doing
docker exec -u 0 -it maia-sdr-devel /bin/bash
From this session, it is possible to run the Vivado installer and choose
/opt/Xilinx
as the installation path.
ghcr.io/maia-sdr/cross-armv7-unknown-linux-gnueabihf-maia-sdr
can be used to build
maia-httpd with
cross. It is a cross Docker image that uses
the same buildroot Linaro toolchain that is used to build the ADALM Pluto
firmware image. It contains some packages required to build
pm-remez, including the gfortran
cross-compiler from the buildroot Linaro toolchain.