Skip to content

Commit

Permalink
agenda: use commands to refactor the preempt-rt agenda
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Bonnefille <[email protected]>
  • Loading branch information
Taumille committed Nov 30, 2024
1 parent e6db7c4 commit e5abd8c
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 558 deletions.
143 changes: 2 additions & 141 deletions agenda/preempt-rt-agenda.tex
Original file line number Diff line number Diff line change
Expand Up @@ -13,147 +13,8 @@

\feshowinfo

\feagendatwocolumn
{Hardware platform for practical labs}
{
{\bf STMicroelectronics STM32MP157D Discovery Kit~1} board
\begin{itemize}
\item STM32MP157D (dual Cortex-A7) processor from STMicroelectronics
\item USB powered
\item 512 MB DDR3L RAM
\item Gigabit Ethernet port
\item 4 USB 2.0 host ports
\item 1 USB-C OTG port
\item 1 Micro SD slot
\item On-board ST-LINK/V2-1 debugger
\item Arduino compatible headers
\item Audio codec, buttons, LEDs
\end{itemize}
}
{}
{
\begin{center}
\includegraphics[width=5cm]{../slides/discovery-board-dk1/discovery-board-dk1.png}
\end{center}
}
\showboarditem{stm32mp1}

\section{Day 1 - Morning}

\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 the target hardware
\end{itemize}
}

\section{Day 1 - Afternoon}

\feagendaonecolumn
{Lecture - Hardware configuration and limitations for Real-Time}
{
\begin{itemize}
\item Interrupts and deep firmware
\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 hardware platform
\end{itemize}
}

\section{Day 2 - Morning}

\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}
}

\feagendaonecolumn
{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}
}

\section{Day 2 - Afternoon}

\feagendaonecolumn
{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}
}
\onsiteagenda

\end{document}
144 changes: 2 additions & 142 deletions agenda/preempt-rt-fr-agenda.tex
Original file line number Diff line number Diff line change
Expand Up @@ -13,148 +13,8 @@

\feshowinfo

\feagendatwocolumn
{Plateforme matérielle pour les travaux pratiques}
{
Carte {\bf STMicroelectronics STM32MP157D Discovery Kit~1}
\begin{itemize}
\item Processeur STM32MP157D (dual Cortex-A7) de STMicroelectronics
\item Alimentation par USB
\item 512 MB DDR3L RAM
\item Ethernet Gigabit
\item 4 ports USB 2.0 hôte
\item 1 port USB-C OTG
\item 1 slot Micro SD
\item Debugger ST-LINK/V2-1
\item Connecteurs compatibles Arduino
\item Codec audio, boutons, LEDs
\end{itemize}
}
{}
{
\begin{center}
\includegraphics[width=5cm]{../slides/discovery-board-dk1/discovery-board-dk1.png}
\end{center}
}
\showboarditem{stm32mp1}

\section{1\textsuperscript{ère} journée - Matin}

\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
\end{itemize}
}

\section{1\textsuperscript{ère} journée - Après-midi}

\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 plateforme matérielle
\end{itemize}
}

\section{2\textsuperscript{ème} journée - Matin}

\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}
}

\feagendaonecolumn
{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}
}

\section{2\textsuperscript{ème} journée - Après-midi}

\feagendaonecolumn
{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}
}
\onsiteagenda

\end{document}
Loading

0 comments on commit e5abd8c

Please sign in to comment.