Formation
STM32MP15x
Réf : PHYTEC-5182
- Durée : 4 jours
- Sessions : intra-entreprise
- Plates-forme : phyBOARD-Sargas STM32MP157
- 4ème journée au choix : 3 options possibles
Cette formation STM32MP15x est réalisée sur la base de la distribution OpenSTLinux 6.6 Yocto Scarthgap, du BSP-Yocto-OpenSTLinux-STM32MP15x-PD25.1.0, Linux kernel v6.6.
Les travaux pratiques de la formation STM32MP15x sont réalisés sur les Kits Phytec Sargas STM32MP157.
• Maîtriser l’installation et l'utilisation de l’environnement Yocto OpenSTLinux
• Maîtriser les commandes usuelles Bitbake
• Gérer la configuration de build Yocto OpenSTLinux
• Ajouter et mettre en oeuvre ses propres layers Yocto
• Configurer et adapter le noyau linux à sa plate-forme STM32MP157
• Customisez et construire son image OpenSTLinux sous Yocto
• Générer ses propres devicetree à l’aide de STM32CubeMX pour sa plateforme à base de SOM phyCORE-STM32MP15x
• Développer et mettre au point des applications Linux Arm Cortex-A7 avec le SDK Yocto STM32MP1 et l’IDE STM32CubeIDE
Le stage de formation STM32MP15x est proposé sur 4 jours dont la quatrième journée, voir une cinquième journée, pouvant être dédiée aux clients qui souhaiteraient aborder les problématiques suivantes :
• Le Développement et la mise au point d’applications de Co-Processing Arm® Cortex-A7 et Cortex M4 Temps Réel
sur STM32MP157
• Mettre en oeuvre une solution Secure Boot pour Système-On-Module phyCORE-STM32MP15x
• Le Développement et la mise au point d’applications graphiques utilisant le Framework Qt6
Le contenu de la formation STM32MP15x 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 Yocto BSP pour processeurs STM32MP1 est adaptée aux développeurs en informatique et techniciens dans le domaine de Linux embarqué confrontés aux problèmes de portage d’applications sur Système-On-Module phyCORE-STM32MP15x sous Yocto, en exploitant les mécanismes de sécurité du Cortex-A7.
Présentation de Linux pour plateforme STM32MP15x
• Architecture OS Linux
- 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
Le BSP Yocto 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 Yocto : 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
• Écriture et ajout de son propre layer à la compilation du système Linux embarqué Yocto pour MACHINE STM32MP15x
• 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 STM32MP15x
• Génération d’une image Linux pour kit Phytec Sargas STM32MP157
Phytec BSP-Yocto-OpenSTLinux-STM32MP15x
• 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
- Devicetree STM32MP1 : structure et syntaxe
- Mécanismes de devicetree Binding
- Recette Yocto spécifique à la construction du Linux Kernel
• Customisations matérielles de la plateforme à base de SOM phyCORE-STM32MP15x à l’aide du devicetree
- Structure et syntaxe des devicetree sous Linux
- API Kernel devicetree
- Architecture et fichiers devicetree pour phyCORE-STM32MP15x
- Pin Muxing STM32MP2
- Devicetree Overlay
Travaux pratiques
• Ajout de son propre Layer Yocto BSP et création de sa propre machine à base de SOM phyCORESTM32MP15x
• Configuration du noyau Linux pour plateforme STM32MP15x avec l’environnement Yocto devtool
• Mise en oeuvre d’un patch noyau avec l’utilitaire Git sous Yocto
• Customisation du devicetree et du Pin Muxing su System-On-Module phyCORE-STM32MP15x à l’aide de STM32CubeMX
• Génération d’un noyau Linux et de devicetree custom pour kits Phytec Sargas STM32MP157
Customisation d’une Image Yocto OpenSTLinux
• Ajout d’étapes de construction Bitbake
• Méthodes de débogage de recette
• Notion de classes
Travaux pratiques
• 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
kit Phytec Sargas STM32MP157
Customisation du File System
• Notion de FILESEXTRAPATHS
• Notion de système de fichiers et points de montage
• Les fichiers de configurations Linux (service, network, udev…)
• Notion de 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
• Packages management : mises à jour unitaires de composants logiciels dans l’image Linux Yocto
• Partitionnement de la mémoire flash (SPI, NAND, SD-CARD/eMMC)
Travaux pratiques
• Écriture d’une recette simple Yocto pour l’ajout d’une librairie propriétaire/externe à l’image finale de l’OS Linux et au SDK associé.
• Écriture d’une recette simple Yocto pour l’intégration de votre application à l’image filesystem finale.
• 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
Option 1 : Co-Processing Arm Cortex-A7 et Cortex M4 sur STM32MP15x MPU
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
• APIs du noyau Linux et gestion mémoire en Kernel Mode
• Utilisation de pilotes de périphériques de type « character device » simples :
- Fichiers de type device
- Minor/Major number
- Structure de la File Operation
Travaux pratiques
• Compilation et déploiement d’un module driver Linux externe/propriétaire avec le SDK Yocto
Co-Processing Arm Cortex-A7 et Cortex M4 sur STM32MP15x MPU
• Présentation de l’architecture co-processeur
• Firmware STM32CubeMP1 : support OpenAMP et FreeRTOS sur Cortex M4 STM32MP15x
• 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 applications sous Cortex-A Linux et Cortex-M4 via RPMSG et
OpenAMP sur Phytec Sargas STM32MP157
Option 2 : Secure Boot sur SOM phyCORE-STM32MP15x
Mise en oeuvre de la solution Secure Boot du BSP-Yocto-OpenSTLinux-STM32MP15x-PD25.1.0 Phytec
• Context Cortex-A Secure et Non-Secure
• Basic boot chain et trusted boot chain
• Trusted Firmware et Trusted Devices
• Notion de Trusted Application et de secure Monitor
• Crypto support et Signed Bootloader
Travaux Pratiques
• Importation et gestion d’un projet Yocto OpenSTLinux sous environnement IDE STM32CubeIDE
• Mise en oeuvre de Trusted device et limitations STM32MP15x
Support de mises à jour Rauc sur plateforme Secure Boot avec le BSP-Yocto-OpenSTLinux-STM32MP15x-PD25.1.0 Phytec
• Configuration de mises à jour redondantes sur plateforme phyCORE-STM32MP15x : notion de machine et de révision
• Variables d’environnement et script u-boot spécifique Rauc
• Partitionnement Flash eMMC pour mises à jour redondantes
• Bundles : Image RAUC
• Gestion de la signature/cryptage des bundles RAUC
• Services de mise à jour automatisée : USB updater et hawkbit updater
Option 3 : Introduction au développement Qt6 sur plateforme STM32MP157
Intégration Qt6 sur distribution OpenSTLinux Weston
• Layer Yocto meta-qt6
- classe qt6-qmake et projet.pro
- classe qt6-qmake et projet CMake
- Variables environnement QT6
• Support GPU 2D/3D et eglfs sur STM32MP157F
• Configuration spécifique support QtWayland sur STM32MP15x
• Image st-image-weston
• Génération du SDK Yocto Qt6
Travaux Pratiques
• Installation du SDK Yocto Qt 6 sur poste de développement
• Paramétrage du Kit de déploiement sous IDE QtCreator pour cible phyBOARD-Sargas STM32MP157 sous Yocto
• Débogage distant sur cible Phytec phyBOARD-Sargas STM32MP157 sous QtCreator
Introduction à la programmation d’application Qt6 en C++
• Rappel sur les concepts Objets et programmation C++
• Particularités liées à la gestion mémoire sous Qt et QObject parent
• Notions de QMetaClass : Les propriétés, l’introspection ...
• Architecture d’une application Qt6 Tactile et support Touchscreen
• Modules QtCore, QtWidget
• Classe QDialog, modalité et Boîtes de dialogue standards
• QWidget et Qt Designer
• Notion de State Machine et Programmation des IHM sous Qt6
Travaux Pratiques
• Construction d’applications de type QDialog sous environnement Qt Creator
• Initiation à la création d’interface et de Widget avec Qt-Designer
• Déploiement d'une IHM Tactile contrôlée par State Machine sur cible Phytec phyBOARD-Sargas STM32MP157
• Écriture d’une recette Yocto de construction d’une application Qt6 avec installation d’un service systemd au démarrage du
système Linux, spécifique à l’environnement graphique Wayland/Weston sur cible Phytec phyBOARD-Sargas STM32MP157