Running Linux GUIs on Zynq with FastVDMA and Snickerdoodle HDMI breakout board
Topics: Open hardware, Open FPGA, Open source tools, Open OS
Our approach to FPGA development is quite unique, with a heavy focus on openness, portability and software-driven workflows. One element of this strategy is creating open source and portable IPs that can be reused across a range of projects and platforms without imposing any royalty or licensing dependencies on our customers.
An open and portable DMA IP called the Fast Versatile DMA, or FastVDMA for short, which we released last year, is one example of such a component. Today we present how the FastVDMA and other open source technologies can be used to add a graphical user interface to Linux-capable designs based on the Snickerdoodle SoM (System-on-Module) with the Xilinx Zynq FPGA SoC.
Open IPs, hardware and drivers
A DMA (Direct Memory Access) controller’s task is to transfer data between RAM and the Display Controller. Built with the intention of being reusable across various platforms, the FastVDMA gives FPGA developers the level of freedom that proprietary, platform-dependent DMA controllers can’t offer. Also - if you are into those things - it’s written in Chisel, the new productivity-oriented HDL developed by Berkeley and SiFive and now maintained by CHIPS Alliance as part of a dedicated working group.
Apart from FastVDMA, we used Antmicro’s open source AXI Display Controller, HDMI Transmitter and Mixed-Mode Clock Manager, to create an FPGA design that added a graphics functionality to the Zynq-based Snickerdoodle SoM. The setup also involved our open source HDMI breakout board designed for Snickerdoodle’s breakyBreaky, and required developing dedicated Linux drivers. To verify the design, our engineers successfully ran a Linux desktop environment (no HDMI demo is complete without an Antmicro-themed wallpaper).
Collaboration with krtkl
This is of course not our first development involving Snickerdoodle, as we have already collaborated with the board’s makers, a San-Francisco based startup - krtkl - jointly delivering some interesting Linux-based projects around their SoM. The Snickerdoodle originally launched through a Kickstarter campaign, which is how we got connected in the first place, and has since become a popular industrial Zynq platform sold by manufacturers such as Mouser for use cases in robotics, motor control and other fields.
Linux-capable FPGA devices gaining popularity
FPGAs can be treated as a kind of bridge between the hardware and software domains, as unlike fixed ASICs, their operation can be reconfigured after deployment. With the development of more open source building blocks, tools and workflows, FPGAs present an interesting choice for scenarios that need the performance of dedicated hardware with the flexibility of software. Particularly, FPGA SoCs that can run Linux, such as Zynq or Microchip’s RISC-V capable PolarFire SoC, are popular among developers, as they allow system designers to build various hardware-optimized but user-friendly devices, including powerful machine learning accelerators, smart interface bridges or video and sound processing devices. With the dedicated HDMI boards we have built for both the Snickerdoodle and the PolarFire Icicle kit that allow them to output a GUI, those FPGA SoC systems feel much more like a real computer.
Also pure FPGA systems can run Linux these days using the multi-core Linux-capable and FPGA-optimized VexRiscv CPU, with a variety of I/O options offered by the LiteX soft SoC ecosystem that we heavily contribute to - thus blurring the line between FPGAs and “hardened” SoCs.
If you’d like to build future-oriented, vendor-neutral FPGA systems, integrating many different FPGA, software and hardware elements which you can fully control, make sure to contact us at firstname.lastname@example.org.