diff --git a/agenda/preempt-rt-agenda.tex b/agenda/preempt-rt-agenda.tex index d9b86f1919..413f9876d6 100644 --- a/agenda/preempt-rt-agenda.tex +++ b/agenda/preempt-rt-agenda.tex @@ -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} diff --git a/agenda/preempt-rt-fr-agenda.tex b/agenda/preempt-rt-fr-agenda.tex index 614b29807d..6599ed6ef1 100644 --- a/agenda/preempt-rt-fr-agenda.tex +++ b/agenda/preempt-rt-fr-agenda.tex @@ -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} diff --git a/agenda/preempt-rt-online-agenda.tex b/agenda/preempt-rt-online-agenda.tex index a40ec6040d..dc4491d2a7 100644 --- a/agenda/preempt-rt-online-agenda.tex +++ b/agenda/preempt-rt-online-agenda.tex @@ -13,143 +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{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 the target hardware - \end{itemize} -} - -\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} -} - -\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 Usage of benchmarking and stress tools - \item Common benchmarking techniques - \item Benchmarking and configuring the hardware platform - \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} -} +\onlineagenda \end{document} diff --git a/agenda/preempt-rt-online-fr-agenda.tex b/agenda/preempt-rt-online-fr-agenda.tex index c3dd4cc37c..d44d7f4675 100644 --- a/agenda/preempt-rt-online-fr-agenda.tex +++ b/agenda/preempt-rt-online-fr-agenda.tex @@ -13,144 +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} 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 - \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 Utilisation des outils de benchmark et de stress - \item Techniques classiques de benchmarking - \item Benchmarking et configuration de la plateforme matérielle - \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} -} +\onlineagenda \end{document}