6

I'm planning to do some realtime control loop tasks with the RPi. In this post PREEMPT_RT and Xenomai were proposed. I'm thinking about trying PREEMPT_RT, as I'd like to keep it as simple as possible.

In the linked post, @Nakedible opposes that the current (as of his writing from Sep 29 '12) drivers are a work-in-progress and might still contain long blocking sleeps.

Is this still the case, or are the drivers real-time capable already? I'll need I2C and maybe SPI drivers.

Also, are there good tutorials on how to compile a working RPi kernel with PREEMPT_RT? So far I've found this and that, but I have never built a kernel yet.

2
  • You may just start building a stock kernel without rt yet. That is simple, but it needs a few iterations to get things running smoothly.
    – minghua
    Commented Jan 26, 2013 at 19:09
  • Nakedible does not really oppose the use of it. In Linux as well as windows or any software system, there are many bugs that will break the system once the use model changes in a certain way. Nakedible is reminding us that if you run rt you are in an area that less people use and test the same kind of system as yours. You need to take care of more testing and fixing work by yourself. That's one of the very nature when you go deeper into programming world, as if you do kernel programming, driver development, etc.
    – minghua
    Commented Jan 26, 2013 at 19:17

2 Answers 2

2

There doesn't seem to be any tutorial for building an RT kernel. I'm working on it, but no success so far. Here's as far as I've got:

  • Start by getting the 3.6 source as described here
  • Apply the stock 3.6.11-rt25 patch
  • One line of the patch fails - you have to manually add a line to a makefile
  • Using the .config from the stock raspbian wheezy distro seems easiest - the defconfig included in the source leaves too many things undefined
  • Modify the config for PREEMPT_RT
  • Complete the build as per the link above.

However, the MMC/SD driver still seems to be broken.

7
  • How exactly it fail? At runtime or build time? What board model do you test on?
    – minghua
    Commented Jan 26, 2013 at 19:10
  • 1
    The boot just stops - no panic, no oops. The MMC driver shows its usual initialisation output, but it doesn't find the SD card. The same card still works with a non-RT kernel, so it's (probably not) a dud card.
    – Tom
    Commented Jan 28, 2013 at 11:03
  • 1
    I've also tried putting the root partition on a USB key. Now the rootfs is mounted okay but then nothing else happens - I haven't had a chance to look further into this. Magic SysRq doesn't work over a serial console, so it seems to be at least fairly seriously broken, but I've haven't had a chance to try it on a USB keyboard yet.
    – Tom
    Commented Jan 28, 2013 at 11:04
  • Thanks Tom for sharing this. Just keep in mind that it may or may not be the mmc driver.
    – minghua
    Commented Jan 29, 2013 at 6:41
  • 2
    Confirmed that it is the MMC driver - 3.6.11-rt31 boots if you disable the MMC subsystem in the kernel configuration. This, of course, means your root filesystem needs to be on something else - I'm using a USB stick.
    – Tom
    Commented Apr 9, 2013 at 13:10
1

I wrote this tutorial for creating an PREEMPT_RT kernel for Raspberry Pi 3 (and only the version 3). It will install Linux kernel 4.14.14 with RT Linux patch 4.14.12-rt10 on Raspbian version 2017-11-29.

Also I included some pointers for how to adapt this for different combinations of kernels and RT Linux patches, but this still remains the challenge in the process.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.