[FE training-materials-updates] RT slides: remove Xenomai native API slides

Michael Opdenacker michael.opdenacker at free-electrons.com
Fri Nov 10 17:42:53 CET 2017


Repository : git://git.free-electrons.com/training-materials.git
On branch  : master
Link       : http://git.free-electrons.com/training-materials/commit/?id=5fba550003cc5eab24f4aa77920a938c2572f5ae

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

commit 5fba550003cc5eab24f4aa77920a938c2572f5ae
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Fri Nov 10 17:42:53 2017 +0100

    RT slides: remove Xenomai native API slides
    
    - Only for people who choose this way anyway
    - Not a portable solution
    
    Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>


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

5fba550003cc5eab24f4aa77920a938c2572f5ae
 slides/sysdev-realtime/rtpipe.dia          | 272 -----------------------------
 slides/sysdev-realtime/sysdev-realtime.tex | 111 ++----------
 2 files changed, 11 insertions(+), 372 deletions(-)

diff --git a/slides/sysdev-realtime/rtpipe.dia b/slides/sysdev-realtime/rtpipe.dia
deleted file mode 100644
index bb732a5..0000000
--- a/slides/sysdev-realtime/rtpipe.dia
+++ /dev/null
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
-  <dia:diagramdata>
-    <dia:attribute name="background">
-      <dia:color val="#ffffff"/>
-    </dia:attribute>
-    <dia:attribute name="pagebreak">
-      <dia:color val="#000099"/>
-    </dia:attribute>
-    <dia:attribute name="paper">
-      <dia:composite type="paper">
-        <dia:attribute name="name">
-          <dia:string>#Letter#</dia:string>
-        </dia:attribute>
-        <dia:attribute name="tmargin">
-          <dia:real val="2.5399999618530273"/>
-        </dia:attribute>
-        <dia:attribute name="bmargin">
-          <dia:real val="2.5399999618530273"/>
-        </dia:attribute>
-        <dia:attribute name="lmargin">
-          <dia:real val="2.5399999618530273"/>
-        </dia:attribute>
-        <dia:attribute name="rmargin">
-          <dia:real val="2.5399999618530273"/>
-        </dia:attribute>
-        <dia:attribute name="is_portrait">
-          <dia:boolean val="true"/>
-        </dia:attribute>
-        <dia:attribute name="scaling">
-          <dia:real val="1"/>
-        </dia:attribute>
-        <dia:attribute name="fitto">
-          <dia:boolean val="false"/>
-        </dia:attribute>
-      </dia:composite>
-    </dia:attribute>
-    <dia:attribute name="grid">
-      <dia:composite type="grid">
-        <dia:attribute name="width_x">
-          <dia:real val="1"/>
-        </dia:attribute>
-        <dia:attribute name="width_y">
-          <dia:real val="1"/>
-        </dia:attribute>
-        <dia:attribute name="visible_x">
-          <dia:int val="1"/>
-        </dia:attribute>
-        <dia:attribute name="visible_y">
-          <dia:int val="1"/>
-        </dia:attribute>
-        <dia:composite type="color"/>
-      </dia:composite>
-    </dia:attribute>
-    <dia:attribute name="color">
-      <dia:color val="#d8e5e5"/>
-    </dia:attribute>
-    <dia:attribute name="guides">
-      <dia:composite type="guides">
-        <dia:attribute name="hguides"/>
-        <dia:attribute name="vguides"/>
-      </dia:composite>
-    </dia:attribute>
-  </dia:diagramdata>
-  <dia:layer name="Arrière-plan" visible="true" active="true">
-    <dia:object type="Standard - Box" version="0" id="O0">
-      <dia:attribute name="obj_pos">
-        <dia:point val="22.5,12.5"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="22.45,12.45;30.55,15.05"/>
-      </dia:attribute>
-      <dia:attribute name="elem_corner">
-        <dia:point val="22.5,12.5"/>
-      </dia:attribute>
-      <dia:attribute name="elem_width">
-        <dia:real val="8"/>
-      </dia:attribute>
-      <dia:attribute name="elem_height">
-        <dia:real val="2.5"/>
-      </dia:attribute>
-      <dia:attribute name="border_width">
-        <dia:real val="0.10000000149011612"/>
-      </dia:attribute>
-      <dia:attribute name="border_color">
-        <dia:color val="#6a8954"/>
-      </dia:attribute>
-      <dia:attribute name="inner_color">
-        <dia:color val="#c5e387"/>
-      </dia:attribute>
-      <dia:attribute name="show_background">
-        <dia:boolean val="true"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O1">
-      <dia:attribute name="obj_pos">
-        <dia:point val="36.5,12.5"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="36.45,12.45;44.55,15.05"/>
-      </dia:attribute>
-      <dia:attribute name="elem_corner">
-        <dia:point val="36.5,12.5"/>
-      </dia:attribute>
-      <dia:attribute name="elem_width">
-        <dia:real val="8"/>
-      </dia:attribute>
-      <dia:attribute name="elem_height">
-        <dia:real val="2.5"/>
-      </dia:attribute>
-      <dia:attribute name="border_width">
-        <dia:real val="0.10000000149011612"/>
-      </dia:attribute>
-      <dia:attribute name="border_color">
-        <dia:color val="#6a8954"/>
-      </dia:attribute>
-      <dia:attribute name="inner_color">
-        <dia:color val="#c5e387"/>
-      </dia:attribute>
-      <dia:attribute name="show_background">
-        <dia:boolean val="true"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O2">
-      <dia:attribute name="obj_pos">
-        <dia:point val="26.5,13.75"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="22.7525,12.9763;30.2475,14.5237"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#Xenomai application
-uses the rt_pipe_*() API#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.80000000000000004"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="26.5,13.5713"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="2"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O0" connection="8"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O3">
-      <dia:attribute name="obj_pos">
-        <dia:point val="40.5,13.75"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="37.67,12.9763;43.33,14.5237"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#Linux application
-open("/dev/rtpX")#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.80000000000000004"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="40.5,13.5713"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="2"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O1" connection="8"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O4">
-      <dia:attribute name="obj_pos">
-        <dia:point val="30.5,13.75"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="30.4,13.2764;36.6,14.2236"/>
-      </dia:attribute>
-      <dia:attribute name="conn_endpoints">
-        <dia:point val="30.5,13.75"/>
-        <dia:point val="36.5,13.75"/>
-      </dia:attribute>
-      <dia:attribute name="numcp">
-        <dia:int val="1"/>
-      </dia:attribute>
-      <dia:attribute name="line_width">
-        <dia:real val="0.20000000298023224"/>
-      </dia:attribute>
-      <dia:attribute name="start_arrow">
-        <dia:enum val="22"/>
-      </dia:attribute>
-      <dia:attribute name="start_arrow_length">
-        <dia:real val="0.5"/>
-      </dia:attribute>
-      <dia:attribute name="start_arrow_width">
-        <dia:real val="0.5"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow">
-        <dia:enum val="22"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow_length">
-        <dia:real val="0.5"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow_width">
-        <dia:real val="0.5"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O0" connection="4"/>
-        <dia:connection handle="1" to="O1" connection="3"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O5">
-      <dia:attribute name="obj_pos">
-        <dia:point val="32.5,13.5"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="32.5,12.905;34.63,13.6525"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#rt-pipe#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.80000000000000004"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="32.5,13.5"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="0"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-    </dia:object>
-  </dia:layer>
-</dia:diagram>
diff --git a/slides/sysdev-realtime/sysdev-realtime.tex b/slides/sysdev-realtime/sysdev-realtime.tex
index d908406..d1f7460 100644
--- a/slides/sysdev-realtime/sysdev-realtime.tex
+++ b/slides/sysdev-realtime/sysdev-realtime.tex
@@ -1236,111 +1236,22 @@ ret = bind(s, (struct sockaddr *)&saddr, sizeof(saddr));
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{The native API (1)}
+  \frametitle{The native API}
+  Xenomai proposes its own API for developing real-time tasks
   \begin{itemize}
