
Explore hands-on workflows to deploy Linux with memory management and dma operations. Learn to control axidma, cdma, and vdma across C and Python environments, integrating drivers and memory management.
Explore code structure, build automation, and quick-start workflows; deploy Linux for zinc 7000 and zinc ultrascale+ with Buildroot and Whitest Eddie, and learn two main Xilinx memory-management approaches for DMA.
Perform a hands-on demo of Xilinx DMA IP cores—AXIDMA, CDMA, and VDMA—on Linux, illustrating scatter mode and scatter gather mode, memory allocation, and C and Python data transfer and verification.
Follow the workshop workflow to build and test Xilinx dma ip cores on linux, using TCL scripts, build root automation, and a unified makefile.
Deploy linux on ultrascale+ using an out-of-tree buildroot workflow, generating fsb bitstream, pmu, device tree, and arm trusted firmware, orchestrated with a python autopilot and vitis automation.
Learn Linux memory management for DMA operations by handling user space to kernel space access, mapping physical to virtual addresses, and choosing between device tree reservations and semi allocator buffers.
Explore AXIDMA in simple mode, a register-based IP core with read and write channels and minimal configuration; transactions are capped at 64 MB, with the CPU controlling data transfer.
Explore axidma scatter-gather mode, configuring a descriptor list and stream write/read channels for high-throughput transfers with minimal CPU interaction.
Explore the cdma ip core for memory-to-memory transfers in simple mode, using a driver and test application that initialize, start, and verify data via register maps.
Learn to transfer high-resolution 2D video frames between memory and streaming pipelines with the AXI VDMA, using a Linux driver to initialize, start channels, and verify transfers.
Learn to integrate C drivers into Python using swig, creating a Python module and shared library, with numpy-based buffers and interface helpers for memory operations.
This hands-on workshop is designed for embedded engineers, FPGA developers, and Linux system integrators who want to master the use of Xilinx DMA IP cores on Zynq-7000 and Zynq Ultrascale+ platforms. Through practical demonstrations and detailed walkthroughs, you’ll learn how to build and deploy a complete DMA-driven data transfer pipeline using Buildroot Out-of-tree generated Linux and Vitis 2024.2 IDE generated boot components.
The course begins with the setup and structure of all required source files, drivers, and automation build scripts. You’ll gain a clear understanding of the development workflow, from hardware design in Vivado to driver development in C and user-level testing in Python via SWIG bindings.
You’ll explore four major Xilinx DMA cores:
AXI DMA (Simple Mode)
AXI DMA (Scatter-Gather Mode)
AXI Central DMA (CDMA)
AXI Video DMA (VDMA)
Each module covers theoretical concepts, register maps, memory interaction, and coding examples. In addition, you’ll learn how to allocate memory for DMA operations using both static (device tree) and dynamic (CMA + u-dma-buf) methods, ensuring compatibility and reliability across various Linux kernel configurations.
By the end of the course, you’ll be able to confidently integrate Xilinx DMA IP cores into your own embedded Linux projects — from low-level driver code to high-level Python interfaces.