RealTime-PREEMPT Linux-Kernel on Jetson TX1?

Is it possible to run a Linux-Kernel with the rt-preempt patch applied on the Jetson TX1?

We need the computing power of the X1 for machine-vison tasks and want to use the same platform to run a control algorithm which needs to comply with quite hard realtime requirements.

There are some reports of people successfully patching the kernel for TX1, but it produces kernel crashes and bad realtime-behavior.

Are there ways to reliably operate the Jetson TX1 with a RT-Kernel? Is there a good chance to get it running with some manual adjustments of the drivers or something like that?

Thank you!

The Linux kernel extensions “CONFIG_RT_GROUP_SCHED” and “CONFIG_RT_MUTEXES” are enabled by default in L4T. I don’t know how any patch you are looking at might differ. By definition, the Linux kernel RT extensions are always “soft” realtime…“hard” realtime does not exist in the Linux kernel. The best you could do is customize for a particular driver to have higher priority and be careful about what other applications compete with it.

Most likely you’d need to add a custom FPGA or Cortex-R series add-on board for hard RT purposes.

Thank you for your answer!

The rt-preempt patch makes the Linux Kernel feasible for our application in general. Using the standard RT-Scheduling implemented in the Kernel without the patch leads to much higher worst-case latencies in the range of ms.

One of the changes applied by the patch is making in-kernel locking-primitives preemptible through reimplementation with rtmutexes.
The question is how the nvidia drivers are involved here and need the linux kernel to react in realtime as well.

Someone successfully patched the Linux for the TK1 after some adjustments but reports a bad worst-case latency of 1.8 ms and sometimes the system didn’t boot. The worst-case latency measured with the stock Linux image was 18 ms. (http://www.jann.cc/2015/05/18/peempt_rt_for_the_nvidia_jetson_tk1.html)

I have no experience with that patch, but I see it is based on a 2.6 kernel version. The 3.10 versions used in the Jetson probably have a lot of differences, and the mainline 4.x kernels even more differences. Most likely you would need to re-implement the whole patch which would require a very good understanding of almost every part of the kernel. Obviously many people would be quite interested in realtime, but other than the existing RT features I don’t know of anything being available.