Installation of a kernel with real-time expansion on Raspberry Pi 4 and latency test (Installation eines Kernel mit Echtzeit-Erweiterung auf Raspberry Pi 4 und Latenztest)

Felix Stange e379bbad6b 'README.md' ändern 2 years ago
Versuch1_ohne_RT acc22cbc82 'Versuch1_ohne_RT/README.md' ändern 2 years ago
Versuch2_mit_RT 7a5774b864 'Versuch2_mit_RT/README.md' hinzufügen 2 years ago
rt-kernel 6f4a67e58d 'rt-kernel/installscript' ändern 2 years ago
rt-tests ebec60098a generiert Rechtecksignal 2 years ago
2021-05-07-raspios-buster-armhf-lite.zip 0de47d899d Raspberry Pi OS 5.10.17 2 years ago
README.md e379bbad6b 'README.md' ändern 2 years ago

README.md

English explanation

Preparation

The basis of the real-time expansion is the current build of the Raspberry Pi OS with standard kernel. At the time this repository was created it was 5.10.17. This build is also included in the repository. An image can easily be transferred to an SD card using the official imager. It does not matter whether the lite or full version is used, but the tests stored here were carried out with the 32-bit lite version.

First of all, it should be checked that the installed packages are up-to-date. You will also likely need to install the git and gnuplot packages.

sudo apt update && sudo apt upgrade
sudo apt install git gnuplot

Latency test with the standard kernel

The OSADL has prepared a very comfortable test script for the latency times, which we use here. This measures the times between the occurrence of an event and the start of its processing. To do this, download the rt-tests repository and compile it.

git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git
cd rt-tests
make 

At the following link, a script can then be copied that carries out the test and also processes the results as text and graphics.

https://www.osadl.org/Create-a-latency-plot-from-cyclictest-hi.bash-script-for-latency-plot.0.html

Generation of a rectangle signal with the standard kernel

In order to make the previous results more visible, the generation of a rectangle signal is very suitable. For this purpose, a GPIO of the Raspberry Pi can be monitored with an oscilloscope, which alternates between high and low levels in a defined time. This can be implemented very easily with the Python library RPi.GPIO, for example.

sudo pip install RPi.GPIO

Write a Python program that generates a rectangle signal. Here you should see an effect on the oscilloscope with increasing frequencies.

Installation of the real-time extension

Now the package with the real-time extension has to be copied and installed on the Raspberry Pi. To do this, download the image with the real-time extension from the following link:

https://github.com/kdoren/linux/releases/tag/rpi_5.10.74-rt54

Now carry out the following instructions:

https://github.com/kdoren/linux/wiki/Installation-of-kernel-from-deb-package-%28Raspberry-Pi-OS%29

Make sure you have the correct version number. After a restart you should check whether the installation was successful.

Latency test with the real-time kernel

Run the test again and compare the results. Be careful not to overwrite the files the second time you run the test.

Generation of a rectangle signal with the real-time kernel

Also run this test again and compare the results.

Hints

All scripts and images mentioned are contained in this repository and can alternatively also be downloaded here. You can also compare your test results with the results in this repository.

Further sources

https://www.embedded-software-engineering.de/echtzeit-mit-dem-raspberry-pi-und-linux-preemptrt-a-630498/


Deutsche Erklärung

Vorbereitungen

Die Grundlage der Echtzeit-Erweiterung bildet der aktuelle Build des Raspberry Pi OS mit Standardkernel. Zur Zeit der Erstellung dieses Repositories war das 5.10.17. Dieser Build liegt auch dem Repository bei. Ein Image kann bequem mit dem offiziellen Imager auf eine SD-Karte übertragen werden. Es spielt keine Rolle ob die Lite- oder Full-Version genutzt wird, jedoch wurden die hier hinterlegten Tests mit der 32bit-Lite-Version durchgeführt.

Zunächst sollte geprüft werden, dass die installierten Pakete aktuell sind. Außerdem müssen wahrscheinlich die Pakete git und gnuplot installiert werden.

sudo apt update && sudo apt upgrade
sudo apt install git gnuplot

Latenztest mit dem Standard-Kernel

Die OSADL hat ein sehr komfortables Testskript für die Latenzzeiten vorbereitet, den wir hier nutzen. Dieser misst die Zeiten zwischen dem Auftreten eines Events und dem Beginn von dessen Bearbeitung. Dazu das Repository rt-tests herunterladen und kompilieren.

git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git
cd rt-tests
make 

Unter folgendem Link kann anschließend ein Skript kopiert werden, dass den Test durchführt und außerdem die Ergebnisse aufarbeitet als Text sowie als Grafik.

https://www.osadl.org/Create-a-latency-plot-from-cyclictest-hi.bash-script-for-latency-plot.0.html

Erzeugung eines Rechtecksignals mit dem Standard-Kernel

Um die bisherigen Ergebnisse optisch besser sichtbar zu machen, eignet sich die Erzeugung eines Rechtecksignals sehr gut. Dazu kann mit einem Oszilloskop ein GPIO des Raspberry Pi überwacht werden, der zeitlich definiert zwischen High- und Low-Pegel alterniert. Das kann beispielsweise mit der Python-Bibliothek RPi.GPIO sehr einfach realisiert werden.

sudo pip install RPi.GPIO

Schreiben Sie ein Python-Programm, dass ein Rechtecksignal erzeugt. Hier sollten Sie mit steigenden Frequenzen einen Effekt auf dem Oszilloskop erkennen.

Installation der Echtzeit-Erweiterung

Nun muss das Paket mit der Echtzeit-Erweiterung auf den Raspberry Pi kopiert und installiert werden. Laden Sie dazu das Image mit der Echtzeit-Erweiterung unter folgendem Link herunter:

https://github.com/kdoren/linux/releases/tag/rpi_5.10.74-rt54

Führen Sie nun die folgende Anleitung durch:

https://github.com/kdoren/linux/wiki/Installation-of-kernel-from-deb-package-%28Raspberry-Pi-OS%29

Achten Sie auf die korrekte Versionsnummer. Nach einem Neustart sollten Sie überprüfen, ob die Installation erfolgreich war.

Latenztest mit dem Echtzeit-Kernel

Führen Sie den Test erneut durch und vergleichen Sie die Ergebnisse. Achten Sie darauf die Dateien nicht zu überschreiben, wenn Sie den Test zum zweiten Mal durchführen. Zudem können Sie Ihre Testergebnisse mit den Ergebnissen in diesem Repository vergleichen.

Erzeugung eines Rechtecksignals mit dem Echtzeit-Kernel

Führen Sie auch diesen Test erneut durch und vergleichen Sie die Ergebnisse.

Hinweise

Alle genannten Skripte und Images sind in diesem Repository enthalten und können alternativ auch hier heruntergeladen werden.

weitere Quellen

https://www.embedded-software-engineering.de/echtzeit-mit-dem-raspberry-pi-und-linux-preemptrt-a-630498/