<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Xenomai on TiJet</title><link>https://www.tainuohc.com/en/tags/xenomai/</link><description>Recent content in Xenomai on TiJet</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 21 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.tainuohc.com/en/tags/xenomai/index.xml" rel="self" type="application/rss+xml"/><item><title>Taming Linux Jitter: Achieving Sub-50µs Cycle Times with PREEMPT_RT and Xenomai</title><link>https://www.tainuohc.com/en/blog/2026-07-21-linux-rt/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.tainuohc.com/en/blog/2026-07-21-linux-rt/</guid><description>&lt;h2 id="1-the-challenge-soft-plc-on-a-30-soc">1. The Challenge: Soft PLC on a $30 SoC&lt;/h2>
&lt;p>Tainuo&amp;rsquo;s next-generation motion controller needed to run a soft-PLC runtime doing 20 kHz closed-loop PID control on six servo axes simultaneously. The target hardware: a $30 Allwinner A40i quad-core Cortex-A7. No FPGA, no dedicated DSP — just plain ARM cores running Linux.&lt;/p>
&lt;p>The problem was obvious: standard Linux, even with &lt;code>SCHED_FIFO&lt;/code>, routinely exhibits 200–500µs scheduling jitter on this class of hardware. For a 20 kHz control loop (50µs period), that&amp;rsquo;s a non-starter. Missing the deadline means a phase error that accumulates and destabilizes the mechanical system.&lt;/p></description></item></channel></rss>