Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
agenda: add agenda for new PREEMPT_RT training course
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
- Loading branch information
1 parent
cce9843
commit 3ffc168
Showing
2 changed files
with
417 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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} |
Oops, something went wrong.