[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