So far on our journey of exploring the Alveo V80 we have examined the hardware and software elements necessary for creating the AVED which we can use as a base to build upon.
Of course, the AVED applications running in the Alveo V80 is only half of the application as we need to be able to communicate and control with the Alveo V80 from our host.
To do this we need to use the AMD PCI Express Multi Queue DMA (QDMA), this provides high performance DMA access to the Alveo V80 using PCI Express.
We can obtain the Linux driver from the AMD github, with associated documentation which explains split between the User Space and Kernel Space.
The QDMA driver is split into four main elements
QDMA HW Access - This is the lowest level of the driver, providing register access, resource management and mailbox handling.
Lidqdma – this provides a set of APIs for QDMA IP configuration, management and transfers. Libqdma leverages the QDMA HW access APIs.
Driver Interface – This provides a Linux PCI driver interface and character driver interface to enable the user space access. The driver interface leverages the APIs provided by libqdma.
User Space Applications - Several example applications are provided which demonstrate host to card transfer, card to host transfer, along with performance demonstrations.
To ensure our host system is capable of supporting the QDMA drivers it should comply with the systems requirements.
In the remainder of this article we will walk through building and installing the QDMA drivers. The first thing we need to do is ensure we have necessary dependencies, in this case we need libaio.
We can install it with the following command
sudo apt-get install libaio libaio-devel
The next step is to clone the Xilinx DMA drivers into out file system
Before we can build the driver we need to add in the V80 PF PCIe ID add the line below to the end of the PF section of the file PCI_ids.h within the source code.
{ PCI_DEVICE(0x10ee, 0x50b5), }, /** V80 */
We can then build the driver and applications using the command
make clean && make
This will run through and build the driver, and the applications we can use to operate with the Alveo V80. Just as we did with the AVED and using that as a starting point for development of the Vivado design, we can also use the software applications also as starting points or indicators.
However, the documentation available provides example of how to create system level configurations, allocate queues and instantiate virtual functions. Long with providing documentation for each of the six provided applications.
Having examined how we can develop the AVED for the Alveo V80 and now install the QDMA drivers for Linux, in our final blog looking at the V80 we will be looking at the different applications to which we can deploy the Alveo V80.
Workshops and Webinars
If you enjoyed the blog why not take a look at the free webinars, workshops and training courses we have created over the years. Highlights include
Professional PYNQ Learn how to use PYNQ in your developments
Introduction to Vivado learn how to use AMD Vivado
Ultra96, MiniZed & ZU1 three day course looking at HW, SW and PetaLinux
Arty Z7-20 Class looking at HW, SW and PetaLinux
Mastering MicroBlaze learn how to create MicroBlaze solutions
HLS Hero Workshop learn how to create High Level Synthesis based solutions
Perfecting Petalinux learn how to create and work with PetaLinux OS
Boards
Get an Adiuvo development board
Adiuvo Spartan 7 / RPi 2040 Embedded System Development Board
Embedded System Book
Do you want to know more about designing embedded systems from scratch? Check out our book on creating embedded systems. This book will walk you through all the stages of requirements, architecture, component selection, schematics, layout, and FPGA / software design. We designed and manufactured the board at the heart of the book! The schematics and layout are available in Altium here Learn more about the board (see previous blogs on Bring up, DDR validation, USB, Sensors) and view the schematics here.
Sponsored by AMD
Comments