Formation
STM32MP1
Réf : PHYTEC-5180
- Durée : 4 ou 5 jours (5ème journée optionnelle)
- Sessions : intra-entreprise
- Plusieurs plateformes possibles (voir rubrique objectifs)
- Adaptation de contenu sur demande
Cette formation STM32MP1 est réalisée sur la base de la distribution OpenSTLinux 6.6 Yocto Scarthgap,
du BSP-Yocto-OpenSTLinux-STM32MP1 (Linux kernel v6.6).
- Maîtriser l’installation et l'utilisation de l’environnement STMicroelectronics Yocto OpenSTLinux
- Maîtriser les commandes usuelles Bitbake
- Ajouter et mettre en oeuvre ses propres layers Yocto
- Gérer la configuration de build Yocto OpenSTLinux pour Machine STM32MP1 MPU
- Configurer et adapter le noyau Linux à sa plate-forme STM32MP13 ou STM32MP15
- Customiser et construire son image OpenLinuxST avec Yocto sous STM32CubeIDE
- Générer ses propres devicetree à l’aide de STM32CubeMX pour plateforme STM32MP1
- Adapter les drivers du noyau Linux pour STM32MP1 MPU
- Développer et mettre au point des applications Linux Arm® Cortex-A7 avec le SDK Yocto STM32MP1 et l’IDE STM32CubeIDE
Les travaux pratiques formation STM32MP1 peuvent être réalisés au choix, sur les plateformes matérielles suivantes :
- Phytec Segin STM32MP13x
- Phytec Sargas STM32MP157
- Discovery Kit STMicroelectronics STM32MP135F-DK
- Discovery Kit STMicroelectronics STM32MP157F-DK2
- Evaluation Board STMicroelectronics STM32MP157F-EV1
La formation STM32MP1 est proposée sur 4 journées, pouvant être étendues à 5 pour les clients qui souhaiteraient aborder le développement et la mise au point d’applications Co-Processing Arm® Cortex-A7 et Cortex M4 sur plateforme STM32MP157.
Le contenu de la formation STM32MP1 peut être également adapté aux besoins clients, en renforçant certains aspects plus que d’autres, afin de mieux couvrir les attentes des stagiaires à l’issue du stage.
Notre formation STM32MP1 MPU 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 système STM32MP1 sous Linux OS.
Présentation de Linux pour plateforme STM32MP1
• Architecture OS Linux STM32MP
- Arm Trusted Firmware
- u-boot
- Linux kernel + Devicetree
- Rootfs muti-partionning
• Distribution OpenSTLinux packaging
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
• Notions de packagegroup
• Gestion des dépendances : notions de OVERRIDES et de FEATURES
Travaux pratiques
• Écriture et ajout de son propre layer à la compilation du système Linux embarqué Yocto pour MACHINE STM32MP1
• Mise en oeuvre d’une configuration de BSP avec gestion des OVERRIDES et des FEATURES
• Analyse d’exemples de packagegroup de la distribution OpenSTLinux
• Configuration de la distribution et de l’image à générer pour une machine spécifique STM32MP1
• Importation et gestion d’un projet Yocto OpenSTLinux sous environnement IDE STM32CubeIDE
• Génération d’une image Linux pour kits STM32MP13x ou STM32MP157
Phytec Yocto STM32 MPU BSP
• Présentation du Noyau Linux
- Sources
- Boot Sequence
- 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 creation de sa propre MACHINE STM32MP1
• Configuration du noyau Linux pour plateforme STM32MP1 avec l’environnement Yocto devtool
• Mise en oeuvre d’un patch noyau avec l’utilitaire Git sous Yocto
• Génération d’un noyau Linux et de devicetree custom pour kits Phytec ou STMicroelectronics STM32MP1 MPU
Customisation d’une Image Yocto openSTLinux
• Ajout d’étapes de construction Bitbake
• Méthodes de débogage de recette
• Notion de classes
• Package Management
Travaux pratiques
• Écriture d’une recette simple Yocto pour l’intégration de votre application à l’image Linux finale.
• Génération et déploiement d’un SDK Yocto complet
• Mise en oeuvre du SDK Yocto sous IDE STM32CubeIDE : configuration, compilation et débogage sur kits Phytec ou
STMicroelectronics STM32MP135 ou STM32MP157
Customisation du File System Linux embarqué
• Notion de FILESEXTRAPATHS
• Notion de système de fichiers et points de montage
• Les fichiers de configurations Linux (service, network, udev…)
• Services Systemd :
- Présentation
- Syntaxe de déclaration d’un service systemd
- Installation d’un service systemd
- Support Systemd avec Yocto
• Notion d’utilisateurs et de droits sur le système de fichiers, read-only-rootfs
• Partitionnement de la mémoire de masse (SPI, NAND, SD-CARD/eMMC)
Travaux pratiques
• Ajout de fichiers de configuration à une recette pour installation dans l’image Linux générée par 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 dans l’image Linux générée par Yocto
• Déploiement des packages .deb de mises à jour des applications et de l’OS Linux embarqué
Introduction au développement de pilotes Linux /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 de module Linux
- Fonctions init et exit
- Utilisation de Module Parameters
- Interactions avec le Sysfs et Procfs
Travaux pratiques
• Recette de génération d’un package Yocto d’un module Linux externe/propriétaire
Introduction au développement de pilotes Linux /Pilotes de périphériques sous Linux (Suite)
• Utilisation de pilotes de périphériques de type « character device » simples :
- Fichiers de type device
- Major/Minor number
- Structure de la File Operation
• APIs du noyau Linux et gestion mémoire en Kernel Mode
- Managing hardware
- Memory allocation
- Interrupt handling
- I/O and memory-mapped access
- Memory mapping (“mmap”)
- DMA
Travaux pratiques
• Compilation et déploiement d’un module Linux externe/propriétaire avec le SDK Yocto
Adaptations matérielles de la plateforme STM32MP1 à l’aide du devicetree
- Structure et syntaxe des devicetree sous Linux
- API Kernel devicetree
- Devicetree STM32MP1 : Architecture et fichiers
- Devicetree STM32MP1 : Pin MUXING
- Devicetree Overlay
Travaux pratiques
• Customisation du devicetree et du Pin Muxing de la plateforme STM32MP13 ou STM32MP15 à l’aide de STM32CubeMX
• Driver bloquant, gestion d’interruption sur plateforme Phytec ou STMicroelectronics STM32MP1 MPU avec support devicetree binding
Co-Processing Arm® Cortex-A7 et Cortex M4 sur STM32MP15 MPU
• Présentation de l’architecture co-processeur
• Linux devicetree pour application Co-Processing
• Chargement automatique du firmware M4 au boot
• Chargement dynamique du firmware M4 sous Linux
• Linux RemoteProc support
• Multi-Core Ressources management
Travaux pratiques
• Définition des ressources partagées via STM32CubeMX
• Mise au point du firmware M4 sous STM32CubeIDE
Concept de communication Inter Processeurs Cortex-M4 / Cortex-A7
• Notion de Domain ID et Ressources partagées
• API OpenAMP M4
• Drivers RPMSG Linux
Travaux pratiques
• Échanges de données entre application Linux Cortex-A7 et firmware Cortex-M4 via RPMSG et OpenAMP sur pour kits Phytec
Sargas STM32MP157, STMicroelectronics STM32MP157F-EV1 ou STM32MP157F-DK2