[bootlin/training-materials updates] master: First Xenomai updates (23f92e4f)

Michael Opdenacker michael.opdenacker at bootlin.com
Fri Jun 5 10:17:01 CEST 2020


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/23f92e4f089cb65e2d824abbbfabde66f298290d

>---------------------------------------------------------------

commit 23f92e4f089cb65e2d824abbbfabde66f298290d
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date:   Fri Jun 5 10:17:01 2020 +0200

    First Xenomai updates
    
    - Still missing updates about userspace building
    
    Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>


>---------------------------------------------------------------

23f92e4f089cb65e2d824abbbfabde66f298290d
 .../sysdev-realtime/adeos-interrupt-pipeline1.jpg  | Bin 97342 -> 0 bytes
 .../sysdev-realtime/adeos-interrupt-pipeline1.png  | Bin 64857 -> 0 bytes
 slides/sysdev-realtime/sysdev-realtime.tex         |  87 +++++++--------------
 3 files changed, 30 insertions(+), 57 deletions(-)

diff --git a/slides/sysdev-realtime/adeos-interrupt-pipeline1.jpg b/slides/sysdev-realtime/adeos-interrupt-pipeline1.jpg
deleted file mode 100644
index a21e20d4..00000000
Binary files a/slides/sysdev-realtime/adeos-interrupt-pipeline1.jpg and /dev/null differ
diff --git a/slides/sysdev-realtime/adeos-interrupt-pipeline1.png b/slides/sysdev-realtime/adeos-interrupt-pipeline1.png
deleted file mode 100644
index 2aa4f1de..00000000
Binary files a/slides/sysdev-realtime/adeos-interrupt-pipeline1.png and /dev/null differ
diff --git a/slides/sysdev-realtime/sysdev-realtime.tex b/slides/sysdev-realtime/sysdev-realtime.tex
index a4575704..148dcce2 100644
--- a/slides/sysdev-realtime/sysdev-realtime.tex
+++ b/slides/sysdev-realtime/sysdev-realtime.tex
@@ -1036,14 +1036,17 @@ cat /sys/kernel/tracing/tracing_max_latency
       RTOS.
     \item Initial goals: facilitate the porting of programs to GNU /
       Linux.
-    \item Initially related to the RTAI project (as the RTAI / fusion
-      branch), now independent.
-    \item Skins mimicking the APIs of traditional RTOS such as
-      VxWorks, pSOS+, and VRTXsa as well as the POSIX API, and a
-      “native” API.
-    \item Aims at working both as a co-kernel and on top of
-      PREEMPT\_RT in future upstream Linux versions.
-    \item Will never be merged in the mainline kernel.
+    \item Skins mimicking the APIs of the VxWorks and pSOS traditional
+      real-time operating systems, as well as the POSIX API, and offering
+      a “native” API too.
+    \item Offers two solutions:
+      \begin{itemize}
+	 \item {\em Cobalt}: (like {\bf Co}-kernel), using
+	       a micro-kernel dedicated to running real-time tasks.
+	       This will never be merged in the mainline kernel.
+	 \item {\em Mercury}: (like {\bf Mer}ge), based on the mainline
+	       kernel with PREEMPT\_RT.
+      \end{itemize}
     \end{itemize}
     \column{0.2\textwidth}
     \includegraphics[width=\textwidth]{slides/sysdev-realtime/xenomai.png}
@@ -1051,48 +1054,17 @@ cat /sys/kernel/tracing/tracing_max_latency
 \end{frame}
 
 \begin{frame}
-  \frametitle{Xenomai architecture}
+  \frametitle{Xenomai Cobalt architecture}
   \begin{center}
     \includegraphics[height=0.8\textheight]{slides/sysdev-realtime/xenomai-architecture.pdf}
   \end{center}
 \end{frame}
 
