[bootlin/training-materials updates] master: agenda: add on-site agenda to PREEMPT_RT course (2b364e37)
Thomas Petazzoni
thomas.petazzoni at bootlin.com
Wed Oct 27 11:05:39 CEST 2021
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/2b364e37cb91710ab18ff4bcf35f642416ca16a1
>---------------------------------------------------------------
commit 2b364e37cb91710ab18ff4bcf35f642416ca16a1
Author: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
Date: Wed Oct 27 11:05:08 2021 +0200
agenda: add on-site agenda to PREEMPT_RT course
Plus a few tweaks in the online agendas as well.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
>---------------------------------------------------------------
2b364e37cb91710ab18ff4bcf35f642416ca16a1
agenda/preempt-rt-agenda.tex | 196 ++++++++++++++++++++++++++++++++
agenda/preempt-rt-fr-agenda.tex | 202 +++++++++++++++++++++++++++++++++
agenda/preempt-rt-online-agenda.tex | 3 +-
agenda/preempt-rt-online-fr-agenda.tex | 5 +-
4 files changed, 403 insertions(+), 3 deletions(-)
diff --git a/agenda/preempt-rt-agenda.tex b/agenda/preempt-rt-agenda.tex
new file mode 100644
index 00000000..dba919b3
--- /dev/null
+++ b/agenda/preempt-rt-agenda.tex
@@ -0,0 +1,196 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\def \trainingtitle{Real-Time Linux with {\em PREEMPT\_RT} training}
+\def \trainingduration{On-site training, 2 days}
+\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 Two} days - 16 hours (8 hours per day).
+}
+\onsitepedagogics{50}{50}{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}
+ \prerequisitecommandline
+ \prerequisiteembeddedlinux
+ \prerequisiteenglish
+ \end{itemize}
+}
+\ferequiredequipmentonsite{}
+\certificate{}
+\disabilities{}
+
+\feagendatwocolumn
+{Hardware in practical labs}
+{
+ The hardware platform used for the practical labs 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{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}
+}
+{Lab - 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}
+}
+
+\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}
+}
+{Lab - Tools: Benchmarking, Stressing and Analyzing}
+{
+ \begin{itemize}
+ \item Usage of benchmarking and stress tools
+ \item Common benchmarking techniques
+ \item Benchmarking and configuring the BeagleBone Black Wireless
+ \end{itemize}
+}
+
+\section{Day 2}
+
+\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}
+}
+
+\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}
+}
+{Lab - 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}
diff --git a/agenda/preempt-rt-fr-agenda.tex b/agenda/preempt-rt-fr-agenda.tex
new file mode 100644
index 00000000..efdab65c
--- /dev/null
+++ b/agenda/preempt-rt-fr-agenda.tex
@@ -0,0 +1,202 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\def \trainingtitle{Formation temps-réel sous Linux avec {\em PREEMPT\_RT}}
+\def \trainingduration{Formation sur site, 2 jours}
+\def \agendalanguage{french}
+\def \training{preempt-rt}
+
+\usepackage{agenda}
+
+\begin{document}
+
+\feshowtitle
+
+\feagendasummaryitem{Title}{
+ {\bf \trainingtitle{}}
+}
+\feagendasummaryitem{Objectifs\newline opérationnels}{
+ \begin{itemize}
+ \vspace{-0.5cm}
+ \item Être capable de comprendre et de maîtriser les
+ caractéristiques d'un système d'exploitation temps-réel
+ \item Être capable de télécharger, compiler et utiliser le patch
+ {\em PREEMPT\_RT}
+ \item Être capable d'identifier et de benchmarker la plateforme
+ matérielle en terme de caractéristiques temps-réel
+ \item Être capable de configurer le noyau Linux pour un comportement
+ déterministe
+ \item Être capable de développer, de tracer et de débugger des
+ applications user-space temps-réel.
+ \vspace{-0.5cm}
+ \end{itemize}
+}
+\feagendasummaryitem{Duration}{
+ {\bf Deux} journées - 16 heures (8 h par jour)
+}
+\onsitepedagogics{50}{50}{preempt-rt}
+\feagendasummaryitem{Formateur}{
+ Maxime Chevallier
+ \newline \url{https://bootlin.com/company/staff/maxime-chevallier/}
+}
+\feagendasummaryitem{Langue}{
+ Présentations : Français
+ \newline Supports : Anglais
+}
+\feagendasummaryitem{Audience}{
+ Entreprises et ingénieurs intéressés dans le développement et le
+ benchmarking d'applications et de drivers temps-réel pour un système
+ Linux embarqué.
+}
+\feagendasummaryitem{Pré-requis}{
+ \begin{itemize}
+ \prerequisitecommandline
+ \prerequisiteembeddedlinux
+ \prerequisiteenglish
+ \end{itemize}
+}
+\ferequiredequipmentonsite{}
+\certificate{}
+\disabilities{}
+
+\feagendatwocolumn
+{Matériel}
+{
+ La plateforme matérielle utilisée pendant les travaux pratiques de
+ cette formation est la carte {\bf BeagleBone Black}, dont voici les
+ caractéristiques :
+
+ \begin{itemize}
+ \item Un processeur ARM AM335x de Texas Instruments (à base de
+ Cortex-A8), avec accélération 3D, etc.
+ \item 512 Mo de RAM
+ \item 2-4 Go de stockage eMMC
+ \item USB hôte et device
+ \item Sortie HDMI
+ \item Connecteurs à 2 x 46 broches, pour accéder aux UARTs, aux
+ bus SPI, aux bus I2C, et à d'autres entrées/sorties du
+ processeur.
+ \end{itemize}
+}
+{}
+{
+ \begin{center}
+ \includegraphics[height=5cm]{../slides/beagleboneblack-board/beagleboneblack.png}
+ \end{center}
+}
+
+\section{1\textsuperscript{ère} journée}
+
+\feagendaonecolumn
+{Cours - Introduction au comportement temps-réel et au déterminisme}
+{
+ \begin{itemize}
+ \item Définition d'un système d'exploitation temps-réel
+ \item Spécificigés des systèmes multi-tâches
+ \item Principaux patterns de verrouillage et de gestion des priorités
+ \item Aperçu des systèmes temps-réel existants
+ \item Approches pour apporter un comportement temps-réel à Linux
+ \end{itemize}
+}
+
+\feagendatwocolumn
+{Cours - Le patch {\em PREEMPT\_RT}}
+{
+ \begin{itemize}
+ \item Histoire et avenir du patch {\em PREEMPT\_RT}
+ \item Améliorations temps-réel provenant de {\em PREEMPT\_RT} dans le noyau Linux officiel
+ \item Fonctionnement interne de {\em PREEMPT\_RT}
+ \item Gestion des interruptions: interruptions threadées, softirqs
+ \item Primitives de verouillage: mutexes et spinlocks, spinlocks avec sommeil
+ \item Modèles de préemption
+ \end{itemize}
+}
+{TP - Compiler un noyau Linux avec {\em PREEMPT\_RT}}
+{
+ \begin{itemize}
+ \item Télécharger le noyau Linux et appliquer le patch {\em PREEMPT\_RT}
+ \item Configurer le noyau Linux
+ \item Démarrer le kernel sur une plateforme matérielle, la
+ BeagleBone Black Wireless
+ \end{itemize}
+}
+
+\feagendaonecolumn
+{Cours - Configuration et limites du matériel pour le temps-réel}
+{
+ \begin{itemize}
+ \item Interruptions et firmware
+ \item Interaction avec les fonctionnalités de gestion d'énergie:
+ gestion dynamique de la fréquence du CPU et états de sommeil
+ \item DMA
+ \end{itemize}
+}
+
+\feagendatwocolumn
+{Cours - Outils: Benchmarking, Stress et Analyse}
+{
+ \begin{itemize}
+ \item Benchmarking avec {\em cyclictest}
+ \item Stress du système avec {\em stress-ng} et {\em hackbench}
+ \item L'infrastructure de {\em tracing} du noyau Linux
+ \item Analyse de la latence et de l'ordonnancement avec {\em
+ ftrace}, {\em kernelshark} ou {\em LTTng}
+ \end{itemize}
+}
+{TP - Outils: Benchmarking, Stress et Analyse}
+{
+ \begin{itemize}
+ \item Utilisation des outils de benchmark et de stress
+ \item Techniques classiques de benchmarking
+ \item Benchmarking et configuration de la BeagleBone Black Wireless
+ \end{itemize}
+}
+
+\section{2\textsuperscript{ème} journée}
+
+\feagendaonecolumn
+{Cours - Infrastructures du noyau Linux et configuration}
+{
+ \begin{itemize}
+ \item Bonnes pratiques pour le développement de drivers noyau Linux
+ pour des systèmes temps-réel
+ \item Politiques d'ordonnancement et priorités: {\em SCHED\_FIFO},
+ {\em SCHED\_RR}, {\em SCHED\_DEADLINE}
+ \item Affinité CPU et IRQ
+ \item Gestion mémoire
+ \item Isolution des CPUs avec {\em isolcpus}
+ \end{itemize}
+}
+
+\feagendatwocolumn
+{Cours - Patterns de développement d'applications temps-réel}
+{
+ \begin{itemize}
+ \item API POSIX pour les applications temps-réel
+ \item Gestion et configuration des threads
+ \item Gestion mémoire: allocation mémoire et verouillage mémoire, gestion de la pile
+ \item Patterns de verrouillage: mutexes, héritage de priorité
+ \item Communication inter-processus (IPC)
+ \item Signalisation
+ \end{itemize}
+}
+{TP - Débugger une application de démonstration}
+{
+ \begin{itemize}
+ \item Créer une application de démonstration déterministe
+ \item Utiliser l'infrastructure de {\em tracing} pour identifier la source de latence
+ \item Apprendre à utiliser l'API POSIX pour gérer les threads, le verouillage, la mémoire
+ \item Apprendre à utiliser l'affinité CPU et configurer la politique d'ordonnancement
+ \end{itemize}
+}
+
+\feagendaonecolumn
+{Questions / réponses}
+{
+ \begin{itemize}
+ \item Questions / réponses avec les participants autour du noyau Linux
+ \item Des présentations supplémentaires s'il reste du temps, selon les sujets
+ qui intéressent le plus les participants.
+ \end{itemize}
+}
+
+\end{document}
diff --git a/agenda/preempt-rt-online-agenda.tex b/agenda/preempt-rt-online-agenda.tex
index 632a9d75..595ce561 100644
--- a/agenda/preempt-rt-online-agenda.tex
+++ b/agenda/preempt-rt-online-agenda.tex
@@ -47,6 +47,7 @@
}
\feagendasummaryitem{Prerequisites}{
\begin{itemize}
+ \prerequisitecommandline
\prerequisiteembeddedlinux
\prerequisiteenglish
\end{itemize}
@@ -151,7 +152,7 @@
{Demo - Tools: Benchmarking, Stressing and Analyzing}
{
\begin{itemize}
- \item Demonstration of the benchmarking and stress tools
+ \item Usage of benchmarking and stress tools
\item Common benchmarking techniques
\item Benchmarking and configuring the BeagleBone Black Wireless
\end{itemize}
diff --git a/agenda/preempt-rt-online-fr-agenda.tex b/agenda/preempt-rt-online-fr-agenda.tex
index 2f876e54..1c4066fa 100644
--- a/agenda/preempt-rt-online-fr-agenda.tex
+++ b/agenda/preempt-rt-online-fr-agenda.tex
@@ -49,6 +49,7 @@
}
\feagendasummaryitem{Pré-requis}{
\begin{itemize}
+ \prerequisitecommandline
\prerequisiteembeddedlinux
\prerequisiteenglish
\end{itemize}
@@ -150,10 +151,10 @@
ftrace}, {\em kernelshark} ou {\em LTTng}
\end{itemize}
}
-{Démo - outils: Benchmarking, Stress et Analyse}
+{Démo - Outils: Benchmarking, Stress et Analyse}
{
\begin{itemize}
- \item Démonstration des outils de benchmark et de stress
+ \item Utilisation des outils de benchmark et de stress
\item Techniques classiques de benchmarking
\item Benchmarking et configuration de la BeagleBone Black Wireless
\end{itemize}
More information about the training-materials-updates
mailing list