Formation
STM32MP2 RT
Réf : PHYTEC-5281
- Durée : 4 jours
- Sessions : intra-entreprise
- Plusieurs plates-formes possibles
- Adaptation de contenu sur demande
Cette formation STM32MP2 RT est réalisée sur la base de la distribution STMicroelectronics Linux OpenSTLinux 6.6, du BSP-Yocto-OpenSTLinux-STM32MP2 Yocto Scarthgap.
• Maîtriser l’installation et l'utilisation de l’environnement Yocto OpenSTLinux RT
• Maîtriser les commandes usuelles Bitbake
• Installer et mettre en œuvre ses propres layers Yocto
• Gérer la configuration de build Yocto OpenSTLinux RT pour STM32MP2 MPU
• Optimiser le noyau Linux PREEMPT-RT à sa plate-forme matérielle STM32MP257
• Customiser et construire son image OpenSTLinux RT avec Yocto sous STM32CubeIDE
• Générer ses propres devicetree à l’aide de STM32CubeMX pour sa plateforme STM32MP257
• Adapter les drivers du noyau Linux pour STM32MP2 MPU
• Porter ses applications Temps Réel Linux Arm® dual core Cortex-A35 avec le SDK OpenSTLinux RT STM32MP2 et
l’IDE STM32CubeIDE
Les travaux pratiques de la formation STM32MP2 RT peuvent être réalisés au choix, sur les équipements suivants :
• Phytec phyFLEX-STM32MP2x FPSC
• Discovery Kit STMicroelectronics STM32MP257F-DK
• Evaluation Board STMicroelectronics STM32MP257F-EV1
Le contenu de la formation STM32MP2 RT peut être également adapté aux besoins clients, en renforçant certains points techniques de manière à mieux couvrir les attentes des stagiaires à l’issue de ce stage.
Notre formation STM32MP2 RT est adaptée aux développeurs en informatique et techniciens dans le domaine de Linux embarqué confrontés aux problématiques d’adaptation de Board Support Package Yocto et de portage d’applications Temps Réel sur plateforme Arm® dual core Cortex-A35 STM32MP2 sous Linux OS, en exploitant les capacités temps réel du Cortex-M33.
Des connaissances de programmation en langage C et en environnement utilisateur UNIX/Linux sont souhaitables.
Présentation de Linux pour plateforme STM32MP2
• Architecture OS Linux STM32MP
- Arm Trusted Firmware
- u-boot
- Linux kernel + Devicetree
- Rootfs muti-partionning
• Distribution OpenSTLinux packagin
Projet Yocto
• Présentation du projet Yocto
• OpenEmbedded Core et poky
• Notion de Layers et de Recettes
• Les utilitaires GIT et repo : installation des sources Yocto OpenSTLinux RT
• Rôle de l’outil de construction bitbake
Yocto STM32 MPU OpenSTLinux Temps Réel
• Les layers spécifiques OpenSTLinux RT
• Les layers spécifiques Phytec BSP
• Notions de MACHINE et de DISTRO
• Fichier local.conf et réglages globaux d’un projet de Build Yocto
Environnement Yocto OpenSTLinux
• Recettes Yocto et syntaxe Bitbake
• Méthodologie de customisation de recettes : fichiers bbappend et priorités de Layers
• Recette minimale de construction de paquetage
• Gestion des dépendances : notions de OVERRIDES et de FEATURES
Travaux pratiques
• Création de son propre layer à la compilation du système Linux embarqué Yocto pour MACHINE STM32MP2
• Optimisation d’une configuration de BSP avec gestion des OVERRIDES et des FEATURES
• Configuration de la distribution et de l’image à générer pour une machine spécifique STM32MP2
• Construction d’une image Linux Temps Réel pour kits STM32MP257
Phytec Yocto STM32 MPU BSP Temps Réel
• Présentation du Noyau Linux
- Structure des sources
- Séquence de Boot
- Licence GPL et code driver propriétaire
- Extension Temps Réel PREEMPT-R
• Choix des périphériques supportés sous Linux
- Driver Linux et Kconfig
- Mécanismes de devicetree Binding
- Recette Yocto spécifique à la construction du Linux Kernel
Travaux pratiques
• Ajout de son propre Layer Yocto BSP et création de sa propre plateforme STM32MP2
• Configuration du noyau Linux pour STM32MP2 MPU avec l’environnement Yocto devtool
• Ajout d’un patch noyau avec l’utilitaire Git sous Yocto
• Construction d’un noyau Linux PREEMPT-RT et de devicetree pour kits Phytec ou STMicroelectronics STM32MP257
Multitâche Temps Réel et Threads POSIX 1003.b et 1003.c sous OpenSTLinux RT
• Gestion des priorités
• Mode d’ordonnancement : FIFO, ROUND ROBIN et OTHER
• Tâches et processus Temps Réel POSIX
Synchronisation et communication entre Threads POSIX
• Signaux POSIX, Timers
• Sémaphores et Mutex
• File de messages POSIX
Travaux pratiques
• Génération et installation d’un SDK OpenSTLinux RT pour poste de développement
• Mise en œuvre du SDK Yocto sous IDE STM32CubeIDE : configuration, compilation et débogage sur kits Phytec
ou STMicroelectronics STM32MP257
• Programmation d’une tâche CAN bus de traitement périodique à très faible latence sur cible Phytec ou
STMicroelectronics STM32MP257
Introduction au développement de pilotes de périphériques sous Linux
• Introduction à la programmation en mode noyau
• Architecture d’un module driver simple
- Chargement et déchargement de modules Linux
- Makefile d’un module Linux Kernel
- Fonctions init et exit
- Utilisation de Module Parameters
- Interactions avec le Sysfs et Procfs
Travaux pratiques
• Recette Yocto de création d’un package d’installation d’un driver Linux externe/propriétaire
Introduction au développement de pilotes Linux /Pilotes de périphériques sous Linux (SUITE)
• Les pilotes de périphériques de type « character device » simples :
- Fichiers de type device
- Numéros Majeur/Mineur
- Structure de la File Operation d’un « character device »
• APIs du noyau Linux
- Allocations Mémoire en Kernel Mode
- Hardware Managing
- Handler d’Interruption
- Accès aux I/O et memory-mapped
- Memory mapping (“mmap”)
- Support DMA
Travaux pratiques
• Compilation et déploiement d’un module Linux externe/propriétaire avec le SDK Yocto
Customisations matérielles de la plateforme STM32MP2 à l’aide du devicetree
- Structure et syntaxe des devicetree sous Linux
- API Kernel devicetree
- Architecture et fichiers devicetree pour STM32MP2
- Pin Muxing STM32MP2
- Devicetree Overlay
Travaux pratiques
• Customisation du devicetree et du Pin Muxing de la plateforme STM32MP257 à l’aide de STM32CubeMX
• Développement d’un driver bloquant, gestion d’interruption sur plateforme Phytec ou STMicroelectronics STM32MP2 MPU
avec support devicetree binding
Solution Co-Processing Arm® Cortex-A35 et Cortex-M33 sur STM32MP257 MPU
• Présentation de l’architecture co-processeur
• Linux devicetree pour application Co-Processing STM32MP2
• Chargement automatique du firmware M33 au démarrage de la plateforme
• Chargement dynamique du firmware M33 sous Linux
• Linux RemoteProc support
• Multi-Core Ressources management
Travaux pratiques
• Définition des ressources partagées via STM32CubeMX
• Mise au point du firmware M33 sous STM32CubeIDE
Mécanismes de communication Inter Processeurs Arm® Cortex-M33 / Cortex-A35
• Notions de Domain ID et Ressources partagées
• API OpenAMP Cortex-M33
• Drivers Linux RPMSG
Travaux pratiques
• Échanges de données entre firmware Temps Réel Cortex-M33 et application Cortex-A35 Linux PREEMPT-RT via OpenAMP et
RPMSG sur kits Phytec phyFLEX-STM32MP2x FPSC, STMicroelectronics STM32MP257F-EV1 ou STM32MP257F-DK2