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

Intéressé.e par cette formation ?

Cette formation Real-time Edge Yocto BSP iMX9x est réalisée sur la base du BSP LinRT Oxygen Yocto 5.0 Scarthgap.

• Maîtriser l’installation et l'utilisation de l’environnement Yocto
• Maîtriser les commandes usuelles Bitbake
• Installer et mettre en œuvre ses propres layers Yocto
• Gérer la configuration de build Yocto pour plateforme NXP i.MX91/i.MX93
• Optimiser le noyau Linux est ses devicetree à sa plate-forme matérielle phyCORE-i.MX 93
• Adapter les drivers du noyau Linux pour plateforme NXP i.MX 93
• Customiser et construire son image Linux pour NXP i.MX 93 sous Yocto
• Porter ses applications Linux faibles latences sur plateformes Arm® mono/dual core Cortex-A55 avec le SDK  LinRT Oxygen Yocto iMX91/iMX93 sous IDE Visual Studio Code ou Eclipse for Embedded C/C++ Developers

Les travaux pratiques de la formation Real-time Edge Yocto BSP iMX93 sont réalisés sur le Kit Phytec phyBOARD-Segin i.MX 93, et peuvent être réalisés sur demande, sur les équipements suivants :
• Kit Phytec phyBOARD-Nash i.MX93
• Kit Phytec phyBOARD-Segin i.MX91
• Kit NXP imx93evk
• Kit NXP imx93-9x9-lpddr4-qsb
• iKit NXP mx93-14x14-lpddr4x-evk
• Kit NXP imx91-11x11-lpddr4-evk
• Kit NXP imx91-9x9-lpddr4-qsb

Le stage de formation Yocto Real-time Edge BSP iMX93 est proposé sur 4 jours pouvant être étendus à 5 pour les clients qui souhaiteraient aborder, soit les problématiques de mise au point d’applications Temps Réel via le Co-Processing Arm® Cortex-A55 et Cortex M33 sur iMX93.

Le contenu de la formation Yocto Real-time Edge BSP iMX93 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 Real-time Edge BSP iMX93 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 avec des contraintes de performances à très faibles latences, sur plateforme Arm® dual core Cortex-A55 NXP i.MX 93 sous Linux OS, voir temps-réel sur le Cortex M33 de l’i.MX93.
Des connaissances de programmation en langage C sont nécessaires et en environnement utilisateur UNIX/Linux sont souhaitables.

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