Formation
STM32MP2
Réf : PHYTEC-5280
- Durée : 4 ou 5 jours (5ème journée optionnelle)
- Sessions : intra-entreprise
- Plusieurs plates-formes possibles
- Adaptation de contenu sur demande
Cette formation STM32MP2 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
• Maîtriser les commandes usuelles Bitbake
• Installer et mettre en œuvre ses propres layers Yocto
• Gérer la configuration de build Yocto OpenSTLinux pour STM32MP2 MPU
• Optimiser le noyau Linux à sa plate-forme matérielle STM32MP257
• Customiser et construire son image OpenSTLinux 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 Linux Arm® dual core Cortex-A35 avec le SDK Yocto STM32MP2 et l’IDE STM32CubeIDE
Les travaux pratiques de la formation STM32MP2 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 stage de formation STM32MP2 est proposé sur 4 jours pouvant être étendus à 5 pour les clients qui souhaiteraient aborder les problématiques de développement et de mises au point d’applications de Co-Processing Arm® Cortex-A35 et Cortex M33 sur STM32MP257.
Le contenu de la formation STM32MP2 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 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 sur plateforme Arm® dual core Cortex-A35 STM32MP2 sous Linux OS, en exploitant les capacités temps réel du Cortex-M33 pour ceux qui le souhaiteraient.
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
• Rôle de l’outil de construction bitbake
Yocto STM32 MPU OpenSTLinux
• Les layers spécifiques OpenSTLinux
• 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
• Les images applicatives proposées
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
• Notion de packagegroup
• 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
• Étude d’exemples de packagegroup de la distribution OpenSTLinux
• Configuration de la distribution et de l’image à générer pour une machine spécifique STM32MP2
• Importation et gestion d’un projet Yocto OpenSTLinux sous environnement IDE STM32CubeIDE
• Construction d’une image Linux pour kits STM32MP257
Phytec BSP-Yocto-OpenSTLinux-STM32MP2x
• Présentation du Noyau Linux
- Structure des sources
- Séquence de Boot
- Licence GPL et code driver propriétaire
• 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 et de devicetree custom pour kits Phytec ou STMicroelectronics STM32MP257
Customisation d’une Image Yocto openSTLinux
• Ajout d’étapes de construction Bitbake
• Méthodes de débogage de recette
• Notion de classes
Travaux pratiques
• Écriture d’une recette simple Yocto pour l’intégration de votre application à l’image Linux finale.
• Génération et installation d’un SDK Yocto complet 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.
Adaptation du File System Linux de la plateforme STM32MP2
• Utilisation de la variable FILESEXTRAPATHS
• Notion de système de fichiers et points de montage
• Les fichiers de configuration Linux (service, network, udev…)
• Gestion des services sous Linux :
- Présentation de Systemd
- Syntaxe de déclaration d’un service systemd
- Installation d’un service systemd
- Support Systemd sous Yocto
• Notion d’utilisateurs et de droits sur le système de fichiers, read-only-rootfs
• Partitionnement de la mémoire flash (SPI, SD-CARD/eMMC)
Travaux pratiques
• Ajout de fichiers de configuration à une recette pour installation dans l’OS Linux générée sous Yocto
• Écriture d’une recette d’installation d’un utilisateur Linux appartenant au groupe sudoers dans l’image Linux générée par Yocto
• Écriture d’une recette d’installation d’un service systemd au démarrage du système Linux
• Déploiement des packages .deb de mises à jour applicatives et du système Linux embarqué
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 RPMS
Travaux pratiques
• Échanges de données entre firmware Cortex-M33 et application Cortex-A35 Linux via OpenAMP et RPMSG sur pour kits Phytec
phyFLEX-STM32MP2x FPSC, STMicroelectronics STM32MP257F-EV1 ou STM32MP257F-DK2