Raspberry Pi 4 RT Preempt Kernel
17 Aug 2019 17:48 #142398
by BigJohnT
Raspberry Pi 4 RT Preempt Kernel was created by BigJohnT
I've been trying to get the RT Preempt kernel going on my RPi4.
I followed this guide from our wiki:
I also tried the newer kernel but didn't find the fully preemptable option.
When I check the kernel after rebooting I get this:
When it's supposed to report back:
In the /boot directory I see 3 kernel images:
I'm kinda stuck... and need a kick start.
Thanks
JT
I followed this guide from our wiki:
sudo apt update
sudo apt install git
git clone --depth=1 https://github.com/raspberrypi/linux -b rpi-4.14.y-rt
sudo apt install bison flex libncurses5-dev libssl-dev bc mc
cd linux
KERNEL=kernel7
make bcm2709_defconfig
make menuconfig
make -j4 zImage
make -j4 modules
make -j4 dtbs
sudo make modules_install
Install the RT PREEMPT Kernel
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
sudo reboot -n
I also tried the newer kernel but didn't find the fully preemptable option.
git clone --depth=1 https://github.com/raspberrypi/linux -b rpi-4.19.y-rt
When I check the kernel after rebooting I get this:
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.19.58-v7l+ #1245 SMP Fri Jul 12 17:31:45 BST 2019 armv7l GNU/Linux
When it's supposed to report back:
Linux raspberrypI 4.14.66-rt40-v7+ #1 SMP PREEMPT RT Sat Sep 1 16:17:01 +07 2018 armv7l GNU/Linux
In the /boot directory I see 3 kernel images:
-rwxr-xr-x 1 root root 4994704 Aug 17 07:41 kernel7.img
-rwxr-xr-x 1 root root 5600072 Aug 16 07:32 kernel7l.img
-rwxr-xr-x 1 root root 5017424 Aug 16 07:32 kernel.img
I'm kinda stuck... and need a kick start.
Thanks
JT
Please Log in or Create an account to join the conversation.
17 Aug 2019 17:51 - 17 Aug 2019 17:55 #142399
by Hakan
is the only difference I can see.
Ooh I see one more thing
www.raspberrypi.org/documentation/linux/kernel/building.md
Replied by Hakan on topic Raspberry Pi 4 RT Preempt Kernel
make bcm2711_defconfig
Ooh I see one more thing
KERNEL=kernel7l
www.raspberrypi.org/documentation/linux/kernel/building.md
Last edit: 17 Aug 2019 17:55 by Hakan.
Please Log in or Create an account to join the conversation.
17 Aug 2019 18:01 #142401
by BigJohnT
The only two I have are:
JT
Replied by BigJohnT on topic Raspberry Pi 4 RT Preempt Kernel
pi@raspberrypi:~ $ cd linux
pi@raspberrypi:~/linux $ KERNEL=kernel7l
pi@raspberrypi:~/linux $ make bcm2711_defconfig
***
*** Can't find default configuration "arch/arm/configs/bcm2711_defconfig"!
***
make[1]: *** [scripts/kconfig/Makefile:113: bcm2711_defconfig] Error 1
make: *** [Makefile:520: bcm2711_defconfig] Error 2
The only two I have are:
-rw-r--r-- 1 pi pi 33076 Aug 17 06:46 bcm2709_defconfig
-rw-r--r-- 1 pi pi 3737 Aug 17 06:46 bcm2835_defconfig
JT
Please Log in or Create an account to join the conversation.
17 Aug 2019 18:07 #142402
by BigJohnT
Replied by BigJohnT on topic Raspberry Pi 4 RT Preempt Kernel
Browsing the repository for rpi-4.19.y-rt I see that fully preempt is selected and bcm2711_defconfig is in that one.
JT
JT
Please Log in or Create an account to join the conversation.
17 Aug 2019 20:54 - 17 Aug 2019 21:04 #142410
by Bari
Replied by Bari on topic Raspberry Pi 4 RT Preempt Kernel
Between the bootloader (preferably u-boot) and the preempt_rt kernel config one will want to turn off all power management, speed stepping, core clock governor etc etc so that the cpu cores stay at a constant clock rate and no clocks stop or slow down for power management for the memory, cpu cores, internal bus between the memory, cpu cores and the IO used for real time, etc etc. The features to adjust the above should not even be in the kernel unless they are required to lock them into their highest rates. Not doing so will just cause latency issues and less than optimum real time performance.
The stock preempt_rt kernel for the pi's I've seen don't do this.
Also check out QEMU to build arm64 kernels on your x86 PC to save hours or days of time
wiki.ubuntu.com/ARM64/QEMU
github.com/sakaki-/gentoo-on-rpi3-64bit/...QEMU-and-binfmt_misc
The stock preempt_rt kernel for the pi's I've seen don't do this.
Also check out QEMU to build arm64 kernels on your x86 PC to save hours or days of time
wiki.ubuntu.com/ARM64/QEMU
github.com/sakaki-/gentoo-on-rpi3-64bit/...QEMU-and-binfmt_misc
Last edit: 17 Aug 2019 21:04 by Bari. Reason: add QEMU info
Please Log in or Create an account to join the conversation.
18 Aug 2019 06:14 - 18 Aug 2019 06:16 #142415
by Hakan
Replied by Hakan on topic Raspberry Pi 4 RT Preempt Kernel
Yes, all tests I have made, and I think everyone here, is with rpi-4.19.y-rt. At least for the RPi4 that is the right one.
That needs to be updated in the wiki.
The build instructions for the RPi4 from the link I gave above is in principle OK. But with the rpi-4.19.y-rt version and to
double-check that full preempt is selected (it should). in the config.
Additionally,
- for acceptable latencies, add "isolcpus=1,2,3" to the line in /boot/cmdline.txt after you compile the kernel.
- to not have the system hibernate/suspend/whatever and bring down the ethernet interface after a while, do( Ref:https://wiki.debian.org/Suspend )
That should make it possible to run 1 ms servo-thread with mesa ethernet-interfaced cards.
- to lower latency even further, bring down the wlan interface,but that is optional, I have it working fine here with the wlan0 active.
Bari, do you know any other settings that should be in place?
That needs to be updated in the wiki.
The build instructions for the RPi4 from the link I gave above is in principle OK. But with the rpi-4.19.y-rt version and to
double-check that full preempt is selected (it should). in the config.
Additionally,
- for acceptable latencies, add "isolcpus=1,2,3" to the line in /boot/cmdline.txt after you compile the kernel.
- to not have the system hibernate/suspend/whatever and bring down the ethernet interface after a while, do
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
That should make it possible to run 1 ms servo-thread with mesa ethernet-interfaced cards.
- to lower latency even further, bring down the wlan interface,
sudo ifdown wlan0
Bari, do you know any other settings that should be in place?
Last edit: 18 Aug 2019 06:16 by Hakan.
Please Log in or Create an account to join the conversation.
18 Aug 2019 10:15 - 18 Aug 2019 10:33 #142425
by BigJohnT
I checked out those links but they are at a level way above me and didn't make much sense.
JT
Replied by BigJohnT on topic Raspberry Pi 4 RT Preempt Kernel
I did turn off frequency scaling during the make menuconfigBetween the bootloader (preferably u-boot) and the preempt_rt kernel config one will want to turn off all power management, speed stepping, core clock governor etc etc so that the cpu cores stay at a constant clock rate and no clocks stop or slow down for power management for the memory, cpu cores, internal bus between the memory, cpu cores and the IO used for real time, etc etc. The features to adjust the above should not even be in the kernel unless they are required to lock them into their highest rates. Not doing so will just cause latency issues and less than optimum real time performance.
The stock preempt_rt kernel for the pi's I've seen don't do this.
Also check out QEMU to build arm64 kernels on your x86 PC to save hours or days of time
wiki.ubuntu.com/ARM64/QEMU
github.com/sakaki-/gentoo-on-rpi3-64bit/...QEMU-and-binfmt_misc
I checked out those links but they are at a level way above me and didn't make much sense.
JT
Last edit: 18 Aug 2019 10:33 by BigJohnT.
Please Log in or Create an account to join the conversation.
18 Aug 2019 11:40 #142431
by Hakan
Replied by Hakan on topic Raspberry Pi 4 RT Preempt Kernel
It doesn't take that long to compile the kernel on the RPi4, a few hours at the most.
Please Log in or Create an account to join the conversation.
18 Aug 2019 12:42 #142433
by BigJohnT
Replied by BigJohnT on topic Raspberry Pi 4 RT Preempt Kernel
Took about 1.5 hours to compile the kernel on my RPi4. But doing it over SSH you just do other stuff while it runs.
BTW, I did get the preempt rt kernel up and going and I'm installing LinuxCNC now and used OpenBox as the window manager. Total time to do all will be 3 hours.
JT
BTW, I did get the preempt rt kernel up and going and I'm installing LinuxCNC now and used OpenBox as the window manager. Total time to do all will be 3 hours.
JT
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
18 Aug 2019 14:26 #142440
by BigJohnT
Replied by BigJohnT on topic Raspberry Pi 4 RT Preempt Kernel
I got as far as building LinuxCNC with debuild -uc -us but ran into an error...
So I made sure yapps2 was installed...
So I tested in python...
Then I checked to see if yapps was available.
Anyone have a suggestion?
JT
Traceback (most recent call last):
File "../bin/halcompile", line 24, in <module>
from yapps import runtime
ImportError: No module named yapps
So I made sure yapps2 was installed...
john@raspberrypi:~/emc $ sudo apt install yapps2
[sudo] password for john:
Reading package lists... Done
Building dependency tree
Reading state information... Done
yapps2 is already the newest version (2.2.1-3).
So I tested in python...
john@raspberrypi:~/emc $ python
Python 2.7.16 (default, Apr 6 2019, 01:42:57)
[GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from yapps import runtime
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named yapps
Then I checked to see if yapps was available.
john@raspberrypi:~/emc $ sudo apt install yapps
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package yapps
Anyone have a suggestion?
JT
Please Log in or Create an account to join the conversation.
Time to create page: 0.146 seconds