Environment Setup¶
FPGA rebuilds and the driver, kernel, and software builds all run on the same host toolchain. Set it up once, then follow the workflow you need:
- Software Development Workflow for rebuilding the driver,
sdrctl, and full SD images. - FPGA Development for building and modifying the FPGA design.
- Building SD Images for assembling a card from scratch.
Each workflow has a few extras of its own, such as the FPGA's Viterbi license.
For the exact toolchain, kernel, and image versions these builds expect, see Versions this wiki targets.
Xilinx toolchain (Vivado + Vitis)¶
- Vivado 2022.2 with Vitis installed (you need
.../Vitis, notVitis_HLS). If Vitis is missing, add it via Xilinx Design Tools → Add Design Tools for Devices 2022.2. - The driver is cross-compiled with the kernel toolchain, so a Vivado/Vitis install is required for both driver and FPGA builds.
- The installer download is tens of GB and requires a free AMD/Xilinx account from the Xilinx website.
Which Vivado version?
The software side of openwifi historically referenced Vivado 2021.1, while the current openwifi-hw build targets 2022.2. Match the version the repo README states at the time you build.
Host OS and packages¶
- Ubuntu 18.04/20.04/22.04 LTS are the tested versions. Ubuntu 24.04 is untested but works with the
libtinfo5workaround below. libtinfo5for Vivado. On Ubuntu 24.04 the defaultlibtinfo6won't do, so installlibtinfo5manually:
wget http://archive.ubuntu.com/ubuntu/pool/main/n/ncurses/libtinfo5_6.1-1ubuntu1.18.04.1_amd64.deb
sudo dpkg -i ./libtinfo5_6.1-1ubuntu1.18.04.1_amd64.deb
-
Windows is not supported as a build host: see Windows for development? in the FAQ.
-
Driver / kernel build packages:
sudo apt install flex bison libssl-dev device-tree-compiler u-boot-tools -y
Environment variables¶
Most host-side build steps expect these (use absolute paths):
export XILINX_DIR=/opt/Xilinx # dir containing Vitis/, Vivado/, etc. (all builds)
export BOARD_NAME=zed_fmcs2 # your board (all builds)
export OPENWIFI_HW_IMG_DIR=/path/to/openwifi-hw-img # FPGA image + full SD-image builds
export ARCH_BIT=32 # 32 for Zynq-7000, 64 for Zynq UltraScale+ (e.g. ZCU102) (software builds)