Skip to content

Commit

Permalink
agenda: add agenda for new PREEMPT_RT training course
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
  • Loading branch information
tpetazzoni committed Oct 26, 2021
1 parent cce9843 commit 3ffc168
Show file tree
Hide file tree
Showing 2 changed files with 417 additions and 0 deletions.
207 changes: 207 additions & 0 deletions agenda/preempt-rt-online-agenda.tex
@@ -0,0 +1,207 @@
\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}

\def \trainingtitle{Real-Time Linux with {\em PREEMPT\_RT} training}
\def \trainingduration{On-line seminar, 3 sessions of 4 hours}
\def \agendalanguage{english}
\def \training{preempt-rt}

\usepackage{agenda}

\begin{document}

\feshowtitle

\feagendasummaryitem{Title}{
{\bf \trainingtitle{}}
}
\feagendasummaryitem{Training objectives}{
\begin{itemize}
\vspace{-0.5cm}
\item Be able to understand the characteristics of a real-time
operating system
\item Be able to download, build and use the {\em PREEMPT\_RT} patch
\item Be able to identify and benchmark the hardware platform in
terms of real-time characteristics
\item Be able to configure the Linux kernel for deterministic
behavior.
\item Be able to develop, trace and debug real-time user-space Linux
applications.
\vspace{-0.5cm}
\end{itemize}
}
\feagendasummaryitem{Duration}{
{\bf Three} half days - 12 hours (4 hours per half day).
}
\onlinepedagogics{preempt-rt}
\feagendasummaryitem{Trainer}{
Maxime Chevallier
\newline \url{https://bootlin.com/company/staff/maxime-chevallier/}
}
\feagendasummaryitem{Language}{
Oral lectures: English
\newline Materials: English.
}
\feagendasummaryitem{Audience}{
Companies and engineers interested in writing and benchmarking
real-time applications and drivers on an embedded Linux system.
}
\feagendasummaryitem{Prerequisites}{
\begin{itemize}
\prerequisiteembeddedlinux
\prerequisiteenglish
\end{itemize}
}
\feagendasummaryitem{Required equipment}{
\begin{itemize}
\item Computer with the operating system of your choice, with the
Google Chrome or Chromium browser for videoconferencing
\item Webcam and microphone (preferably from an audio headset)
\item High speed access to the Internet
\item For people interested in our optional practical labs,
an installation of VirtualBox and about 30 GB of free
disk space.
\end{itemize}
}
\certificate{}
\disabilities{}

\feagendatwocolumn
{Real hardware in practical demos}
{
The hardware platform used for the practical demos of this training
session is the {\bf BeagleBone Black} board, which features:

\begin{itemize}
\item An ARM AM335x processor from Texas Instruments (Cortex-A8
based), 3D acceleration, etc.
\item 512 MB of RAM
\item 2-4 GB of on-board eMMC storage
\item USB host and device
\item HDMI output
\item 2 x 46 pins headers, to access UARTs, SPI buses, I2C buses
and more.
\end{itemize}
}
{}
{
\begin{center}
\includegraphics[width=5cm]{../slides/beagleboneblack-board/beagleboneblack.png}
\end{center}
}

\section{Half day 1}

\feagendaonecolumn
{Lecture - Introduction to Real-Time behaviour and determinism}
{
\begin{itemize}
\item Definition of a Real-Time Operating System
\item Specificities of multi-task systems
\item Common locking and prioritizing patterns
\item Overview of existing Real-Time Operating Systems
\item Approaches to bring Real-Time capabilities to Linux
\end{itemize}
}

\feagendatwocolumn
{Lecture - The {\em PREEMPT\_RT} patch}
{
\begin{itemize}
\item History and future of the {\em PREEMPT\_RT} patch
\item Real-Time improvements from {\em PREEMPT\_RT} in mainline Linux
\item The internals of {\em PREEMPT\_RT}
\item Interrupt handling: threaded interrupts, softirqs
\item Locking primitives: mutexes and spinlocks, sleeping spinlocks
\item Preemption models
\end{itemize}
}
{Demo - Building a mainline Linux Kernel with the {\em PREEMPT\_RT} patch}
{
\begin{itemize}
\item Downloading the Linux Kernel, and applying the patch
\item Configuring the Kernel
\item Booting the Kernel on a BeagleBone Black
\end{itemize}
}

\feagendaonecolumn
{Lecture - Hardware configuration and limitations for Real-Time}
{
\begin{itemize}
\item Interrupts and deep firmwares
\item Interaction with power management features: CPU frequency
scaling and sleep states
\item DMA
\end{itemize}
}

\section{Half day 2}

\feagendatwocolumn
{Lecture - Tools: Benchmarking, Stressing and Analyzing}
{
\begin{itemize}
\item Benchmarking with {\em cyclictest}
\item System stressing with {\em stress-ng} and {\em hackbench}
\item The Linux Kernel tracing infrastructure
\item Latency and scheduling analysis with {\em ftrace}, {\em
kernelshark} or {\em LTTng}
\end{itemize}
}
{Demo - Tools: Benchmarking, Stressing and Analyzing}
{
\begin{itemize}
\item Demonstration of the benchmarking and stress tools
\item Common benchmarking techniques
\item Benchmarking and configuring the BeagleBone Black Wireless
\end{itemize}
}

\feagendaonecolumn
{Lecture - Kernel infrastructures and configuration}
{
\begin{itemize}
\item Good practices when writing Linux kernel drivers
\item Scheduling policies and priorities: {\em SCHED\_FIFO}, {\em
SCHED\_RR}, {\em SCHED\_DEADLINE}
\item CPU and IRQ Affinity
\item Memory management
\item CPU isolation with {\em isolcpus}
\end{itemize}
}

\section{Half day 3}

\feagendatwocolumn
{Lecture - Real-Time Applications programming patterns}
{
\begin{itemize}
\item POSIX real-time API
\item Thread management and configuration
\item Memory management: memory allocation and memory locking, stack
\item Locking patterns: mutexes, priority inheritance
\item Inter-Process Communication
\item Signaling
\end{itemize}
}
{Demo - Debugging a demo application}
{
\begin{itemize}
\item Make a demo userspace application deterministic
\item Use the tracing infrastructure to identify the cause of a latency
\item Learn how to use the POSIX API to manage threads, locking and memory
\item Learn how to use the CPU affinities and configure the scheduling policy
\end{itemize}
}

\feagendaonecolumn
{Questions and Answers}
{
\begin{itemize}
\item Questions and answers with the audience about the course topics
\item Extra presentations if time is left, according what most
participants are interested in.
\end{itemize}
}

\end{document}

0 comments on commit 3ffc168

Please sign in to comment.