For the instrument we’re building at work, I had originally applied an Arria 10 SOC intending to use embedded Linux on the ARM CPU to run the main controller firmware.
The chip has support in the Yocto ecosystem, but after working with it for a while I found that handling the build and deployment process and interfacing custom components and IPs in the FPGA fabric to the Linux OS to be too much burden to handle on my own with no background and a short timeline.
So I scaled the design back a little to target a more familiar Cyclone FPGA with a Nios II soft core and bare metal firmware. It ended up being much more manageable and met our needs.
Now, on my own time I want to learn more about embedded Linux, AXI interfacing, and operating systems in general.

I bought this Zedboard a few years ago, and it’s a little outdated now but I spent ~$500 on it so might as well use it.
The popular Zynq7000 chip has a dual core ARM9 CPU and a FPGA fabric similar to the Artix 7 series.
This board has USB OTG and 1G ethernet attached to the ARM processing system, and HDMI connected to the fabric. I would basically like to turn it into a mini PC similar to a Raspberry Pi.
The FPGA itself is fairly powerful and a large amount of IO including multi-gigabit transceivers. It could serve as a good hardware development platform for projects where tight integration with a powerful CPU is desirable.
This is mainly a learning experience, the steps I intend to take are something like the following:
- Get board set up with bare metal tutorial <- You are here
- Learn to deploy PetaLinux to the board, which is the platform and toolchain that Xilinx directly supports.
- Learn about Linux’s graphics stack and figure out how to get HDMI working as a video output for XWindows
- Get keyboard and mouse working
- Figure out how to build the above from scratch (kernel, devicetree, buildroot, uboot, etc) for a minimal deployment
It turns out that all of the above is not trivial, but I did manage to gather a fair amount of documentation.
- Getting started with Zedboard – intro to Vivado/Vitis SOC toolchain, bare metal example, up to date with latest Xilinx software
- Apparently, in the past Xilinx provided a BSP for this board to use with the PetaLinux build tools, but it fell out of date. Thankfully someone released an up to date PetaLinux BSP for ZedBoard by migrating the last supported one.
- Documentation on building Linux from scratch, available from Xilinx.
- Also tons of Linux driver info from Xilinx including on DRM/KMS and Framebuffer Read which are potentially useful for video stack.
- The BSP does not have any HDMI components, so that is clearly not available out of the box, but Analog Devices who makes the on-board HDMI TX chip releases a reference design for Linux with HDMI video output on Zedboard.
In the default code example for the Getting started tutorial, the LEDs just tracked the buttons, so I added a usleep() to make them more lively.
Leave a Reply