Take the 2-minute tour ×
Raspberry Pi Stack Exchange is a question and answer site for users and developers of hardware and software for Raspberry Pi. It's 100% free, no registration required.

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.

share|improve this question
    
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 Jan 26 '13 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 Jan 26 '13 at 19:17

1 Answer 1

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.

share|improve this answer
    
How exactly it fail? At runtime or build time? What board model do you test on? –  minghua Jan 26 '13 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 Jan 28 '13 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 Jan 28 '13 at 11:04
    
Thanks Tom for sharing this. Just keep in mind that it may or may not be the mmc driver. –  minghua Jan 29 '13 at 6:41
1  
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 Apr 9 '13 at 13:10

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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