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