Airstack Firmware

This document describes how to recover the FPGA firmware flash memory on the AIR-T. This should only be used if the standard upgrade procedure fails.


Firmware Installation

This method is to be used if your AIR-T's firmware is able to be reprogrammed using the load_flash utility but is not compatible with your AirStack software. If you are in a state where the load_flash utility fails, you will need to use Recovery Method below to image the FPGA with the tools to run load_flash.

Prerequisites

To flash the firmware on the AIR-T you will need:

Firmware Flash Procedure

  1. If you have not already, follow the AirStack Upgrade Procedure or the AirStack Imaging Procedure to install AirStack Debian (.deb) packages or operating system images, respectively.

  2. Use the load_flash utility (already installed in AirStack) pointing directly to the FPGA .bit file installed into /lib/firmware. Use the table below that corresponds to your AIR-T model. You can obtain your AIR-T model using the command SoapySDRUtil --find and looking at the "hardware" result.

    AIR-T Model FPGA Model Flash Command
    AIR7101 XC7A75T load_flash /lib/firmware/AirStack_Firmware_xc7a75t_v*.bit
    AIR7201 XC7A200T load_flash /lib/firmware/AirStack_Firmware_xc7a200t_v*.bit
  3. At this point the new firmware has been loaded into the FPGA's flash memory but the FPGA is still using the old firmware. In order to reload the FPGA with the new firmware image, you must do one of the following:

    • Shutdown, unplug the power supply to the AIR-T, and plug it back in.
    • Run the fpga_reload which will safely take the FPGA off the PCIe bus, reload the flash memory into the FPGA, then place the FPGA back on the PCIe bus. Note that some AIR-T models will require the placement of a jumper wire on the AIR-T to allow for the FPGA to reload safely prior to running this command. See the procedure here: Remote Firmware Upgrades.
  4. After reboot run the following to verify the upgrade:

    $ SoapySDRUtil --find

    which should return a found AIR-T device:

Found device 0
  driver = SoapyAIRT
  driver_version = X.X.X-X
  firmware_version = AirStack X.X.X
  fpga_driver_version = X.X.X-X
  hardware = AIRXXXX
  rf_api_version = X.X.X-X
  url = https://www.deepwavedigital.com
  vendor = Deepwave Digital, Inc.


Firmware Recovery Method - Xilinx Vivado and USB/JTAG

This method will return the AIR-T's FPGA to a state that is able to be programmed using the load_flash utility. Once this procedure it complete, the FPGA will ONLY contain the firmware necessary to be programmed by the Deepwave utilities and will NOT contain any firmware for normal SDR operation.

Prerequisites

To flash the firmware on the AIR-T you will need:

  • A host machine running Linux*
  • An AIR-T
  • firmware_recovery.tar.gz downloaded from the Developer Portal at www.deepwavedigital.com
  • A USB micro cable

  • It is possible to flash the AIR-T firmware with Vivado on any operating system supported by Vivado, however this bash script only runs on Linux.*

Linux Host Machine Requirements

We recommend running Ubuntu 16.04+ with the software outlined below installed.

Vivado for Linux

To flash the FPGA on the AIR-T, Vivado is currently required to be installed on the host. You may install full Vivado if you will be developing FPGA code. If you are just using Vivado to flash the FPGA, we recommend installing the lighter version, Vivado Lab Edition:

The flash_firmware install script will look for the Vivado Lab executable in:

/opt/Xilinx/Vivado_Lab/2017.4/bin/vivado_lab

which is the default installation location. If you choose to install Vivado in a different location, you must let the script know by passing the -v parameter.

Digilent JTAG Drivers for Linux

This is the driver for Linux to communicate with the USB JTAG module on the AIR-T. To set this up, install the following drivers on the host:

AIR-T Hardware Connections

USB to USB Micro Cable

The FPGA on the AIR-T requires a USB connection to the host from the JTAG module (U23). If the AIR-T is in its enclosure, you will need to remove the cover to get access to the JTAG module. If you are having trouble plugging in the USB micro cable to U23, you may either remove the board from the enclosure or use an angled USB micro cable, shown as the StarTech 90 degree Micro USB Cable - A to Down Angle Micro B.

Figure 1: Image of the AIR-T and the relevant interfaces highlighted.

Firmware Flashing Utility

The flash_firmware script has a help menu that defines the input commands:

$ ./flash_firmware -h
This script will flash the firmware on the AIR-T.
Author: Deepwave Digital, Inc.

Usage: sudo ./flash_firmware [options]
Program Options:
  -h              Display this help message
  -a [path]       Path to Airstack files
  -v [file]       Vivado / Vivado Lab executable

Note: if you have installed Vivado in a non-default location, you must pass the location to the script using the -v option.

Firmware Flashing Procedure

  1. Install Required software on the host computer
  2. On the host computer extract the firmware_recovery.tar.gz archive containing the flash_firmware script:

    $ tar xvf firmware_recovery.tar.gz

  3. Set the FPGA Programming DIP Switch to 001 as shown in the image

  4. Connect a USB cable between the host and the FPGA Programming JTAG Module - U23 as shown in Figure 1.
  5. Boot the AIR-T so that power is provided to the FPGA.
  6. Run the flash_firmware script on the host machine:

    $ sudo ./flash_firmware -v <HARDWARE_VERSION>

    where the HARDWARE_VERSION is the subfolder that is relevant to your AIR-T hardware.

  7. You should now be able to run the load_flash based steps from the "Firmware Installation" procedure above.


Last update: October 23, 2020