-  \item A Xenomai specific API for developing real-time tasks
-    \begin{itemize}
-    \item {\small
-      \url{http://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.
-    \item More coherent and more flexible API than the POSIX
-      API. Easier to learn and understand. Certainly the way to go for
-      new applications.
-    \end{itemize}
-  \item Applications should include \code{<native/service.h>}, where
-    \code{service} can be \code{alarm}, \code{buffer}, \code{cond},
-    \code{event}, \code{heap}, \code{intr}, \code{misc}, \code{mutex},
-    \code{pipe}, \code{queue}, \code{sem}, \code{task}, \code{timer}
-  \item To compile applications:
-    \begin{block}{}
-\small
-\begin{verbatim}
-CFL=`pkg-config --cflags libxenomai_native`
-LDF=`pkg-config --libs libxenomai_native`
-ARCH-gcc $CFL -o rttest rttest.c $LDF
-\end{verbatim}
-\normalsize
-    \end{block}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{The native API (2)}
-  \begin{itemize}
-  \item Task management services
-    \begin{itemize}
-    \item \code{rt_task_create()}, \code{rt_task_start()},
-      \code{rt_task_suspend()}, \code{rt_task_resume()},
-      \code{rt_task_delete()}, \code{rt_task_join()}, etc.
-    \end{itemize}
-  \item Counting semaphore services
-    \begin{itemize}
-    \item \code{rt_sem_create()}, \code{rt_sem_delete()},
-      \code{rt_sem_p()}, \code{rt_sem_v()}, etc.
-    \end{itemize}
-  \item Message queue services
-    \begin{itemize}
-    \item \code{rt_queue_create()}, \code{rt_queue_delete()},
-      \code{rt_queue_alloc()}, \code{rt_queue_free()},
-      \code{rt_queue_send()}, \code{rt_queue_receive()}, etc.
-    \end{itemize}
-  \item Mutex services
-    \begin{itemize}
-    \item \code{rt_mutex_create()}, \code{rt_mutex_delete()},
-      \code{rt_mutex_acquire()}, \code{rt_mutex_release()}, etc.
-    \end{itemize}
+  \item {\small
+    \url{http://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.
+  \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 portable (ability to use regular Linux, Linux with PREEMPT_RT, Xenomai
+    and other POSIX operating systems).
   \end{itemize}
 \end{frame}
 
 \begin{frame}
-  \frametitle{The native API (3)}
-  \begin{itemize}
-  \item Alarm services
-    \begin{itemize}
-    \item \code{rt_alarm_create()}, \code{rt_alarm_delete()},
-      \code{rt_alarm_start()}, \code{rt_alarm_stop()},
-      \code{rt_alarm_wait()}, etc.
-    \end{itemize}
-  \item Memory heap services
-    \begin{itemize}
-    \item Allows to share memory between processes and/or to
-      pre-allocate a pool of memory
-    \item \code{rt_heap_create()}, \code{rt_heap_delete()},
-      \code{rt_heap_alloc()}, \code{rt_heap_bind()}
-    \end{itemize}
-  \item Condition variable services
-    \begin{itemize}
-    \item \code{rt_cond_create()}, \code{rt_cond_delete()},
-      \code{rt_cond_signal()}, \code{rt_cond_broadcast()},
-      \code{rt_cond_wait()}, etc.
-    \end{itemize}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Xenomai and normal task communication}
-  \begin{itemize}
-  \item Using {\em rt\_pipes}
-  \item In the native Xenomai application, use the Pipe API
-    \begin{itemize}
-    \item \code{rt_pipe_create()}, \code{rt_pipe_delete()},
-      \code{rt_pipe_receive()}, \code{rt_pipe_send()},
-      \code{rt_pipe_alloc()}, \code{rt_pipe_free()}
-    \end{itemize}
-  \item In the normal Linux application
-    \begin{itemize}
-    \item Open the corresponding \code{/dev/rtpX} file, the minor is specified at
-      \code{rt_pipe_create()} time
-    \item Then, just \code{read()} and \code{write()} to the opened file
-    \end{itemize}
-  \end{itemize}
-  \begin{center}
-    \includegraphics[width=0.9\textwidth]{slides/sysdev-realtime/rtpipe.pdf}
-  \end{center}
-\end{frame}
-
-\begin{frame}
   \frametitle{Xenomai worst-case latencies results}
   \begin{itemize}
   \item ARM OMAP5432 1.1 GHz: 24 us




More information about the training-materials-updates mailing list