Formation Yocto BSP i.MX93
4 jours (5ème journée en option)

Réf : PHYTEC-5143

  • Durée : 4 jours / 5ème journée optionnelle
  • Sessions : intra-entreprise
  • Plate-forme: i.MX 91 / i.MX 93
  • 2 options possibles pour la 5ème journée

Intéressé.e par cette formation ?

Cette formation Yocto BSP iMX93  est réalisée sur la base du BSP Phytec BSP-Yocto-NXP-i.MX93-PD24.2.2 Yocto Scarthgap 5.0.

• 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.MX 93
• 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 Arm® mono/dual core Cortex-A55 avec le SDK Yocto iMX91/iMX93 sous IDE Visual Studio Code
   ou Eclipse for Embedded C/C++ Developers

Les travaux pratiques de la formation 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

Le stage de formation Yocto BSP iMX93 est proposé sur 4 jours pouvant être étendus à 5 pour les clients qui souhaiteraient aborder, soit les problématiques de mise en place de Secure Boot sur iMX91/iMX93, soit le développement et la mise au point d’applications de Co-Processing Arm® Cortex-A55 et Cortex M33 sur iMX93.

Le contenu de la formation Yocto 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 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 sur plateforme Arm® dual core Cortex-A55 NXP i.MX 93 sous Linux OS.

Présentation de Linux pour les solutions NXP i.MX91 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  BSP-Yocto-NXP-i.MX93
• Rôle de l’outil de construction bitbake

Yocto BSP NXP i.MX91 et i.MX93

• Les layers spécifiques NXP BSP
• Les layers spécifiques FSL Community BSP
• 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 Phytec

• 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 ampliphy-vendor pour plateforme 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 Sustem-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

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

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 

Adaptation du File System Linux de la plateforme  iMX91 ou  iMX93

• 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 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

Option 1 : Mise en œuvre de boot secure

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

• Mise en place d’une solution Boot Secure sur phyCORE i.MX91 ou phyCORE i.MX93 

Mise en oeuvre de Mise à jour RAUC

• Définition d'une configuration mise à jour redondante sur plateformes phyBOARD i.MX91 ou phyBOARD i.MX93: notion 
   de machine et de revision
• Variables d"environnement et Script u-boot spécifique Rauc
• Bundles : Image Rauc
• Gestion de la signature/cryptage des dundles RAUC
• Services de mise à jour automatisée : USB updater et hawkbit updater

Travaux Pratiques

• Création et installation d'un dundle signée 
• Mise en oeuvre d'un client et d'un serveur Hawkbit de gestion déploiement de mises à jour

Option 2 : mise en œuvre (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

Travaux pratiques

• Échanges de données entre firmware Cortex-M33 et application Cortex-A55 Linux via OpenAMP et RPMSG sur pour
   kit Phytec phyBOARD®-Segin i.MX93