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 ebec60098a generiert Rechtecksignal | 3 лет назад | |
---|---|---|
Versuch1_ohne_RT | 3 лет назад | |
Versuch2_mit_RT | 3 лет назад | |
rt-kernel | 3 лет назад | |
rt-tests | 3 лет назад | |
2021-05-07-raspios-buster-armhf-lite.zip | 3 лет назад | |
README.md | 3 лет назад |
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
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
In order to make the previous results more visible, the generation of a square wave 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 square wave signal. Here you should see an effect on the oscilloscope with increasing frequencies.
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.
Run the test again and compare the results. Be careful not to overwrite the files the second time you run the test.
Also run this test again and compare the results.
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.
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
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
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.
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.
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.
Führen Sie auch diesen Test erneut durch und vergleichen Sie die Ergebnisse.
Alle genannten Skripte und Images sind in diesem Repository enthalten und können alternativ auch hier heruntergeladen werden.