Program the DE1-SoC’s FPGA from Linux using Device Tree overlay

When using a SoC-FPGA (SoC coupled with an FPGA for programmable logic) such as the DE1-SoC from Terasic, programming the FPGA can be performed in many different ways: Directly from an FPGA software (Quartus for example) From U-boot before launching the OS From the OS Using this last option allows the FPGA to be reconfigured without having to reboot the OS and with the adequate support, even allows the OS to reconfigure itself to use the newly programmed features of…

Read More

Automated C/C++ Build through GitHub Actions

Have you been wondering how some projects add a small badge to their README that shows the project build status ? Well we will show how to set this up on GitHub. First this is documented in the official GitHub documentation : https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge and here https://docs.github.com/en/actions However, the documentation may seem a bit daunting at first, so let’s make an easy to follow tutorial. Setting up a build workflow For this I will show how to build a very simple…

Read More
Tux by Iwan Gabovitch (gg3po) Licensed under GPLv2

Linux kernel hacking on ZynqUltraScale+ with Petalinux

The ZynqUltraScale+ is a powerful SoC platform combining multi-core ARM64 CPUs and FPGA technology. There are plenty of projects that can take advantage of running a Linux kernel on the ARM64 processor and sometimes they require some degree of kernel hacking. In this post we will setup a build environment to modify the Linux kernel, compile it, and run it rapidly on a ZCU106 development board. For this we want the following : Be able to modify and compile the…

Read More

NVMe emulation in QEMU – Adding custom admin and IO commands

QEMU is a wonderful system emulator capable of running full x86 systems with PCIe and NVMe amongst many other platforms. QEMU is not only versatile, very fast, but also open-source ! At REDS we use QEMU to facilitate development of hardware through emulation, for example emulating FPGA platforms in software before going to real hardware, e.g., Full System Simulation (FSS), Zynq Software-Hardware CoSimulation. The full visibility over the system through emulation make development and debugging very effective. With a QEMU…

Read More

eclipse for nRF5 SDK installation guide

Introduction nRF5 SDK allows the development of software for the nRF51 and nRF52 SoCs. Nordic Semiconductor promotes the use of the nRF Connect SDK, but I found it complex to use because it doesn’t allow bare metal (it works with the RTOS Zephyr Project) and force you to use new tools like DeviceTree and CMake that I’m not proficient with. Nordic Semiconductor offers a free license to SEGGER Embedded Studio for development with nRF chips, but if you are like…

Read More

eclipse for nRF5 SDK using example

Introduction In the previous article, we have learnt how to install the IDE. We will now use an example provided by the nRF5 SDK. We should be able to directly build the example found in the SDK, but I don’t like this method because we often need to make some changes and I like to keep the SDK in a pristine state. In this post, we will use the blinky example for the nRF52840DK (pca10056) found in nRF5 SDK 17.1.0.…

Read More

Accessing the RAM of a QEMU Emulated System from another Process

Sometimes it may be of interest to expose the RAM of a hardware platform emulated in QEMU to an outside process, e.g., for monitoring, testing, or co-simulation. The QEMU monitor allows to inspect the memory but is not necessarily the most practical tool when you need to access it from another process, e.g., a C program or an external simulator, maybe Questasim simulating a device written in SystemVerilog. In this post I will show how to make the memory of…

Read More

A guide to compile and install a Xenomai-patched kernel

This tutorial will present how to compile and install a Xenomai-patched Linux kernel. Moreover, we will build Debian packages to ease the installation process. At the time of writing, the most recent stable version of Xenomai is 3.1 and the latest supported Linux kernel version is 4.19.89. However, these instructions should be valid for past and future versions. All the instructions have been executed on a machine running Ubuntu 20.04. Pre-requisites Install the following required packages: Download required files From…

Read More
Find Us

Route de Cheseaux 1
CP 521
1401 Yverdon-les-Bains

About This Site

Technical articles related to the development work performed at the REDS institute, HEIG-VD (Switzerland).

The REDS institute is part of the High School of Engineering, Vaud. Its core skills involve board conception, firmware development and FPGA programming.

Find more at http://www.reds.ch