[bootlin/training-materials updates] preempt-rt: agenda: add agenda for new PREEMPT_RT training course (3ffc1683)

Thomas Petazzoni thomas.petazzoni at bootlin.com
Tue Oct 26 15:44:07 CEST 2021


Repository : https://github.com/bootlin/training-materials
On branch  : preempt-rt
Link       : https://github.com/bootlin/training-materials/commit/3ffc1683ee406694b75a7255ba7ad29c351042a9

>---------------------------------------------------------------

commit 3ffc1683ee406694b75a7255ba7ad29c351042a9
Author: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
Date:   Wed Jun 16 23:18:45 2021 +0200

    agenda: add agenda for new PREEMPT_RT training course
    
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>


>---------------------------------------------------------------

3ffc1683ee406694b75a7255ba7ad29c351042a9
 agenda/preempt-rt-online-agenda.tex    | 207 ++++++++++++++++++++++++++++++++
 agenda/preempt-rt-online-fr-agenda.tex | 210 +++++++++++++++++++++++++++++++++
 2 files changed, 417 insertions(+)

diff --git a/agenda/preempt-rt-online-agenda.tex b/agenda/preempt-rt-online-agenda.tex
new file mode 100644
index 00000000..632a9d75
--- /dev/null
+++ b/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}
diff --git a/agenda/preempt-rt-online-fr-agenda.tex b/agenda/preempt-rt-online-fr-agenda.tex
new file mode 100644
index 00000000..2f876e54
--- /dev/null
+++ b/agenda/preempt-rt-online-fr-agenda.tex
@@ -0,0 +1,210 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\def \trainingtitle{Formation temps-réel sous Linux avec {\em PREEMPT\_RT}}
+\def \trainingduration{Séminaire en ligne, 3 sessions de 4 heures}
+\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 Trois} demi-journées - 12 heures (4 h par demi-journée)
+}
+\onlinepedagogics{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}
+    \prerequisiteembeddedlinux
+    \prerequisiteenglish
+  \end{itemize}
+}
+\feagendasummaryitem{Équipement nécessaire}{
+  \begin{itemize}
+  \item Ordinateur avec le système d'exploitation de votre choix, équipé du
+    navigateur Google Chrome ou Chromium pour la conférence vidéo.
+  \item Une webcam et un micro (de préférence un casque avec micro)
+  \item Une connexion à Internet à haut débit
+  \end{itemize}
+}
+\certificate{}
+\disabilities{}
+
+\feagendatwocolumn
+{Matériel}
+{
+  La plateforme matérielle utilisée pendant les démonstrations 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} demi-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}
+}
+{Démo - 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}
+}
+
+\section{2\textsuperscript{ème} demi-journée}
+
+\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}
+}
+{Démo - outils: Benchmarking, Stress et Analyse}
+{
+  \begin{itemize}
+  \item Démonstration des outils de benchmark et de stress
+  \item Techniques classiques de benchmarking
+  \item Benchmarking et configuration de la BeagleBone Black Wireless
+  \end{itemize}
+}
+
+\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}
+}
+
+\section{3\textsuperscript{ème} demi-journée}
+
+\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}
+}
+{Démo - 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}




More information about the training-materials-updates mailing list