[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