Vous êtes sur la page 1sur 7

1 Introduction

2 Internet des objets


.
.
.

3 Yocto
Cette partie sera consacrée à l'étude de l’un des plus principaux outils utilisables de manière
industrielle : Yocto qui est un environnement de production (Build system) permettant la
création de notre image de système Linux embarqués.

3.1 Pourquoi Yocto

3.1.1 Historique
Le projet Yocto est un projet open source collaboratif de la Fondation Linux dont le but est
de produire des outils et des processus permettant la création de distributions Linux pour les
logiciels embarqués et IOT indépendants de l'architecture sous-jacente du matériel
embarqué.
Le projet a été annoncé par la Fondation Linux en 2010 et lancé en mars 2011, en
collaboration avec 22 organisations, dont Open Embedded, qui est un cadre d’automatisation
de construction et un environnement de compilation croisée utilisé pour créer des
distributions Linux pour les périphériques embarqués [1]
https://fr.qaz.wiki/wiki/Yocto_Project

3.1.2 Avantages
Il y avait une volonté de pouvoir moduler les applications sur différents matériels sans avoir à
investir dans un nouveau développement. Des développeurs et la Fondation Linux se sont
unis pour proposer une mécanique qui fasse abstraction du matériel, et ainsi rendre
réutilisables les développements déjà effectués.
L’utilisation de Yocto apporte de nombreux avantages :
 Création de distributions sur mesure
 De nombreux développements existent
 Adaptation de l’existant par le mécanisme de bbappend
 De nombreuses architectures matérielles supportées
 Système de paquets binaires rpm, deb, et ipk
 Support de plusieurs cibles simultanées dans le même répertoire de travail
 Intégration de vos applications

3.2 Architecture et fonctionnement de Yocto


Comprendre le workflow du Yocto Project est important car cela permet à la fois de savoir
comment la création se fait et permet de localiser les problèmes et les anomalies.
Le flux de travail se base sur ces étapes :
 Fetch : Récupérer ; obtenir le code source.
 Extract : Extraire ; décompresser les sources.
 Patch : appliquer des correctifs pour corriger les bogues et ajouter des nouvelles
fonctionnalités.
 Configure : configurer les spécifications de l’environnement.
 Build : compiler et lier.
 Install : copier les fichiers dans les répertoires cibles.
 Package : fichiers groupés pour l'installation.
Le «Workflow» a pour but de réaliser la génération d'images et de SDK :
https://docs.yoctoproject.org/what-i-wish-id-known.html
Cette figure présente les étapes suivantes :
 Les développeurs spécifient l'architecture, les politiques, les correctifs et les détails
de configuration.
 Le système de construction récupère et télécharge le code source à partir de
l'emplacement spécifié. Le système de construction prend en charge les méthodes
standard telles que les archives Tar ou les systèmes de référentiels de code source
tels que Git.
 Une fois le code source téléchargé, le système de construction extrait les sources
dans une zone de travail locale où les correctifs sont appliqués et les étapes
courantes de configuration et de compilation du logiciel sont exécutées.
 Le système de construction installe ensuite le logiciel dans une zone de préparation
temporaire où le format de package binaire qu’on sélectionne (DEB, RPM ou IPK)
est utilisé pour remonter le logiciel.
 Différents contrôles d'assurance qualité et de cohérence sont exécutés tout au long
du processus de construction.
 Une fois les binaires créés, le système de construction génère un flux de package
binaire qui est utilisé pour créer l'image de fichier racine finale.
 Le système de construction génère l'image du système de fichiers et un SDK
extensible personnalisé (eSDK) pour le développement d'applications en parallèle.

3.3 Composants et outils maintenus par le projet Yocto


