Formation Yocto Real-time Edge BSP i.MX93
5 jours
Réf : PHYTEC-5144
- Durée : 4 jours - 5 ème journée optionnelle
- Sessions : intra-entreprise
- Plate-forme: i.MX 91 / i.MX 93
- Adaptation de contenu sur demande
Présentation de Linux pour les solutions NXP i.MX 91 ou i.MX93
• Architecture OS Linux NXP i.MX 91/93
- 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 Real-time Edge Yocto BSP iMX93
• Rôle de l’outil de construction bitbake
Le BSP LinRT Oxygen Yocto 5.0 Scarthgap pour i.MX91 et i.MX93
• Les layers spécifiques NXP Yocto Real-time Edge
• Les layers spécifiques FSL Community BSP
• Les layers spécifiques LinRT Oxygen 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 LinRT Oxygen
• 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 i.MX93
• Optimisation d’une configuration de BSP avec gestion des OVERRIDES et des FEATURES
• Étude d’exemples de packagegroup de la distribution linrt-oxygen pour plateformes NXP
• Configuration de la distribution et de l’image à générer pour une machine iMX91 et iMX93
• Construction d’une image Linux pour kits Phytec phyBOARD
Yocto BSP pour System-On-Module Phytec phyCORE-i.MX91 ou phyCORE-i.MX93
• 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 PREEMPT-RT
Travaux pratiques
• Ajout de son propre Layer Yocto BSP et création de sa propre plateforme iMX91 ou iMX93
• Configuration du noyau Linux pour i.MX 91 ou i.MX 93 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 phyBOARD i.MX91 ou i.MX93 et évaluation des performances (stress/latency)
Customisation d’une Image Yocto Linux
• 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 VS Code ou IDE Eclipse : configuration, compilation et débogage sur
kits Phytec phyBOARD i.MX91 ou i.MX93
Multitâche Temps Réel et Threads POSIX 1003.b et 1003.c sous Real-time Edge BSP
• 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
• Programmation d’une passerelle CAN bus / Ethernet TCP-IP à très faible latence sur cible i.MX93
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 plateformes NXP i.MX 91 ou i.MX 93 à l’aide du devicetree
- Structure et syntaxe des devicetree sous Linux
- API Kernel devicetree
- Architecture et fichiers devicetree pour Machines iMX 91 ou iMX 93
- Pin Muxing i.MX 91 ou i.MX 93
- Devicetree Overlay
Travaux Pratiques
• Customisation du devicetree et du Pin Muxing de plateformes i.MX 91 ou i.MX 93
• Développement d’un driver bloquant, gestion d’interruption sur plateforme Phytec phyBOARD i.MX 91 ou i.MX 93 avec
support devicetree binding
Mise en œuvre de boot secure (sur iMX93 uniquement)
Solution Co-Processing Arm® Cortex-A55 et Cortex M33 sur iMX93
• Présentation de l’architecture co-processeur
• Linux devicetree pour application Co-Processing iMX93
• 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
• Mise au point du firmware M33 sous IDE VS Code ou IDE Eclipse for Embedded C/C++ Developers
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
• Approche Temps Réel
Travaux Pratiques
• Échanges de données entre firmware Cortex-M33 et application Cortex-A55 Linux PREEMPT-RT via OpenAMP et RPMSG
pour kit Phytec phyBOARD®-Segin i.MX93