[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