Showing only posts from category: Real Time Systems

RPI Xenomai Patched Kernel

Read more

#Raspberry Pi: Real Time System - Xenomai Patching Tutorial for Kernel 4.14.y

The website of Xenomai says the following about it Xenomai:

Xenomai brings POSIX and traditional RTOS APIs for porting time-critical applications to Linux-based platforms. When the native Linux kernel cannot meet the response time requirements of the application, Xenomai supplements it with Cobalt, a small real-time infrastructure which schedules time-critical activities independently from the main kernel logic.

Checking the list of supported hardware, the Raspberry Pi 2, 3 B(+) ARM micro (BCM2835) is included.

This tutorial is almost the same as the tutorial for Preempt-RT patching, but in this case, we need to patch the kernel. The patched Preempt-RT sources are included in the official Raspberry Pi repository. If you need a tutorial for patching the kernel click on the link above.

Preempt-RT Real Time Linux

Read more

#Raspberry Pi: Real Time System - Preempt-RT Patching Tutorial for Kernel 4.14.y

The Preempt-RT tutorial article is the most visited post on my blog. Therefore, I decided to update the tutorial to make it cleaner, and to introduce some other possible modifications and tips for solving problems.

Preempt-RT is a popular patch for the Linux kernel to transform Linux into such a real-time operating system. There is another option to get this done, and that's Xenomai (tutorial and performance tests here).

Tiejun Chen, the main responsible for the official Raspberry-Pi-RT branch, has published a video about Preempt-RT here. It includes tips, results and tests.


Read more

#Raspberry Pi: The N-queens Problem! (benchmark) Preempt-RT vs. Standard Kernel!

The N-Queens Problem/Puzzle is a well-known problem that consists of placing N chess queens on an N × N chessboard so that no two queens attack each other. For example, one possible solution to the N-queens problem for N = 4 is the following:

N-queens problem (N=4)
Fig. 1: N-queens problem example (N = 4). Source: Google Optimization Tools

As you can see, no two queens are on the same row, column or diagonal. Usually the problem consists to find all possible solutions, rather than one optimal solution.

I wrote a script in Python that calculates the number of all possible solutions. This script can be used as Benchmark for e.g. the Raspberry Pi.

Many people use the N-queens problem to test the performance of a defined solver. But this can be cheated. In my case, the solver (script) is not optimal (I implemented the backtracking way based on this solution), but it works, and it helps me to compare different configurations of the Raspberry Pi (kernel, model B & B+ etc.). I solved the N-queens problem for N=12, in single (ST) and multi-thread (MT) configurations and repeated the tests 45(ST)/100(MT) to check the result variances.

All the data, scripts and notebooks are available here:

Python Code:


Read more

#Rapberry Pi: Preempt-RT Kernel Performance on Rasbperry PI 3 Model B+

The Raspberry Pi 3 Model B+ (Fig. 1) is now on sale and I bought one two weeks ago. The main modifications are the followings:

  • A 1.4GHz 64-bit quad-core ARM Cortex-A53 CPU
  • Dual-band 802.11ac wireless LAN and Bluetooth 4.2
  • Faster Ethernet (Gigabit Ethernet over USB 2.0)
  • Power-over-Ethernet support (with separate PoE HAT)
  • Improved PXE network and USB mass-storage booting
  • Improved thermal management
Raspberry Pi 3 B+
Fig. 1: Raspberry Pi 3 Model B+

The Raspberry Pi uses now the LAN2515 chip from Microchip instead of the LAN9514 for Ethernet and the USB Ports.

If you are looking for some Benchmarking of the new model, Gareth Halfacree has some nice graphics on his website.

If you are planning to use a heatsink on the new model, please check that the new SoC packaging has a hole, and you shouldn't cover it. Some people are writing that the heat spreader (metal bit on the Fig. 1) reaches to dissipate the heat generated and you don't need an extra heatsink. But, if you are like me, and you are using the Raspberry Pi for (near) real-time applications, with data processing, you should use some additional cooling system. It goes really hot!. The PXE Ethernet Hat, which is coming soon, has a fan. It could be an option!

As usual on my last posts, I compiled the last version of the Preempt-RT Patched Kernel to test its performance on this new model.

Rpi rt kernel tittle min

Read more

#Raspberry Pi: Preempt-RT Kernel 4.14.y on Raspberry Pi

The forked rpi-4.14.y-rt repo by TiejunChina is now a branch under the official Raspberry Pi repo. That means you need to type the following to clone the Preempt-RT patched Kernel

~/rpi-kernel$ git clone
~/rpi-kernel$ cd linux
~/rpi-kernel/linux/ git checkout rpi-4.14.y-rt

Then, you can follow the tutorial from here.

RPI Zero Preempt-RT

Read more

#Raspberry PI Zero W: Preempt-RT Kernel Performance (updated: 18.03.2018)

Today I patched the kernel of a Raspberry Pi Zero W with Preempt-RT. I used the repo TiejunChina.

Update 18.03.2018: The official Preempt-RT patched Rasbian repo is here.

~/rpi-kernel$ git clone # update 18.03.2018: old repository
~/rpi-kernel$ git clone # update 18.03.2018: new repository
~/rpi-kernel$ cd linux
~/rpi-kernel/linux$ git checkout rpi-4.14.y-rt  # today the kernel version is 4.14.22
                                                # with rt17 resulting in 4.14.22-rt17+

You can find a complete tutorial for patching a Raspbian kernel 4.14.y here.

Check the options for Raspberry Model A(+), B(+), Zero W.

(perfomance tests and problems inside!)

RPI RT Preempt Kernel Performance

Read more

#Raspberry Pi: Preempt-RT vs. Standard Kernel 4.14.y

The last week I was working on a real-time application (with a 1 ms sample time) that runs on an ARMv8 Cortex-A53 (Raspberry Pi 3 Model B based board) and I was wondering the differences between latencies on the standard and the Real-Time (RT) Linux kernel. I had some problems with the standard kernel version, then I thought I could analyze the latencies of both kernels, and make some conclusions. Many test are available but with older kernel versions. The tests were performed using the Raspbian Kernel 4.14.21 and the RT-Preempt Patch 4.14.21-rt17!

RPI RT Preempt Kernel

Read more

#Raspberry Pi: Preempt-RT Patching Tutorial for Kernel 4.14.y

There are a lot of tutorials for Raspberry Pi kernel patching using RT-Preempt, but I needed about 15 hours to get it working! I hate Kernel patching! and I have to say, that's not my first time. I have a system working with Ubuntu, RTAI and an Ethercat master. I patched the system more than once. But it is/was always a new thing! and It costs a lot of time! ;)

Then, you have another tutorial here! I only hope that the repo gets official. It could reduce the time to get the RT kernel working, if it is kept updated.

Update: 18.03.2018: The repository is now here! It is a branch from the official Raspberry Pi kernel repository.