Share a block device between two nodes with OCFS2

Share a block device between two nodes with OCFS2

Sometimes it can be useful to share a single block device (e.g., HDD or SSD) between multiple nodes (e.g., Linux OSes) with a coherent file system. So that modifications to files on the shared block device by one node are visible to another node. Such file system is called a clustered file system. The difference with a distributed file system is that all the data lies into the single block device, whereas in a distributed file system data is distributed…

Read More

Benchmark of DMA between an FPGA and a Linux userspace on a Zynq

Context As part of a research project, the REDS was mandated to design a system retrieving a data stream from a camera and transferring it to a CPU with the lowest delay. We used a SoC-FPGA board from Xilinx’s Zynq family. This type of device has a CPU core (PS) and a programmable FPGA part (PL). The solution chosen, to meet the need for high throughput, was to use a DMA. This was implemented in the FPGA part (PL) and…

Read More

Exploring Intel(R) Core(TM) Ultra 7 155H

It is summer, the semester is over, and with many colleagues and students on holiday, there is finally a little time for experimenting. After years of impeccable service, I’ve recently updated my laptop, a Yoga 910-13IKB, to a new Yoga Slim 7i Gen 9 (14″ Intel). With this new laptop comes a new CPU: Intel(R) Core(TM) Ultra 7 155H. Considering this is the first time I’ve my hands on an heterogeneous CPU from Intel (working mostly on embedded big.LITTLE is…

Read More

Measuring and Improving Software Energy Consumption

Introduction In a world where data centers consume nearly 1% of global electricity, optimizing the energy consumption of computer systems has become a critical priority. In 2022, the electricity consumption of data centers reached 460 TWh and could exceed 620 TWh by 2026 (source). A low hanging fruit is software improvement: can we reduce the carbon footprint of our code? This article will guide you through various methods of measuring energy consumption of your code, enabling you to better understand…

Read More

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

An ARM single board computer as PCIe card !?! (part 2) a Linux based NVMe drive !

In the previous post we prepared a setup with a FriendlyElec NanoPC-T4 single board computer (SBC) we connected it through PCIe to a host computer. This time we will setup a Pine64 Rockpro64 board which comes with a more convenient PCIe 4x female edge connector instead of an M.2 slot. Both boards are based on the same Hexa-Core Rockchip RK3399 chip. In this post we will explore how to build a custom Linux kernel and load a PCIe endpoint function…

Read More

An ARM single board computer as PCIe card !?! (part 1)

In this blog post series I will show how we can use an ARM single board computer (SBC) as a PCIe card (PCIe endpoint). At REDS when developing PCIe based devices we usually rely on FPGAs, for example to develop FPGA PCIe accelerators. These are often based on existing PCIe cards from AMD (Xilinx) and Intel (Altera). For example the Xilinx Alveo series or Zynq based development boards. To develop accelerators such cards are fine and the development boards allow…

Read More
Tux by Iwan Gabovitch

How to apply patches from the Linux Kernel Mailing List

The Linux Kernel is under constant development and improvement. Everyday patches are submitted to the Linux Kernel Mailing List (LKML). Some of these patches get accepted and merged into the mainline Linux kernel and become available to the user, other patches never do. Sometimes it is useful to get patches from the LKML, for example if you are developing in the kernel or simply because you want to stay at the bleeding edge. Another reason could be that you need…

Read More
Find Us

Address
HEIG-VD
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