Le projet Yocto combine, maintient et valide trois éléments clés de développement.
https://www.yoctoproject.org/software-overview/
1. Un ensemble d'outils intégrés pour réussir le travail avec Linux embarqué, y compris
des outils de création et de test automatisés, des processus de support de carte et de
conformité de licence, et des informations sur les composants pour les systèmes
d'exploitation embarqués basés sur Linux personnalisés
2. Une distribution intégrée de référence : Poky
3. Le système de construction OpenEmbedded, co-maintenu avec le projet
OpenEmbedded
3.3.1 Distribution intégrée de référence Poky
Poky est le nom de la distribution de référence du Yocto Project ou du Reference OS Kit. Il
contient le système de construction (BitBake et OpenEmbedded Core) ainsi qu'un ensemble
de métadonnées pour permettre la création de notre propre distribution.

En effet, Poky est un espace de travail qui contient à la fois l'ensemble d'outils de base
OpenEmbedded (Bitbake, Toaster, etc.), la couche de référence Linux principale (meta-poky)
et une couche BSP (meta-yocto-bsp) qui ajoute la prise en charge d'un certain nombre de
plates-formes matérielles courantes. Il contient les recettes, les fichiers de configuration, etc.
nécessaires pour construire une distribution Linux embarquée de base.

Pour des raisons historiques, une couche supplémentaire est nécessaire, qui n'est pas
conforme à la convention de dénomination «meta-xxx», mais qui est appelée openembedded-
core. Celle-ci contient des métadonnées de base communes à toutes les distributions.

Pour utiliser les outils du Yocto Project, on doit télécharger Poky et l'utiliser pour démarrer
notre propre distribution.
3.3.2 Layers
https://www.yoctoproject.org/software-overview/
L’approche de Yocto est très déférente de ses concurrents car il est basé sur une architecture
en couches (Layers) permettant de construire l’image d’une distribution de référence Poky et
d’enrichir cette image en y ajoutant d’autres couches (donc de nouvelles recettes). Seules les
couches indispensables (soit oe-core et meta-yocto) sont fournies par le projet Yocto. On peut
ensuite ajouter des couches externes liées au matériel (BSP), à des systèmes graphiques
comme Qt ou à des composants métier.
D'autres couches nous permettent d'étendre la distribution en ajoutant des applications
supplémentaires et des packages de prise en charge de la carte pour des plates-formes
matérielles spécifiques.

3.3.3 Recette
Les recettes des packages individuels sont en fait des scripts Shell Linux, utilisant un grand
ensemble de variables et de fonctions fournies par bitbake, telles que ses classes d'extension,
les fichiers de configuration utilisateur et les recettes elles-mêmes. Ils comprennent comment
obtenir, configurer, adapter et construire le code source de leurs packages.

Layer
Recette 1

Recette 1

Recette 1
3.3.4 Bitbake
Bitbake est un outil de ligne de commande écrit en Python et extensible au moyen de
«classes» Python qui lui permettent de comprendre comment effectuer des activités de
construction courantes (par exemple, télécharger le code source du package à partir de
référentiels Git distants).
3.3.5 Image et contenu
Une image présente un gros fichier qu’on transfère dans la mémoire persistante du système
embarqué (eMMC, SD, Flash, disque…) pour pouvoir fonctionner l’environnement Linux.
Elle regroupe plusieurs éléments qui sont présents dans la plupart des systèmes embarqués:

 Un bootloader (chargeur) est lancé dès la mise sous tension du système et s’occupe
de placer le noyau Linux en mémoire et de l’exécuter. Exemple : U-Boot, Barebox,
Grub…
 Le noyau (kernel) Linux, est le véritable cœur d’un SE qui pilote les différentes
ressources matérielles comme le processeur, mémoire, périphériques …, pour les
mettre à disposition des applications. Sur certaines architectures, le kernel
s’accompagne d’un device tree(dtb), qui présente un fichier de description du matériel
existant lorsque ce dernier n’est pas détectable automatiquement.
 Le root filesystem souvent abrégé rootfs, une arborescence contenant l’ensemble des
fichiers nécessaires pour le fonctionnement du système (exécutables, bibliothèques,
fichiers de configuration, scripts de lancement, fichiers de données, etc.). Le rootfs est
généralement représenté par une archive «.tar» ou une image binaire du contenu de la
partition principale.

Vous aimerez peut-être aussi