-\begin{frame}
-  \frametitle{The Adeos interrupt pipeline abstraction}
-  \begin{itemize}
-  \item From the Adeos point of view, guest OSes are prioritized
-    domains.
-  \item For each event (interrupts, exceptions, syscalls, etc...), the
-    various domains may handle the event or pass it down the pipeline.
-  \end{itemize}
-  \begin{center}
-    \includegraphics[width=0.7\textwidth]{slides/sysdev-realtime/adeos-interrupt-pipeline1.png}
-  \end{center}
-  \tiny Image credits: Xenomai documentation
-\end{frame}
-
-\begin{frame}
-  \frametitle{Xenomai features}
-  \begin{itemize}
-  \item Factored real-time core with skins implementing various
-    real-time APIs
-  \item Seamless support for hard real-time in user space
-  \item No second-class citizen, all ports are equivalent feature-wise
-  \item Xenomai support is as much as possible independent from the
-    Linux kernel version (backward and forward compatible when
-    reasonable)
-  \item Each Xenomai branch has a stable user/kernel ABI
-  \item Timer system based on hardware high-resolution timers
-  \item Per-skin time base which may be periodic
-  \item RTDM skin allowing to write real-time drivers
-  \end{itemize}
-\end{frame}
-
 \begin{frame}
   \frametitle{Xenomai user space real-time support}
   \begin{itemize}
-  \item Xenomai supports real-time in user space on 5 architectures,
-    including 32 and 64 bits variants.
+  \item Supported architectures are the ones supported by the {\em
+    ipipe} patch: arm, arm64, blackfin, powerpc, x86
   \item Two modes are defined for a thread
     \begin{itemize}
     \item the primary mode, where the thread is handled by the Xenomai
@@ -1147,8 +1119,6 @@ cat /sys/kernel/tracing/tracing_max_latency
     \item Character-style device drivers
     \item Network-style device drivers
     \end{itemize}
-  \item See the whitepaper on\\
-    \url{https://www.xenomai.org/documentation/xenomai-2.6/pdf/RTDM-and-Applications.pdf}
   \item Current notable RTDM based drivers:
     \begin{itemize}
     \item Serial port controllers;
@@ -1157,21 +1127,26 @@ cat /sys/kernel/tracing/tracing_max_latency
     \item Analogy, fork of the Comedi project, drivers for acquisition cards.
     \end{itemize}
   \end{itemize}
+  \url{https://xenomai.org/documentation/xenomai-3/html/xeno3prm/group__rtdm.html}
 \end{frame}
 
 \subsection{Setting up Xenomai}
 
-\begin{frame}
-  \frametitle{How to build Xenomai}
+\begin{frame}[fragile]
+  \frametitle{How to build the Xenomai kernel (Cobalt)}
   \begin{itemize}
   \item Download Xenomai sources at
     \url{https://xenomai.org/downloads/xenomai/stable/latest/}
-  \item Download one of the Linux versions supported by this release\\
-    (see \code{ksrc/arch/<arch>/patches/})
-  \item Since version 2.0, split kernel/user building model.
-  \item Kernel uses a script called \code{script/prepare-kernel.sh}
-    which integrates Xenomai kernel-space support in the Linux
-    sources.
+  \item Download the latest {\bf i-pipe} patch for your architecture:\\
+    \url{https://xenomai.org/downloads/ipipe/}
+  \item Download the corresponding kernel.org version
+  \item Xenomai offers a script to patch your kernel. Example (arm):
+\begin{verbatim}
+./scripts/prepare-kernel.sh  \
+    --linux=../linux-4.19.124 \
+    --ipipe=../ipipe-core-4.19.124-cip27-arm-09.patch
+    --arch=arm \
+\end{verbatim}
   \item Run the kernel configuration menu.
   \end{itemize}
 \end{frame}
@@ -1184,7 +1159,7 @@ cat /sys/kernel/tracing/tracing_max_latency
 \end{frame}
 
 \begin{frame}
-  \frametitle{Xenomai user space support}
+  \frametitle{How to build Xenomai user space}
   \begin{itemize}
   \item User space libraries are compiled using the traditional autotools
     \begin{itemize}
@@ -1265,13 +1240,11 @@ ret = bind(s, (struct sockaddr *)&saddr, sizeof(saddr));
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{The native API}
+  \frametitle{Alchemy: the native API}
   Xenomai proposes its own API for developing real-time tasks
   \begin{itemize}
   \item {\small
-    \url{https://xenomai.org/documentation/branches/v2.4.x/pdf/Native-API-Tour-rev-C.pdf}}
-  \item Usable both in user space and kernel space. Development of
-    tasks in user space is the preferred way.
+    \url{https://xenomai.org/documentation/xenomai-3/html/xeno3prm/group__alchemy.html}}
   \item Xenomai developers find it a more coherent and more flexible API
     than the POSIX API, and easier to learn and understand.
   \item However, beware that programming with the POSIX API is much




More information about the training-materials-updates mailing list