[FE training-materials-updates] Real-time lab: update kernel version for use with PREEMPT_RT
Michael Opdenacker
michael.opdenacker at free-electrons.com
Fri Nov 3 13:53:20 CET 2017
Repository : git://git.free-electrons.com/training-materials.git
On branch : master
Link : http://git.free-electrons.com/training-materials/commit/?id=a66c1b247548a93e1c56c926f470d969b17f8cc9
>---------------------------------------------------------------
commit a66c1b247548a93e1c56c926f470d969b17f8cc9
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date: Fri Nov 3 13:53:20 2017 +0100
Real-time lab: update kernel version for use with PREEMPT_RT
- Didn't manage to boot the Xenomai Cobalt kernel on the Xplained
board yet (ongoing work)
Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>
>---------------------------------------------------------------
a66c1b247548a93e1c56c926f470d969b17f8cc9
labs/sysdev-real-time/sysdev-real-time.tex | 44 +++++++++++++++++++++++-------
1 file changed, 34 insertions(+), 10 deletions(-)
diff --git a/labs/sysdev-real-time/sysdev-real-time.tex b/labs/sysdev-real-time/sysdev-real-time.tex
index 5ca12df..64864b2 100644
--- a/labs/sysdev-real-time/sysdev-real-time.tex
+++ b/labs/sysdev-real-time/sysdev-real-time.tex
@@ -29,9 +29,13 @@ supports Xenomai.
Let's build this with Buildroot.
-Reuse and extract the Buildroot 2016.02 sources. Configure Buildroot
-with the following settings, using the \code{/} command in \code{make
- menuconfig} to find parameters by their name:
+Download and extract the Buildroot 2016.02 sources. As the latest
+version of Xenomai doesn't seem to work on the Xplained board (yet),
+we need an older version of Buildroot that will build Xenomai 2.6.
+
+Configure Buildroot with the following settings,
+using the \code{/} command in \code{make
+menuconfig} to find parameters by their name:
\begin{itemize}
\item In \code{Target}:
@@ -88,12 +92,32 @@ tests:
cp data/* nfsroot/root
\end{verbatim}
+\section{Downloading sources and patches}
+
+We will use a kernel version that is supported by the PREEMPT\_RT
+patchset.
+
+So, go to
+\url{https://www.kernel.org/pub/linux/kernel/projects/rt/4.13/},
+download the latest patch available in a single file.
+
+Then go to \url{http://kernel.org} and download the exact version
+corresponding to the patch you downloaded. At the time of this writing,
+this version was 4.13.10.
+
\section{Compile a standard Linux kernel}
-Reusing the 4.6 kernel we previously compiled, make sure that you disable
+Extract the sources of your 4.13.x kernel but don't apply the
+PREEMPT\_RT patches yet.
+
+Configure your kernel for your Xplained board, and then make sure
+that the below settings are disabled:
\code{CONFIG_PROVE_LOCKING}, \code{CONFIG_DEBUG_LOCK_ALLOC},
\code{CONFIG_DEBUG_MUTEXES} and \code{CONFIG_DEBUG_SPINLOCK}.
+Also, for the moment, disable the \code{CONFIG_HIGH_RES_TIMERS}
+option which impact we want to measure.
+
Boot the Xplained board by mounting the root filesystem that you
built. As usual, login as \code{root}, there is no password.
@@ -136,7 +160,7 @@ with further results.
Obviously, this resolution will not provide accurate sleep times, and
this is because our kernel doesn't use high-resolution timers. So
-let's enable the \code{CONFIG_HIGH_RES_TIMERS} option in the kernel
+let's add back the \code{CONFIG_HIGH_RES_TIMERS} option in the kernel
configuration.
Recompile your kernel, boot your Xplained with the new version, and
@@ -180,7 +204,7 @@ improvement in the maximum latency.
\section{Testing Xenomai scheduling latency}
-Stay in \code{$HOME/embedded-linux-labs/realtime/rttest}.
+Stay in \code{$HOME/embedded-linux-labs/realtime}.
Download the 2.6.4 release of Xenomai (that's what our version of
Buildroot supports by default), and extract it.
@@ -195,7 +219,7 @@ and extract them.
Now, prepare our kernel for Xenomai compilation:
\begin{verbatim}
-cd $HOME/embedded-linux-labs/realtime/rttest
+cd $HOME/embedded-linux-labs/realtime
./xenomai-2.6.4/scripts/prepare-kernel.sh --arch=arm \
--linux=linux-3.14.17 \
--adeos=xenomai-2.6.4/ksrc/arch/arm/patches/ipipe-core-3.14.17-arm-4.patch
@@ -222,7 +246,7 @@ So go in your Buildroot source directory, and force Buildroot to build
the host variant of {\em pkg-config}:
\begin{verbatim}
-cd $HOME/embedded-linux-labs/realtime/rttest/buildroot-YYYY.MM/
+cd $HOME/embedded-linux-labs/realtime/buildroot-YYYY.MM/
make host-pkgconf
\end{verbatim}
@@ -230,8 +254,8 @@ We can now compile \code{rttest} for the Xenomai POSIX skin:
\scriptsize
\begin{verbatim}
-cd $HOME/embedded-linux-labs/realtime/rttest/nfsroot/root
-export PATH=$HOME/embedded-linux-labs/realtime/rttest/buildroot-YYYY.MM/output/host/usr/bin:$PATH
+cd $HOME/embedded-linux-labs/realtime/nfsroot/root
+export PATH=$HOME/embedded-linux-labs/realtime/buildroot-YYYY.MM/output/host/usr/bin:$PATH
arm-none-linux-gnueabi-gcc -o rttest rttest.c \
$(pkg-config --libs --cflags libxenomai_posix)
\end{verbatim}
More information about the training-materials-updates
mailing list