Formation Yocto BSP i.MX 8MP

Réf : PHYTEC-5152

  • Durée : 4 ou 5 jours (5ème journée optionnelle)
  • Sessions : intra-entreprise
  • Plate-forme: i.MX 8M Plus
  • Adaptation de contenu sur demande

Intéressé.e par cette formation ?

Cette formation Yocto BSP iMX8MP  est réalisée sur la base du BSP Phytec BSP-Yocto-NXP-i.MX8MP-PD24.1.0 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 8M-Plus
• Optimiser le noyau Linux est ses devicetree à sa plate-forme matérielle phyCORE-i.MX 8M-Plus
• Adapter des drivers du noyau Linux pour plateforme NXP i.MX 8M-Plus
• Customiser et construire son image Linux pour NXP i.MX 8M-Plus sous Yocto
• Porter ses applications Linux Arm® mono/dual core Cortex-A53 avec le SDK Yocto iMX8MP sous IDE Visual Studio Code
   ou Eclipse for Embedded C/C++ Developers

Les travaux pratiques de la formation Yocto BSP iMX8MP sont réalisés sur le Kit Phytec phyBOARD-Pollux i.MX 8M-Plus

Le stage de formation Yocto BSP iMX8MP est proposé sur 4 jours pouvant être étendus à 5 jours pour les clients qui souhaiteraient aborder, soit les problématiques de mise en place de :
• Secure Boot sur iMX8MP
• la mise au point d’applications de Co-Processing Arm® Cortex-A53 et Cortex M7 sur iMX8MP
• la mise en œuvre de Machine Learning sur iMX8MP

Le contenu de la formation Yocto BSP iMX8MP 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 iMX8MP 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-A53 NXP i.MX 8M-Plus sous Linux OS.

Présentation de Linux pour les solutions NXP i.MX 8M-Plus

• Architecture OS Linux NXP i.MX 8M-Plus
        - Arm Trusted Firmware
        - u-boot
        - Linux kernel + Devicetree
        - Rootfs muti-partionning
• Distribution MXP Linux 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.MX8MP
• Rôle de l’outil de construction bitbake

Yocto BSP NXP i.MX 8M-plus

• 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.MX8MP
• 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 iMX8MP
• Construction d’une image Linux pour kits Phytec phyBOARD 

Yocto BSP pour Sustem-On-Module Phytec phyCORE-i.MX 8M-Plus 

• 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 iMX8MP
• Configuration du noyau Linux pour i.MX 8MP 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.MX 8M-Plus

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.MX 8M-Plus 

Adaptation du File System Linux de la plateforme iMX8MP

• 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

Travaux pratiques

• Recette Yocto de création d’un package d’installation d’un driver Linux externe/propriétaire
        - Interactions avec le Sysfs et Procfs

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 8M-Plus à l’aide du devicetree

        - Structure et syntaxe des devicetree sous Linux
        - API Kernel devicetree
        - Architecture et fichiers devicetree pour Machines iMX8MP
        - Pin Muxing  i.MX 8M-Plus
        - Devicetree Overlay

Travaux pratiques

• Customisation du devicetree et du Pin Muxing de plateformes  i.MX 8M-Plus
• Développement d’un driver bloquant, gestion d’interruption sur plateforme Phytec phyBOARD  i.MX 8M-Plus avec
   support devicetree binding
 

Travaux pratiques
• Compilation et déploiement d’un module driver linux externe/propriétaire avec le SDK Yocto
• Programmation de pilotes de périphériques Linux, Signaux et Timer en kernel mode sur plateforme i.MX 8M Plus
• Driver bloquant, gestion d’interruption sur plateforme sur cible Phytec Pollux i.MX 8M Plus

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
• FIT Image container

Travaux Pratiques
• Mise en place d’une solution Boot Secure sur phyCORE i.MX8MP

Mise en oeuvre de Mise à jour RAUC
• Définition d'une configuration mise à jour redondante sur plateformes phyBOARD-i.MX8MP: 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 du Co-Processing sur iMX8M-Plus

Solution Co-Processing  Arm® Cortex-A53 et Cortex M7 sur iMX8MP
• Présentation de l’architecture co-processeur
• Linux devicetree pour application Co-Processing iMX8MP
• Chargement automatique du firmware M7 au démarrage de la plateforme
• Chargement dynamique du firmware M7 sous Linux
• Linux RemoteProc support
• Multi-Core Ressources management 

Travaux pratiques 
• Mise au point du firmware M7 sous IDE VS Code ou IDE Eclipse for Embedded C/C++ Developers

Mécanismes de communication Inter Processeurs Arm® Cortex-M7 / Cortex-A53
• Notions de Domain ID et Ressources partagées
• API OpenAMP Cortex-M7
• Drivers Linux RPMSG

Travaux pratiques
• Échanges de données entre firmware Cortex-M7 et application Cortex-A53 Linux via OpenAMP et RPMSG sur pour
   kit Phytec phyBOARD®-Pollux i.MX8MP

Option 3 : NXP eIQ : Intelligence Artificielle et Machine Learning sur i.MX 8M-Plus

NXP eIQ i.MX Machine Learning
• Architectures i.MX et supports ARM CPU, GPU et NPU 
• Solutions Librairies compatibles plateformes NXP eIQ 
        - TensorFlow Lite
        - ONNX
        - PyTorch
        - TVM
        - LiteRT
• Solution NNStreamer pluggin pour GStreamer
• Layer Yocto NXP eIQ i.MX

Implémentation de la stack TensorFlow Lite
• eIQ Inference Engine backends et delegates
• Support ARM CPU, GPU et NPU 
• Compilation d'un projet eIQ CMake
• Optimisation de la librairie TensorFlow Lite
• Hardware Acceleration
• SDK Yocto support TensorFlow Lite et NPU

Travaux Pratiques 
• Mise en oeuvre de la solution Phytec i.MX8MP Machine Learning NPU sur plateforme phyBOARD-Pollux i.MX8M-Plus
• Installation de l'environnement Phytec Yocto BSP PD24.1.0 Machine Learning
• Architecture de la solution Celebrity Face Match Ai Demo
        - Chaîne de traitement d'image
        - Mise en oeuvre d'un Model sur la base de données
        - Quantification du modèle et base de données