SlideShare ist ein Scribd-Unternehmen logo
1 von 65
Downloaden Sie, um offline zu lesen
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 1
www.ciose.fr
Concevoir un systèmeConcevoir un système
embarqué Linux avecembarqué Linux avec
YOCTO ProjectYOCTO Project
C. CharreyreC. Charreyre
christian.charreyre@ciose.frchristian.charreyre@ciose.fr
http://www.ciose.frhttp://www.ciose.fr
@CIOinfoindus@CIOinfoindus
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 2
www.ciose.fr
Licence
Attribution-Noncommercial-Share Alike 4.0 International
You are free:
to Share - copy and redistribute the material in any medium or format
to Adapt - remix, transform, and build upon the material
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following conditions:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if
changes were made. You may do so in any reasonable manner, but not in any way that
suggests the licensor endorses you or your use.
NonCommercial — You may not use the material for commercial purposes.
ShareAlike — If you remix, transform, or build upon the material, you must distribute your
contributions under the same license as the original.
No additional restrictions — You may not apply legal terms or
technological measures that legally restrict others from doing
anything the license permits.
License text : http://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 3
www.ciose.fr
CIO en quelques mots
Société d'ingénierie en systèmes embarqués :
électronique et logiciel
Au service de nos clients depuis 1990
Une équipe de 15 spécialistes en embarqué et
temps réel
Expert en Linux embarqué depuis 2000,
OpenEmbedded et Yocto depuis 2008
CA annuel : 1 500 000 €
Siège à Saint-Etienne
Agence à Marseille
Agréé CIR
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 4
www.ciose.fr
Contexte technique et
business
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 5
www.ciose.fr
Les tendances en Linux
embarqué
10 ans en arrière, Linux = alternative aux
RTOS propriétaires → peu de besoins
fonctionnels :
Kernel et glibc
Fabrication d'un Root File System autour de
Busybox
Application métier développée en interne
Peu de problèmes de complexité et de
cohérence
Nécessité d'une bonne connaissance de Linux
pour créer sa distribution embarquée
Linux = un OS parmi d'autres, pas de
développement massif
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 6
www.ciose.fr
Les tendances en Linux
embarqué
Aujourd'hui: forte pression pour développer
des smart devices dans des Time To Market
réduits
Moins (plus?) de limitations de mémoire vive ou
de masse
Processeurs beaucoup plus puissants
IHM riches avec audio, vidéo, graphisme évolué
(impact iOS et Androïd)
Besoins importants de connectivité : Wifi,
Bluetooth, 3G
Time to Market de plus en plus court
Recentrage sur la valeur ajoutée
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 7
www.ciose.fr
Les tendances en Linux
embarqué
Compétition sur la spécificité – coopération sur
les environnements de base
Ex : Initiative Genivi dans le monde automobile (In
Vehicle Infotainment) – Création d'une distribution
basée Yocto
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 8
www.ciose.fr
Quelques exemples
Devices bâtis sur base Embedded Linux :
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 9
www.ciose.fr
Le couple fort : ARM +
Linux
Beaucoup de processeurs ARM au coté des
architectures X86 :
Fondeurs multiples
Intégration processeur + fonctions micro contrôleur
sur un SOC
Faible consommation (relatif)
Rapport coût / performance souvent intéressant
Solutions ARM souvent accompagnées d'OS
Linux
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 10
www.ciose.fr
Le challenger Androïd
Forte demande Androïd sur le marché de
l'embarqué :
Diffusion de l'OS auprès des utilisateurs par
smartphone / tablettes
Attrait d'une interface unique domaine
personnel / domaine professionnel
Importance de la connectivité
Attrait du Play Store pour les smart devices
Sentiment Androïd = une version de Linux
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 11
www.ciose.fr
Le challenger Androïd
Androïd = OS différent, avec un Linux modifié
« sous le capot »
Le monde Linux reste totalement caché aux
développeurs
Développement normal en Java au dessus du
framework Androïd
Paradigmes de développement très éloignés des
habitudes de l'embarqué
Une version Open Source AOSP, et une version
interne Google
Seul Google pilote l'évolution d'Androïd
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 12
www.ciose.fr
Le challenger Android
Nécessité de réussir les tests de compatibilité
CTS de Google pour avoir accès
Aux applications spécifiques Google
Au store Play Store
Prérequis matériels et logiciels
Nécessité de porter Android sur sa plateforme
Plus complexe qu'un portage Linux
Plus de documentation si pas enregistré auprès de Google
Drivers au niveau Linux + HAL
Kernel Linux spécifique patches nécessaires sur
kernel Linux déjà dispo sur la plateforme
Bien réfléchir au choix Androïd vs Linux
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 13
www.ciose.fr
Pourquoi un outil de build ?
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 14
www.ciose.fr
Comment répondre au
challenge Linux embarqué ?
Utiliser des éléments logiciels issus du riche
écosystème Linux
Les assembler comme des briques
modulaires, tels quels ou adaptés
Développer seulement les éléments
applicatifs non disponibles sur étagère :
 Mouvement d'une culture de développeur vers
une culture d'assembleur
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 15
www.ciose.fr
Comment répondre au
challenge Linux embarqué ?
Nécessité d'outils adaptés pour gérer la
fragmentation et la complexité de
l'écosystème Linux, et assurer une
cohérence globale :
Outils de génération de distributions Linux
embarquée
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 16
www.ciose.fr
Travailler avec Linux
Un monde fragmenté aux multiples sources
Bootloaders (UBoot, RedBoot, LILO, Grub, ...)
Kernel (kernel.org, fournisseur hardware, ...)
Librairies de base (glibc ou alternatives réduites)
Bases applicatives (busybox, kits embarqués libres
ou propriétaires, ....)
IHM (Qt, MicroWindows/NanoX, ...)
Multimédia (Mplayer, Gstreamer, Xine, ....)
Extensions temps réel (RTAI, Xenomai, …)
Qu'il faut assembler en un ensemble cohérent :
votre device
Mais chaque projet contributeur vit sa vie à son
propre rythme : cycle de vie propre, sans gestion
centralisée
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 17
www.ciose.fr
Faire attention au respect de licences multiples
(GPL, LGPL, BSD, etc...)
Les connaître et les respecter
Adapter ce que l'on utilise à sa stratégie de
publication des codes source
Travailler avec Linux
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 18
www.ciose.fr
Pourquoi un outil de build ?
Pour éviter cela
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 19
www.ciose.fr
Pourquoi un outil de build ?
Pour gérer cela
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 20
www.ciose.fr
Pourquoi un outil de build ?
Dépendances de nautilus (file manager) : 62 librairies
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 21
www.ciose.fr
Des images reproductibles
Nécessité de maîtriser la production des images
embarquées
Dans un contexte riche avec de multiples
dépendances
Dans un contexte évolutif (dynamique logiciel libre)
Dans la durée (pérennité des produits)
A l'identique ou avec des corrections / évolutions
Solutions manuelles à bannir
Dépendantes des acteurs (manque de formalisme, le
gourou parti ou absent comment fait on?)
Atteignent leurs limites face à l'inflation des
composants à gérer
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 22
www.ciose.fr
Des images reproductibles
Robustesse de la production aux changements
d'infrastructure de développement
Changement de matériel ou de version d'OS : quel
impact ?
Risque réduit par utilisation de Virtual Machines
Garantir la possibilité de rebâtir l'image
identique, mais également de la faire évoluer de
façon maîtrisée
Reproductible  Figé
Intégrer tous les paramétrages à la production
de l'image (logins, réseau, langue, etc....)
Suppression des réglages manuels opérés lors de
l'installation
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 23
www.ciose.fr
Isolation poste
développeur / cible
Le Root File System est d'abord construit sur le
poste de développeur
Les logiciels embarqués sont cross compilés sur
le poste développeur
Nécessité d'éviter tout mélange entre hôte et
cible :
Processus de compilation : headers et libraires
croisées vs natives
Processus d'installation : librairies, exécutables et
fichiers de contrôle
Attention aux mélanges !!!
Problème général mais amplifié dans le cas
Linux
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 24
www.ciose.fr
Isolation poste
développeur / cible
#include <libxml/xmwriter.h>
code.c
/usr -
|-- include -
| |-- libxml2 -
| |-- libxml -
| | – xmlwriter.h
|-- lib -
| |-- libxml2.so.3.4.1
$(ST)/usr -
|-- include -
| |-- libxml2 -
| |-- libxml -
| | – xmlwriter.h
|-- lib -
| |-- libxml2.so.2.9.2
Compile
KO
Compile
OK
Link
KO
Link
OK
Distribution hôte Sysroot target = « sandbox »
ABI incorrecte
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 25
www.ciose.fr
Isolation poste
développeur / cible
#include <libxml/xmwriter.h>
code.c
/usr -
|-- bin -
| |-- arm-none-linux-gnueabi-gcc
| |-- autoconf
| |-- automake
| |-- make
$(SH)/usr -
|-- bin -
| |-- arm-none-linux-gnueabi-gcc
| |-- autoconf
| |-- automake
| |-- make
Outils de
compilation
Outils de
compilation
Distribution hôte Sysroot host = « sandbox »
Indépendant des
évolutions distri
hôte
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 26
www.ciose.fr
Des besoins communs :
Sélectionner les composants logiciels
Configurer
Cross Compiler
Installer dans le File System image (en cours de
construction)
Conditionner le File System au format final
Besoins liés à la logique de développement
Linux :
./configure – make – make install
Dans un contexte de développement croisé :
Complication liée à la séparation hôte - cible
Les outils disponibles
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 27
www.ciose.fr
Tour d'horizon :
Do It Yourself : limité aux cas simples
Avantage = maîtrise totale
Inconvénient = il faut tout faire
Buildroot : simple mais fonctionnellement moins
riches que les autres
Adapté aux applications enfouies, pas très riches
Difficile de travailler en différentiel : régénération complète du
File System, pas de gestion de paquets
Basé sur des Makefiles
Scratchbox : riche mais obsolète
LTIB : outil utilisé par Freescale, mais changement en
cours au profit du Yocto Project
Versions logicielles datées (host + target)
Les outils disponibles
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 28
www.ciose.fr
Tour d'horizon :
OpenEmbedded
Ancêtre commun issu du projet Open Zaurus, toujours actif.
Base de distributions variées
Angström
Distribution orientée machines ARM, construite à partir de
OpenEmbedded core.
Yocto Project
Projet pour mettre en place de manière industrielle des outils
de création de distribution Linux embarqué
Sous l'égide de la Linux Foundation
Implémente la distribution Poky en se basant sur Open
Embedded
Par abus de langage dans la suite du document, nous utilisons
Yocto pour l'ensemble des concepts évoqués.
OpenEmbedded / Angström / Yocto (Poky) cousins
Les outils disponibles
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 29
www.ciose.fr
Les outils disponibles
OpenEmbedded Core fondement de Yocto et
Angström
Même syntaxe, même moteur :
Assemblage possible entre recettes issues des 3
outils
Tout ce qui est vrai pour Yocto est valable pour
Angström
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 30
www.ciose.fr
Utilisation de Yocto
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 31
www.ciose.fr
Workflow de Yocto
Credit – Yocto Project
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 32
www.ciose.fr
Workflow de Yocto
Les entrées :
Code source des projets « upstream » :
Fetchés depuis le site projet ou depuis un miroir Yocto
Formats variés : archive, révision dans un SCM ...
Protocoles variés : http(s), ftp, svn, git …
Code source local (projet interne) :
Archive locale ou accès à un serveur SCM interne
Fichiers de configuration :
Caractéristiques de la machine cible (kernel, bootloader, format
image, tuning compilateur ...)
Caractéristiques de la distribution (paquets inclus, versions, choix
entre alternatives, choix libc …)
Caractéristiques des layers (détaillé ultérieurement)
Configuration du build : machine, distribution, layers actives, format
paquet ...
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 33
www.ciose.fr
Workflow de Yocto
Le cœur :
Un moteur d'exécution de tâches écrit en Python :
bitbake
Exécute automatiquement les tâches nécessaires à la
fabrication de la cible fournie
Fonctionne en ligne de commande
Exemple : bitbake core­image­minimal
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 34
www.ciose.fr
Workflow de Yocto
Les sorties :
Les paquets binaires des composants utilisés
(formats ipk, deb ou rpm)
Possibilité d'embarquer un gestionnaire de paquets sur la cible
Permet de travailler en différentiel pour mise à jour /
enrichissement
L'image finale déployable sur la cible (formats variés :
tar.bz2, ext3, ubi etc....)
Un SDK exportable pour les développeurs
d'application
Un récapitulatif des paquets embarqués et de leur
licences
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 35
www.ciose.fr
Le moteur bitbake
Un moteur écrit en Python : bitbake
Un jeu de recettes pour fabriquer les paquets
logiciels
Une notion de classes pour mise en commun entre
recettes
Une notion de méta paquets pour structurer
(packagegroup)
Des dépendances entre paquets, décrites dans les
recettes, ou déterminées automatiquement (librairies
partagées)
Pour chaque recette des tâches élémentaires
Calcul de l'arbre des dépendances pour fabriquer les
paquets dans le bon ordre
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 36
www.ciose.fr
Principales tâches
élémentaires
Tâche Rôle
fetch Téléchargement depuis dépôt upstream
unpack Extraction dans répertoire travail
patch Application de patches issus des recettes
configure Configuration
compile Compilation croisée
install Installation dans tampon local au composant
populate_lic Installation fichier(s) licence dans répertoire
deploy
package Fabrication des descriptifs des packages
populate_sysroot Déploiement des paquets dans le sysroot
package_write_xxx Création du paquet au format xxx
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 37
www.ciose.fr
Structuration en couches
Architecture en couches
Priorité entre couches qui partageraient une
recette
Liste des couches : http://layers.openembedded.org/layerindex/layers/
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 38
www.ciose.fr
Structuration en couches
Possibilité de créer sa propre layer (niveau
société)
Possibilité de créer des layers par affaire ou
projet
Le but est d'optimiser la réutilisation des recettes
en évitant au maximum la duplication
Si une même recette présente dans plusieurs
layers, c'est la layer de priorité supérieure qui
s'impose.
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 39
www.ciose.fr
Structuration en couches
L'utilisation des couches améliore la
réutilisabilité
Les recettes peuvent être modifiées dans les
couches supérieures à l'aide d'une sorte de
patch (fichier bbappend) :
Recette originale inchangée dans la couche inférieure
Le fichier bbappend personnalise la recette dans la
couche supérieure
Meta (Open Embedded core)
Meta-yocto (Yocto layer)
Meta-xxx-BSP (BSP layer)
Meta-sw-comp (Company soft layer)
Meta-sw-projA (Project soft layer)
Meta (Open Embedded core)
Meta-yocto (Yocto layer)
Meta-yyy-BSP (BSP layer)
Meta-sw-comp (Company soft layer)
Meta-sw-projB (Project soft layer)
Meta-xxx-ISV (commercial layer)
Projet A Projet B
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 40
www.ciose.fr
Anatomie d'une recette
Une recette pour un ou plusieurs paquets
(fractionnement pour optimisation de l'espace)
Des variables d'environnement
Des tâches élémentaires implicites ou explicites
(pour modifier l'implicite) : langage shell et
python
Jeu de recettes géré par la communauté Yocto
→ solution au problème de complexité :
Cohérence entre versions de composants
dépendants
Mise à jour des recettes fonction des évolutions
upstream
Application de patches locaux quand cela est
nécessaire
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 41
www.ciose.fr
Anatomie d'une recette
(log4c)
SUMMARY = "a library of C for flexible logging to files, syslog and other 
destinations"
SECTION = "libs"
HOMEPAGE = "http://log4c.sourceforge.net/"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
PR = "r1"
SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz 
file://oe.patch 
file://add­pkgconfig­data.patch 
"
inherit autotools pkgconfig binconfig
SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6"
SRC_URI[sha256sum] = 
"6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b"
Descriptif
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 42
www.ciose.fr
Anatomie d'une recette
(log4c)
SUMMARY = "a library of C for flexible logging to files, syslog and other 
destinations"
SECTION = "libs"
HOMEPAGE = "http://log4c.sourceforge.net/"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
PR = "r1"
SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz 
file://oe.patch 
file://add­pkgconfig­data.patch 
"
inherit autotools pkgconfig binconfig
SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6"
SRC_URI[sha256sum] = 
"6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b"
Licence
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 43
www.ciose.fr
Anatomie d'une recette
(log4c)
SUMMARY = "a library of C for flexible logging to files, syslog and other 
destinations"
SECTION = "libs"
HOMEPAGE = "http://log4c.sourceforge.net/"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
PR = "r1"
SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz 
file://oe.patch 
file://add­pkgconfig­data.patch 
"
inherit autotools pkgconfig binconfig
SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6"
SRC_URI[sha256sum] = 
"6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b"
Révision recette
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 44
www.ciose.fr
Anatomie d'une recette
(log4c)
SUMMARY = "a library of C for flexible logging to files, syslog and other 
destinations"
SECTION = "libs"
HOMEPAGE = "http://log4c.sourceforge.net/"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
PR = "r1"
SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz 
file://oe.patch 
file://add­pkgconfig­data.patch 
"
inherit autotools pkgconfig binconfig
SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6"
SRC_URI[sha256sum] = 
"6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b"
Sources +
patches locaux
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 45
www.ciose.fr
Anatomie d'une recette
(log4c)
SUMMARY = "a library of C for flexible logging to files, syslog and other 
destinations"
SECTION = "libs"
HOMEPAGE = "http://log4c.sourceforge.net/"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
PR = "r1"
SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz 
file://oe.patch 
file://add­pkgconfig­data.patch 
"
inherit autotools pkgconfig binconfig
SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6"
SRC_URI[sha256sum] = 
"6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b"
Classes héritées
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 46
www.ciose.fr
Anatomie d'une recette
(log4c)
SUMMARY = "a library of C for flexible logging to files, syslog and other 
destinations"
SECTION = "libs"
HOMEPAGE = "http://log4c.sourceforge.net/"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
PR = "r1"
SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz 
file://oe.patch 
file://add­pkgconfig­data.patch 
"
inherit autotools pkgconfig binconfig
SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6"
SRC_URI[sha256sum] = 
"6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b"
Checksums
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 47
www.ciose.fr
Anatomie d'une recette
(ed)
DESCRIPTION = "a line­oriented text editor"
HOMEPAGE = "http://www.gnu.org/software/ed/"
BUGTRACKER = ""
LICENSE = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 
                    
file://ed.h;endline=20;md5=c708cda1b2e8d723d458690b7db03878 
                    
file://main.c;endline=24;md5=1bd039d59e04ee5f82adcc970144a2c3"
SECTION = "base"
PR = "r0"
# LSB states that ed should be in /bin/
bindir = "${base_bindir}"
SRC_URI = "${GNU_MIRROR}/ed/ed­${PV}.tar.gz 
           file://ed­1.2­build.patch"
SRC_URI[md5sum] = "9a78593decccaa889523aa4bb555ed4b"
SRC_URI[sha256sum] = 
"211c67b0c4aae277d34b1c5f842db1952e468e5905142868e4718ac838f08a65"
do_configure() {
${S}/configure
}
do_install() {
oe_runmake 'DESTDIR=${D}' install
}
Tâches explicites
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 48
www.ciose.fr
Anatomie d'une recette
(gthumb)
DESCRIPTION = "gThumb is an image viewer and browser for the GNOME Desktop"
SECTION = "x11/gnome"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
DEPENDS = "glib­2.0 gtk+ libxml2 gnome­doc­utils libunique gconf libpng 
gstreamer jpeg tiff gst­plugins­base"
PR = "r4"
EXTRA_OECONF = "­­disable­gnome­keyring ­­disable­libsoup ­­disable­exiv2 
­­disable­clutter"
inherit gnome pkgconfig
SRC_URI[archive.md5sum] = "97fc13221b0c5d80c27a2e25a3a3ac6f"
SRC_URI[archive.sha256sum] = 
"cf809695230ab8892a078be454a42ade865754c72ec1da7c3d74d4310de54f1d"
SRC_URI += "file://parallel.patch"
do_install_append () {
rm ${D}${libdir}/${BPN}/extensions/*.a
}
FILES_${PN} += "${datadir}/icons"
FILES_${PN} += "${libdir}/${BPN}/extensions/*.so 
                ${libdir}/${BPN}/extensions/*.extension"
FILES_${PN}­dev += "${libdir}/${BPN}/extensions/*.la"
FILES_${PN}­dbg += "${libdir}/${BPN}/extensions/.debug/"
Directives packaging
Dépendances
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 49
www.ciose.fr
Anatomie d'une recette
(image)
include recipes­sato/images/core­image­sato.bb
IMAGE_FEATURES += "debug­tweaks"
DISTRO_FEATURES += "pulseaudio"
WEB = "web­webkit"
# Add extra image features
EXTRA_IMAGE_FEATURES += " 
    ${SOC_EXTRA_IMAGE_FEATURES} 
    nfs­server 
    tools­debug 
    tools­profile 
    qt4­pkgs 
"
IMAGE_INSTALL += " 
    ${SOC_IMAGE_INSTALL} 
    cpufrequtils 
    nano 
    packagegroup­fsl­gstreamer 
    packagegroup­fsl­tools­testapps 
    packagegroup­fsl­tools­benchmark 
    packagegroup­qt­in­use­demos 
    qt4­plugin­phonon­backend­gstreamer 
    qt4­demos 
    qt4­examples 
    fsl­gui­extrafiles 
    "
export IMAGE_BASENAME = "fsl­image­gui"
Sélection de features
Sélection de packagroups
et composants
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 50
www.ciose.fr
Modification d'une recette
en delta
FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:"
dirs755 += " ${localstatedir}/volatile/mqueue"
volatiles += "mqueue"
SRC_URI += "file://root­profile"
CONFFILES_${PN} += "/home/root/.profile"
do_install_append() {
install ­m 0755 ${WORKDIR}/root­profile $
{D}/home/root/.profile
}
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 51
www.ciose.fr
Création d'une image
Une commande unique fabrique l'image
déployable :
bitbake qt4e-demo-image
Calcul de toutes les dépendances
Enchaînement automatique de toutes les tâches
élémentaires, jusqu'à l'image finale
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 52
www.ciose.fr
Création d'un paquet
individuel
Une commande unique fabrique le paquet
déployable :
bitbake busybox
Calcul de toutes les dépendances
Enchaînement automatique de toutes les tâches
élémentaires, jusqu'au(x) paquet(s) final(aux)
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 53
www.ciose.fr
Création de recettes
nouvelles
Nombreuses recettes disponibles
Utiliser l'existant (voir layers index)
Nécessité de créer ses propres recettes pour :
Logiciel existant mais pas de recette disponible
Logiciels développés in house
Images et packagegroup propres
Définir les diverses variables nécessaires
Définir explicitement les diverses tâches
Usage des autotools facilite les choses : classe
dédiée définit automatiquement toutes les tâches
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 54
www.ciose.fr
Adaptation de recettes
existantes
Créer des fichiers bbappend dans une couche
de niveau supérieur
Permet de personnaliser les réglages
Permet d'appliquer des patches ou de modifier
le packaging
Etc....


Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 55
www.ciose.fr
Gestion du versionning
hôte
2 niveaux de versionning :
Version du logiciel (gérée par l'équipe projet qui
développe ce logiciel upstream)
Version de la recette (gérée par la communauté
Yocto)
Plusieurs recettes possibles pour un même
logiciel (différentes versions du logiciel +
svn/git) 
Par défaut version la + élevée retenue – peut
être contré par paramétrage au niveau
distribution
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 56
www.ciose.fr
Gestion du versionning
cible
Gestionnaire de paquets sur la cible :
Installation
Suppression
Upgrade
Gère les dépendances à l'installation -
suppression
Gère les versions du logiciel + version de la
recette :
Refus des downgrade sauf forçage
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 57
www.ciose.fr
Création d'un BSP pour un
nouveau hardware
Créer une couche dédiée au hardware
Créer les recettes des spécificités liées au
matériel :
Bootloader
Kernel
Serveur Xorg
Éléments de facteur de forme
Éventuellement codecs, librairies graphiques
accélérées etc...
Définir les caractéristiques propres au hardware
Architecture
Tuning cross compilateur ….

Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 58
www.ciose.fr
Reproductibilité et
isolation
Yocto permet de :
Supprimer toute tâche manuelle : bitbake my­
image
Définir tous les paramétrages de l'image à priori, dans
des recette ad hoc (pas d'intervention manuelle
durant l'installation sur le device)
Assurer l'indépendance avec le PC hôte
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 59
www.ciose.fr
Reproductibilité et
isolation
Tous les composants utilisés (excepté des outils
très basique tels shell, python, compilateur
natif ...) viennent de la sandbox Yocto :
Outils natifs utilisés générés par Yocto
Headers et librairies croisées utilisés durant la
compilation croisée
L'utilisation d'une sandbox évite les erreurs dues
à des headers incorrects
Les headers coté hôte n'ont pas forcément la bonne
version pour les logiciels cross compilés pour la cible.


Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 60
www.ciose.fr
Bon à savoir
Outil historiquement en mode console :
Mais apparition de version graphique : Hob
Plugin Eclipse : ADT
Prévoir beaucoup de disque et de temps CPU :
Génération de la toolchain + libc par Yocto (temps
CPU)
Conservation des étapes intermédiaires – optionnel
mais utile – très gourmand en disque
Connaissance de Python : non obligatoire mais
un + pour comprendre / développer des recettes
Connaissance des standards tels que autotools,
pkgconfig etc... conseillée :
Plus du fait des logiciels gérés que de Yocto lui même
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 61
www.ciose.fr
Conclusion
Yocto fournit un framework complet pour développer
des distributions embarquées riches et fiables :
Jeu de recettes large
Forte communauté d'utilisateurs
Investissement d'acteurs majeurs (fondeurs, vendeurs
d'outils, sociétés de software ...)
Le framework et la communauté prennent en compte
la compléxité et la fragmentation de l'écosystème
Linux
Utilisé par des fondeurs majeurs (Intel, AMD,
Freescale, T.I. ...), fondation de distribution Linux
commerciales (Wind River Linux, Enea Linux, Mentor
Graphics Embedded Linux ...)
2 release par an, sur une base prévisible
(Printemps et Automne)

Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 62
www.ciose.fr
Conclusion
Yocto est un outil de packaging, la fiabilité globale
dépend également de la qualité des projets upstream
Mais des corrections locales
Un effort de sélection de projets « sérieux »
Ne pas négliger qu'il n'y a pas d'outil miracle :
Temps de prise en main initial
Courbe d'apprentissage pour passer par les stades :
J'utilise
Je comprends
Je modifie / je crée
La documentation s'est professionnalisée (sur le site
Web Yocto et distribuée avec le code).
Se faire accompagner par un spécialiste : réduction
du Time To Market
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 63
www.ciose.fr
Projets développés avec
Yocto
Projets développés par CIO, basés sur Yocto :
Device de gestion de l'énergie : base de données
embarquée, FTP et Web server, communications
Modbus
SCADA contrôlant la motorisation de bateaux : Qt,
localisation et internationalisation (langues asiatiques)
Système In Flight Entertainment : codecs, protocoles
vidéo et audio, DLNA, SOAP, librairies graphiques
(moving map)
Appareil d'analyse médicale : Xorg sans Window
manager, Java, serveur impression Cups, BDD
Postgresql
Terminal de vote électronique : Qt4 embedded sur
framebuffer, sécurisation des installations par
cryptograpie asymétrique
Et bien d'autres en cours ou à venir ….
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 64
www.ciose.fr
Démonstration
Démo effectuée sur COM Hera développé par
CIO :
Processeur IMX 6 de Freescale
Distribution Yocto utilisée comme base des solutions
In Flight Entertainment
Carte d’accueil = carte de développement
Remplacée par carte métier dédiée sur avion
Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 65
www.ciose.fr
Démonstration

Weitere ähnliche Inhalte

Was ist angesagt?

Créer une distribution Linux embarqué professionnelle avec Yocto Project
Créer une distribution Linux embarqué professionnelle avec Yocto ProjectCréer une distribution Linux embarqué professionnelle avec Yocto Project
Créer une distribution Linux embarqué professionnelle avec Yocto ProjectChristian Charreyre
 
Embarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsguest3be047
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Christian Charreyre
 
Open Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projetOpen Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projetChristian Charreyre
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedAnne Nicolas
 
Présentation Yocto - SophiaConf 2015
Présentation Yocto - SophiaConf 2015Présentation Yocto - SophiaConf 2015
Présentation Yocto - SophiaConf 2015Christian Charreyre
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Jean-Marc Fontaine
 
Open Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarqueOpen Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarqueAlexandre LAHAYE
 
974267 ubuntu-documentation-installation-configuration
974267 ubuntu-documentation-installation-configuration974267 ubuntu-documentation-installation-configuration
974267 ubuntu-documentation-installation-configurationYounes Hajji
 
Linux - Hedi Magroun - AUF - 2008
Linux -  Hedi Magroun - AUF - 2008Linux -  Hedi Magroun - AUF - 2008
Linux - Hedi Magroun - AUF - 2008Hedi Magroun
 
Logiciel Libre - Hedi Magroun - AUF - 2008
Logiciel Libre - Hedi Magroun - AUF - 2008Logiciel Libre - Hedi Magroun - AUF - 2008
Logiciel Libre - Hedi Magroun - AUF - 2008Hedi Magroun
 

Was ist angesagt? (20)

OS libres pour l'IoT - Zephyr
OS libres pour l'IoT - ZephyrOS libres pour l'IoT - Zephyr
OS libres pour l'IoT - Zephyr
 
Créer une distribution Linux embarqué professionnelle avec Yocto Project
Créer une distribution Linux embarqué professionnelle avec Yocto ProjectCréer une distribution Linux embarqué professionnelle avec Yocto Project
Créer une distribution Linux embarqué professionnelle avec Yocto Project
 
Embarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apports
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...
 
Open Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projetOpen Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projet
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
 
Présentation Yocto - SophiaConf 2015
Présentation Yocto - SophiaConf 2015Présentation Yocto - SophiaConf 2015
Présentation Yocto - SophiaConf 2015
 
Meetup Systemd vs sysvinit
Meetup Systemd vs sysvinitMeetup Systemd vs sysvinit
Meetup Systemd vs sysvinit
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012
 
Historique
HistoriqueHistorique
Historique
 
Licences libres et embarqué
Licences libres et embarquéLicences libres et embarqué
Licences libres et embarqué
 
Cours linux
Cours linuxCours linux
Cours linux
 
Install party
Install partyInstall party
Install party
 
Open Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarqueOpen Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarque
 
Autotools
AutotoolsAutotools
Autotools
 
974267 ubuntu-documentation-installation-configuration
974267 ubuntu-documentation-installation-configuration974267 ubuntu-documentation-installation-configuration
974267 ubuntu-documentation-installation-configuration
 
Linux - Hedi Magroun - AUF - 2008
Linux -  Hedi Magroun - AUF - 2008Linux -  Hedi Magroun - AUF - 2008
Linux - Hedi Magroun - AUF - 2008
 
Linux
Linux Linux
Linux
 
Logiciel Libre - Hedi Magroun - AUF - 2008
Logiciel Libre - Hedi Magroun - AUF - 2008Logiciel Libre - Hedi Magroun - AUF - 2008
Logiciel Libre - Hedi Magroun - AUF - 2008
 

Andere mochten auch

Tracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB Thèque
Tracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB ThèqueTracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB Thèque
Tracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB ThèqueBernard Jeanne-Beylot
 
ROBOT à base d'Android - Présentation PFE
ROBOT à base d'Android - Présentation PFEROBOT à base d'Android - Présentation PFE
ROBOT à base d'Android - Présentation PFEHoussem Eddine LASSOUED
 
40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...
40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...
40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...Daniels Training Services
 
A SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESS
A SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESSA SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESS
A SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESSJournal For Research
 
Chromium problems
Chromium problemsChromium problems
Chromium problemscrazyaxe
 
Metabolisme des lipides
Metabolisme des lipidesMetabolisme des lipides
Metabolisme des lipideskillua zoldyck
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bdCamille Volant
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosionCHTAOU Karim
 
TRANSITION METALS
TRANSITION METALSTRANSITION METALS
TRANSITION METALSDrix78
 
TALAT Lecture 5203: Anodizing of Aluminium
TALAT Lecture 5203: Anodizing of AluminiumTALAT Lecture 5203: Anodizing of Aluminium
TALAT Lecture 5203: Anodizing of AluminiumCORE-Materials
 
Methods for removal of chromium
Methods for removal of chromiumMethods for removal of chromium
Methods for removal of chromiumArvind Gupta
 
Présentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEPrésentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEBrice Kosinski
 
Animation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesAnimation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesTarik Taleb Bendiab
 
Baroffio y karsa
Baroffio y karsaBaroffio y karsa
Baroffio y karsajeanpyXD
 
Deep oxidation of heterogeneous VOCs: practice and feedback
Deep oxidation of heterogeneous VOCs: practice and feedbackDeep oxidation of heterogeneous VOCs: practice and feedback
Deep oxidation of heterogeneous VOCs: practice and feedbackSerge Vigneron
 
Removal of chromium
Removal of chromiumRemoval of chromium
Removal of chromiumAmr Elshikh
 

Andere mochten auch (20)

Energie maison
Energie maisonEnergie maison
Energie maison
 
Tracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB Thèque
Tracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB ThèqueTracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB Thèque
Tracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB Thèque
 
ROBOT à base d'Android - Présentation PFE
ROBOT à base d'Android - Présentation PFEROBOT à base d'Android - Présentation PFE
ROBOT à base d'Android - Présentation PFE
 
40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...
40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...
40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...
 
A SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESS
A SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESSA SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESS
A SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESS
 
Chromium problems
Chromium problemsChromium problems
Chromium problems
 
Metabolisme des lipides
Metabolisme des lipidesMetabolisme des lipides
Metabolisme des lipides
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bd
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosion
 
TRANSITION METALS
TRANSITION METALSTRANSITION METALS
TRANSITION METALS
 
TALAT Lecture 5203: Anodizing of Aluminium
TALAT Lecture 5203: Anodizing of AluminiumTALAT Lecture 5203: Anodizing of Aluminium
TALAT Lecture 5203: Anodizing of Aluminium
 
Methods for removal of chromium
Methods for removal of chromiumMethods for removal of chromium
Methods for removal of chromium
 
Présentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEPrésentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINE
 
Animation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesAnimation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiques
 
Baroffio y karsa
Baroffio y karsaBaroffio y karsa
Baroffio y karsa
 
Deep oxidation of heterogeneous VOCs: practice and feedback
Deep oxidation of heterogeneous VOCs: practice and feedbackDeep oxidation of heterogeneous VOCs: practice and feedback
Deep oxidation of heterogeneous VOCs: practice and feedback
 
Chromium ppt
Chromium pptChromium ppt
Chromium ppt
 
Removal of chromium
Removal of chromiumRemoval of chromium
Removal of chromium
 
final report.edit
final report.editfinal report.edit
final report.edit
 
Principles of corrosion
Principles of corrosionPrinciples of corrosion
Principles of corrosion
 

Ähnlich wie Séminaire Captronic Yocto 24 février 2015

Introduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresIntroduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresBruno Cornec
 
OS mobiles alternatifs
OS mobiles alternatifsOS mobiles alternatifs
OS mobiles alternatifsLionel Duboeuf
 
20121128 logiciels libres
20121128 logiciels libres 20121128 logiciels libres
20121128 logiciels libres Sylvain DENIS
 
Les Logiciels Libres et Open Sources
Les Logiciels Libres et Open SourcesLes Logiciels Libres et Open Sources
Les Logiciels Libres et Open SourcesJibril Touzi
 
Comparatif Windows/Linux
Comparatif Windows/LinuxComparatif Windows/Linux
Comparatif Windows/LinuxJibril Touzi
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceChristian Charreyre
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Smile I.T is open
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxBruno Cornec
 
intro-linux-v4.pdf
intro-linux-v4.pdfintro-linux-v4.pdf
intro-linux-v4.pdfBruno Cornec
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?ALTER WAY
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ? Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ? ALTER WAY
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsJohan Moreau
 
Les solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésAlexandre LAHAYE
 
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...jihbed
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps ParisLeTesteur
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Windows ou Linux : il faut choisir... ou pas !
Windows ou Linux : il faut choisir... ou pas !Windows ou Linux : il faut choisir... ou pas !
Windows ou Linux : il faut choisir... ou pas !SpikeeLabs
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Smile I.T is open
 

Ähnlich wie Séminaire Captronic Yocto 24 février 2015 (20)

Introduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresIntroduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libres
 
OS mobiles alternatifs
OS mobiles alternatifsOS mobiles alternatifs
OS mobiles alternatifs
 
20121128 logiciels libres
20121128 logiciels libres 20121128 logiciels libres
20121128 logiciels libres
 
Les Logiciels Libres et Open Sources
Les Logiciels Libres et Open SourcesLes Logiciels Libres et Open Sources
Les Logiciels Libres et Open Sources
 
Comparatif Windows/Linux
Comparatif Windows/LinuxComparatif Windows/Linux
Comparatif Windows/Linux
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open Source
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à Linux
 
intro-linux-v4.pdf
intro-linux-v4.pdfintro-linux-v4.pdf
intro-linux-v4.pdf
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ? Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
 
Les solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarqués
 
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps Paris
 
Prototypage IoT avec logiciel/matériel libre
Prototypage IoT avec logiciel/matériel librePrototypage IoT avec logiciel/matériel libre
Prototypage IoT avec logiciel/matériel libre
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Windows ou Linux : il faut choisir... ou pas !
Windows ou Linux : il faut choisir... ou pas !Windows ou Linux : il faut choisir... ou pas !
Windows ou Linux : il faut choisir... ou pas !
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
 

Mehr von Christian Charreyre

Meetup Cybersécurité RGPD Conséquences dans l'Embarqué
Meetup Cybersécurité RGPD Conséquences dans l'EmbarquéMeetup Cybersécurité RGPD Conséquences dans l'Embarqué
Meetup Cybersécurité RGPD Conséquences dans l'EmbarquéChristian Charreyre
 
Developing an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureDeveloping an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureChristian Charreyre
 
Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015Christian Charreyre
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsChristian Charreyre
 
Logiciels libres en milieu industriel
Logiciels libres en milieu industrielLogiciels libres en milieu industriel
Logiciels libres en milieu industrielChristian Charreyre
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsChristian Charreyre
 

Mehr von Christian Charreyre (7)

Meetup Cybersécurité RGPD Conséquences dans l'Embarqué
Meetup Cybersécurité RGPD Conséquences dans l'EmbarquéMeetup Cybersécurité RGPD Conséquences dans l'Embarqué
Meetup Cybersécurité RGPD Conséquences dans l'Embarqué
 
Developing an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureDeveloping an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architecture
 
Le Device Tree Linux
Le Device Tree LinuxLe Device Tree Linux
Le Device Tree Linux
 
Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projects
 
Logiciels libres en milieu industriel
Logiciels libres en milieu industrielLogiciels libres en milieu industriel
Logiciels libres en milieu industriel
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projects
 

Séminaire Captronic Yocto 24 février 2015

  • 1. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 1 www.ciose.fr Concevoir un systèmeConcevoir un système embarqué Linux avecembarqué Linux avec YOCTO ProjectYOCTO Project C. CharreyreC. Charreyre christian.charreyre@ciose.frchristian.charreyre@ciose.fr http://www.ciose.frhttp://www.ciose.fr @CIOinfoindus@CIOinfoindus
  • 2. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 2 www.ciose.fr Licence Attribution-Noncommercial-Share Alike 4.0 International You are free: to Share - copy and redistribute the material in any medium or format to Adapt - remix, transform, and build upon the material The licensor cannot revoke these freedoms as long as you follow the license terms. Under the following conditions: Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. NonCommercial — You may not use the material for commercial purposes. ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. License text : http://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
  • 3. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 3 www.ciose.fr CIO en quelques mots Société d'ingénierie en systèmes embarqués : électronique et logiciel Au service de nos clients depuis 1990 Une équipe de 15 spécialistes en embarqué et temps réel Expert en Linux embarqué depuis 2000, OpenEmbedded et Yocto depuis 2008 CA annuel : 1 500 000 € Siège à Saint-Etienne Agence à Marseille Agréé CIR
  • 4. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 4 www.ciose.fr Contexte technique et business
  • 5. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 5 www.ciose.fr Les tendances en Linux embarqué 10 ans en arrière, Linux = alternative aux RTOS propriétaires → peu de besoins fonctionnels : Kernel et glibc Fabrication d'un Root File System autour de Busybox Application métier développée en interne Peu de problèmes de complexité et de cohérence Nécessité d'une bonne connaissance de Linux pour créer sa distribution embarquée Linux = un OS parmi d'autres, pas de développement massif
  • 6. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 6 www.ciose.fr Les tendances en Linux embarqué Aujourd'hui: forte pression pour développer des smart devices dans des Time To Market réduits Moins (plus?) de limitations de mémoire vive ou de masse Processeurs beaucoup plus puissants IHM riches avec audio, vidéo, graphisme évolué (impact iOS et Androïd) Besoins importants de connectivité : Wifi, Bluetooth, 3G Time to Market de plus en plus court Recentrage sur la valeur ajoutée
  • 7. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 7 www.ciose.fr Les tendances en Linux embarqué Compétition sur la spécificité – coopération sur les environnements de base Ex : Initiative Genivi dans le monde automobile (In Vehicle Infotainment) – Création d'une distribution basée Yocto
  • 8. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 8 www.ciose.fr Quelques exemples Devices bâtis sur base Embedded Linux :
  • 9. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 9 www.ciose.fr Le couple fort : ARM + Linux Beaucoup de processeurs ARM au coté des architectures X86 : Fondeurs multiples Intégration processeur + fonctions micro contrôleur sur un SOC Faible consommation (relatif) Rapport coût / performance souvent intéressant Solutions ARM souvent accompagnées d'OS Linux
  • 10. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 10 www.ciose.fr Le challenger Androïd Forte demande Androïd sur le marché de l'embarqué : Diffusion de l'OS auprès des utilisateurs par smartphone / tablettes Attrait d'une interface unique domaine personnel / domaine professionnel Importance de la connectivité Attrait du Play Store pour les smart devices Sentiment Androïd = une version de Linux
  • 11. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 11 www.ciose.fr Le challenger Androïd Androïd = OS différent, avec un Linux modifié « sous le capot » Le monde Linux reste totalement caché aux développeurs Développement normal en Java au dessus du framework Androïd Paradigmes de développement très éloignés des habitudes de l'embarqué Une version Open Source AOSP, et une version interne Google Seul Google pilote l'évolution d'Androïd
  • 12. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 12 www.ciose.fr Le challenger Android Nécessité de réussir les tests de compatibilité CTS de Google pour avoir accès Aux applications spécifiques Google Au store Play Store Prérequis matériels et logiciels Nécessité de porter Android sur sa plateforme Plus complexe qu'un portage Linux Plus de documentation si pas enregistré auprès de Google Drivers au niveau Linux + HAL Kernel Linux spécifique patches nécessaires sur kernel Linux déjà dispo sur la plateforme Bien réfléchir au choix Androïd vs Linux
  • 13. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 13 www.ciose.fr Pourquoi un outil de build ?
  • 14. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 14 www.ciose.fr Comment répondre au challenge Linux embarqué ? Utiliser des éléments logiciels issus du riche écosystème Linux Les assembler comme des briques modulaires, tels quels ou adaptés Développer seulement les éléments applicatifs non disponibles sur étagère :  Mouvement d'une culture de développeur vers une culture d'assembleur
  • 15. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 15 www.ciose.fr Comment répondre au challenge Linux embarqué ? Nécessité d'outils adaptés pour gérer la fragmentation et la complexité de l'écosystème Linux, et assurer une cohérence globale : Outils de génération de distributions Linux embarquée
  • 16. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 16 www.ciose.fr Travailler avec Linux Un monde fragmenté aux multiples sources Bootloaders (UBoot, RedBoot, LILO, Grub, ...) Kernel (kernel.org, fournisseur hardware, ...) Librairies de base (glibc ou alternatives réduites) Bases applicatives (busybox, kits embarqués libres ou propriétaires, ....) IHM (Qt, MicroWindows/NanoX, ...) Multimédia (Mplayer, Gstreamer, Xine, ....) Extensions temps réel (RTAI, Xenomai, …) Qu'il faut assembler en un ensemble cohérent : votre device Mais chaque projet contributeur vit sa vie à son propre rythme : cycle de vie propre, sans gestion centralisée
  • 17. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 17 www.ciose.fr Faire attention au respect de licences multiples (GPL, LGPL, BSD, etc...) Les connaître et les respecter Adapter ce que l'on utilise à sa stratégie de publication des codes source Travailler avec Linux
  • 18. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 18 www.ciose.fr Pourquoi un outil de build ? Pour éviter cela
  • 19. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 19 www.ciose.fr Pourquoi un outil de build ? Pour gérer cela
  • 20. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 20 www.ciose.fr Pourquoi un outil de build ? Dépendances de nautilus (file manager) : 62 librairies
  • 21. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 21 www.ciose.fr Des images reproductibles Nécessité de maîtriser la production des images embarquées Dans un contexte riche avec de multiples dépendances Dans un contexte évolutif (dynamique logiciel libre) Dans la durée (pérennité des produits) A l'identique ou avec des corrections / évolutions Solutions manuelles à bannir Dépendantes des acteurs (manque de formalisme, le gourou parti ou absent comment fait on?) Atteignent leurs limites face à l'inflation des composants à gérer
  • 22. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 22 www.ciose.fr Des images reproductibles Robustesse de la production aux changements d'infrastructure de développement Changement de matériel ou de version d'OS : quel impact ? Risque réduit par utilisation de Virtual Machines Garantir la possibilité de rebâtir l'image identique, mais également de la faire évoluer de façon maîtrisée Reproductible  Figé Intégrer tous les paramétrages à la production de l'image (logins, réseau, langue, etc....) Suppression des réglages manuels opérés lors de l'installation
  • 23. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 23 www.ciose.fr Isolation poste développeur / cible Le Root File System est d'abord construit sur le poste de développeur Les logiciels embarqués sont cross compilés sur le poste développeur Nécessité d'éviter tout mélange entre hôte et cible : Processus de compilation : headers et libraires croisées vs natives Processus d'installation : librairies, exécutables et fichiers de contrôle Attention aux mélanges !!! Problème général mais amplifié dans le cas Linux
  • 24. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 24 www.ciose.fr Isolation poste développeur / cible #include <libxml/xmwriter.h> code.c /usr - |-- include - | |-- libxml2 - | |-- libxml - | | – xmlwriter.h |-- lib - | |-- libxml2.so.3.4.1 $(ST)/usr - |-- include - | |-- libxml2 - | |-- libxml - | | – xmlwriter.h |-- lib - | |-- libxml2.so.2.9.2 Compile KO Compile OK Link KO Link OK Distribution hôte Sysroot target = « sandbox » ABI incorrecte
  • 25. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 25 www.ciose.fr Isolation poste développeur / cible #include <libxml/xmwriter.h> code.c /usr - |-- bin - | |-- arm-none-linux-gnueabi-gcc | |-- autoconf | |-- automake | |-- make $(SH)/usr - |-- bin - | |-- arm-none-linux-gnueabi-gcc | |-- autoconf | |-- automake | |-- make Outils de compilation Outils de compilation Distribution hôte Sysroot host = « sandbox » Indépendant des évolutions distri hôte
  • 26. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 26 www.ciose.fr Des besoins communs : Sélectionner les composants logiciels Configurer Cross Compiler Installer dans le File System image (en cours de construction) Conditionner le File System au format final Besoins liés à la logique de développement Linux : ./configure – make – make install Dans un contexte de développement croisé : Complication liée à la séparation hôte - cible Les outils disponibles
  • 27. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 27 www.ciose.fr Tour d'horizon : Do It Yourself : limité aux cas simples Avantage = maîtrise totale Inconvénient = il faut tout faire Buildroot : simple mais fonctionnellement moins riches que les autres Adapté aux applications enfouies, pas très riches Difficile de travailler en différentiel : régénération complète du File System, pas de gestion de paquets Basé sur des Makefiles Scratchbox : riche mais obsolète LTIB : outil utilisé par Freescale, mais changement en cours au profit du Yocto Project Versions logicielles datées (host + target) Les outils disponibles
  • 28. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 28 www.ciose.fr Tour d'horizon : OpenEmbedded Ancêtre commun issu du projet Open Zaurus, toujours actif. Base de distributions variées Angström Distribution orientée machines ARM, construite à partir de OpenEmbedded core. Yocto Project Projet pour mettre en place de manière industrielle des outils de création de distribution Linux embarqué Sous l'égide de la Linux Foundation Implémente la distribution Poky en se basant sur Open Embedded Par abus de langage dans la suite du document, nous utilisons Yocto pour l'ensemble des concepts évoqués. OpenEmbedded / Angström / Yocto (Poky) cousins Les outils disponibles
  • 29. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 29 www.ciose.fr Les outils disponibles OpenEmbedded Core fondement de Yocto et Angström Même syntaxe, même moteur : Assemblage possible entre recettes issues des 3 outils Tout ce qui est vrai pour Yocto est valable pour Angström
  • 30. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 30 www.ciose.fr Utilisation de Yocto
  • 31. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 31 www.ciose.fr Workflow de Yocto Credit – Yocto Project
  • 32. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 32 www.ciose.fr Workflow de Yocto Les entrées : Code source des projets « upstream » : Fetchés depuis le site projet ou depuis un miroir Yocto Formats variés : archive, révision dans un SCM ... Protocoles variés : http(s), ftp, svn, git … Code source local (projet interne) : Archive locale ou accès à un serveur SCM interne Fichiers de configuration : Caractéristiques de la machine cible (kernel, bootloader, format image, tuning compilateur ...) Caractéristiques de la distribution (paquets inclus, versions, choix entre alternatives, choix libc …) Caractéristiques des layers (détaillé ultérieurement) Configuration du build : machine, distribution, layers actives, format paquet ...
  • 33. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 33 www.ciose.fr Workflow de Yocto Le cœur : Un moteur d'exécution de tâches écrit en Python : bitbake Exécute automatiquement les tâches nécessaires à la fabrication de la cible fournie Fonctionne en ligne de commande Exemple : bitbake core­image­minimal
  • 34. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 34 www.ciose.fr Workflow de Yocto Les sorties : Les paquets binaires des composants utilisés (formats ipk, deb ou rpm) Possibilité d'embarquer un gestionnaire de paquets sur la cible Permet de travailler en différentiel pour mise à jour / enrichissement L'image finale déployable sur la cible (formats variés : tar.bz2, ext3, ubi etc....) Un SDK exportable pour les développeurs d'application Un récapitulatif des paquets embarqués et de leur licences
  • 35. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 35 www.ciose.fr Le moteur bitbake Un moteur écrit en Python : bitbake Un jeu de recettes pour fabriquer les paquets logiciels Une notion de classes pour mise en commun entre recettes Une notion de méta paquets pour structurer (packagegroup) Des dépendances entre paquets, décrites dans les recettes, ou déterminées automatiquement (librairies partagées) Pour chaque recette des tâches élémentaires Calcul de l'arbre des dépendances pour fabriquer les paquets dans le bon ordre
  • 36. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 36 www.ciose.fr Principales tâches élémentaires Tâche Rôle fetch Téléchargement depuis dépôt upstream unpack Extraction dans répertoire travail patch Application de patches issus des recettes configure Configuration compile Compilation croisée install Installation dans tampon local au composant populate_lic Installation fichier(s) licence dans répertoire deploy package Fabrication des descriptifs des packages populate_sysroot Déploiement des paquets dans le sysroot package_write_xxx Création du paquet au format xxx
  • 37. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 37 www.ciose.fr Structuration en couches Architecture en couches Priorité entre couches qui partageraient une recette Liste des couches : http://layers.openembedded.org/layerindex/layers/
  • 38. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 38 www.ciose.fr Structuration en couches Possibilité de créer sa propre layer (niveau société) Possibilité de créer des layers par affaire ou projet Le but est d'optimiser la réutilisation des recettes en évitant au maximum la duplication Si une même recette présente dans plusieurs layers, c'est la layer de priorité supérieure qui s'impose.
  • 39. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 39 www.ciose.fr Structuration en couches L'utilisation des couches améliore la réutilisabilité Les recettes peuvent être modifiées dans les couches supérieures à l'aide d'une sorte de patch (fichier bbappend) : Recette originale inchangée dans la couche inférieure Le fichier bbappend personnalise la recette dans la couche supérieure Meta (Open Embedded core) Meta-yocto (Yocto layer) Meta-xxx-BSP (BSP layer) Meta-sw-comp (Company soft layer) Meta-sw-projA (Project soft layer) Meta (Open Embedded core) Meta-yocto (Yocto layer) Meta-yyy-BSP (BSP layer) Meta-sw-comp (Company soft layer) Meta-sw-projB (Project soft layer) Meta-xxx-ISV (commercial layer) Projet A Projet B
  • 40. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 40 www.ciose.fr Anatomie d'une recette Une recette pour un ou plusieurs paquets (fractionnement pour optimisation de l'espace) Des variables d'environnement Des tâches élémentaires implicites ou explicites (pour modifier l'implicite) : langage shell et python Jeu de recettes géré par la communauté Yocto → solution au problème de complexité : Cohérence entre versions de composants dépendants Mise à jour des recettes fonction des évolutions upstream Application de patches locaux quand cela est nécessaire
  • 41. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 41 www.ciose.fr Anatomie d'une recette (log4c) SUMMARY = "a library of C for flexible logging to files, syslog and other  destinations" SECTION = "libs" HOMEPAGE = "http://log4c.sourceforge.net/" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" PR = "r1" SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz  file://oe.patch  file://add­pkgconfig­data.patch  " inherit autotools pkgconfig binconfig SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6" SRC_URI[sha256sum] =  "6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b" Descriptif
  • 42. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 42 www.ciose.fr Anatomie d'une recette (log4c) SUMMARY = "a library of C for flexible logging to files, syslog and other  destinations" SECTION = "libs" HOMEPAGE = "http://log4c.sourceforge.net/" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" PR = "r1" SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz  file://oe.patch  file://add­pkgconfig­data.patch  " inherit autotools pkgconfig binconfig SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6" SRC_URI[sha256sum] =  "6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b" Licence
  • 43. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 43 www.ciose.fr Anatomie d'une recette (log4c) SUMMARY = "a library of C for flexible logging to files, syslog and other  destinations" SECTION = "libs" HOMEPAGE = "http://log4c.sourceforge.net/" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" PR = "r1" SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz  file://oe.patch  file://add­pkgconfig­data.patch  " inherit autotools pkgconfig binconfig SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6" SRC_URI[sha256sum] =  "6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b" Révision recette
  • 44. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 44 www.ciose.fr Anatomie d'une recette (log4c) SUMMARY = "a library of C for flexible logging to files, syslog and other  destinations" SECTION = "libs" HOMEPAGE = "http://log4c.sourceforge.net/" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" PR = "r1" SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz  file://oe.patch  file://add­pkgconfig­data.patch  " inherit autotools pkgconfig binconfig SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6" SRC_URI[sha256sum] =  "6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b" Sources + patches locaux
  • 45. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 45 www.ciose.fr Anatomie d'une recette (log4c) SUMMARY = "a library of C for flexible logging to files, syslog and other  destinations" SECTION = "libs" HOMEPAGE = "http://log4c.sourceforge.net/" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" PR = "r1" SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz  file://oe.patch  file://add­pkgconfig­data.patch  " inherit autotools pkgconfig binconfig SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6" SRC_URI[sha256sum] =  "6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b" Classes héritées
  • 46. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 46 www.ciose.fr Anatomie d'une recette (log4c) SUMMARY = "a library of C for flexible logging to files, syslog and other  destinations" SECTION = "libs" HOMEPAGE = "http://log4c.sourceforge.net/" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" PR = "r1" SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c­${PV}.tar.gz  file://oe.patch  file://add­pkgconfig­data.patch  " inherit autotools pkgconfig binconfig SRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6" SRC_URI[sha256sum] =  "6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b" Checksums
  • 47. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 47 www.ciose.fr Anatomie d'une recette (ed) DESCRIPTION = "a line­oriented text editor" HOMEPAGE = "http://www.gnu.org/software/ed/" BUGTRACKER = "" LICENSE = "GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949                       file://ed.h;endline=20;md5=c708cda1b2e8d723d458690b7db03878                       file://main.c;endline=24;md5=1bd039d59e04ee5f82adcc970144a2c3" SECTION = "base" PR = "r0" # LSB states that ed should be in /bin/ bindir = "${base_bindir}" SRC_URI = "${GNU_MIRROR}/ed/ed­${PV}.tar.gz             file://ed­1.2­build.patch" SRC_URI[md5sum] = "9a78593decccaa889523aa4bb555ed4b" SRC_URI[sha256sum] =  "211c67b0c4aae277d34b1c5f842db1952e468e5905142868e4718ac838f08a65" do_configure() { ${S}/configure } do_install() { oe_runmake 'DESTDIR=${D}' install } Tâches explicites
  • 48. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 48 www.ciose.fr Anatomie d'une recette (gthumb) DESCRIPTION = "gThumb is an image viewer and browser for the GNOME Desktop" SECTION = "x11/gnome" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552" DEPENDS = "glib­2.0 gtk+ libxml2 gnome­doc­utils libunique gconf libpng  gstreamer jpeg tiff gst­plugins­base" PR = "r4" EXTRA_OECONF = "­­disable­gnome­keyring ­­disable­libsoup ­­disable­exiv2  ­­disable­clutter" inherit gnome pkgconfig SRC_URI[archive.md5sum] = "97fc13221b0c5d80c27a2e25a3a3ac6f" SRC_URI[archive.sha256sum] =  "cf809695230ab8892a078be454a42ade865754c72ec1da7c3d74d4310de54f1d" SRC_URI += "file://parallel.patch" do_install_append () { rm ${D}${libdir}/${BPN}/extensions/*.a } FILES_${PN} += "${datadir}/icons" FILES_${PN} += "${libdir}/${BPN}/extensions/*.so                  ${libdir}/${BPN}/extensions/*.extension" FILES_${PN}­dev += "${libdir}/${BPN}/extensions/*.la" FILES_${PN}­dbg += "${libdir}/${BPN}/extensions/.debug/" Directives packaging Dépendances
  • 49. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 49 www.ciose.fr Anatomie d'une recette (image) include recipes­sato/images/core­image­sato.bb IMAGE_FEATURES += "debug­tweaks" DISTRO_FEATURES += "pulseaudio" WEB = "web­webkit" # Add extra image features EXTRA_IMAGE_FEATURES += "      ${SOC_EXTRA_IMAGE_FEATURES}      nfs­server      tools­debug      tools­profile      qt4­pkgs  " IMAGE_INSTALL += "      ${SOC_IMAGE_INSTALL}      cpufrequtils      nano      packagegroup­fsl­gstreamer      packagegroup­fsl­tools­testapps      packagegroup­fsl­tools­benchmark      packagegroup­qt­in­use­demos      qt4­plugin­phonon­backend­gstreamer      qt4­demos      qt4­examples      fsl­gui­extrafiles      " export IMAGE_BASENAME = "fsl­image­gui" Sélection de features Sélection de packagroups et composants
  • 50. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 50 www.ciose.fr Modification d'une recette en delta FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:" dirs755 += " ${localstatedir}/volatile/mqueue" volatiles += "mqueue" SRC_URI += "file://root­profile" CONFFILES_${PN} += "/home/root/.profile" do_install_append() { install ­m 0755 ${WORKDIR}/root­profile $ {D}/home/root/.profile }
  • 51. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 51 www.ciose.fr Création d'une image Une commande unique fabrique l'image déployable : bitbake qt4e-demo-image Calcul de toutes les dépendances Enchaînement automatique de toutes les tâches élémentaires, jusqu'à l'image finale
  • 52. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 52 www.ciose.fr Création d'un paquet individuel Une commande unique fabrique le paquet déployable : bitbake busybox Calcul de toutes les dépendances Enchaînement automatique de toutes les tâches élémentaires, jusqu'au(x) paquet(s) final(aux)
  • 53. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 53 www.ciose.fr Création de recettes nouvelles Nombreuses recettes disponibles Utiliser l'existant (voir layers index) Nécessité de créer ses propres recettes pour : Logiciel existant mais pas de recette disponible Logiciels développés in house Images et packagegroup propres Définir les diverses variables nécessaires Définir explicitement les diverses tâches Usage des autotools facilite les choses : classe dédiée définit automatiquement toutes les tâches
  • 54. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 54 www.ciose.fr Adaptation de recettes existantes Créer des fichiers bbappend dans une couche de niveau supérieur Permet de personnaliser les réglages Permet d'appliquer des patches ou de modifier le packaging Etc....  
  • 55. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 55 www.ciose.fr Gestion du versionning hôte 2 niveaux de versionning : Version du logiciel (gérée par l'équipe projet qui développe ce logiciel upstream) Version de la recette (gérée par la communauté Yocto) Plusieurs recettes possibles pour un même logiciel (différentes versions du logiciel + svn/git)  Par défaut version la + élevée retenue – peut être contré par paramétrage au niveau distribution
  • 56. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 56 www.ciose.fr Gestion du versionning cible Gestionnaire de paquets sur la cible : Installation Suppression Upgrade Gère les dépendances à l'installation - suppression Gère les versions du logiciel + version de la recette : Refus des downgrade sauf forçage
  • 57. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 57 www.ciose.fr Création d'un BSP pour un nouveau hardware Créer une couche dédiée au hardware Créer les recettes des spécificités liées au matériel : Bootloader Kernel Serveur Xorg Éléments de facteur de forme Éventuellement codecs, librairies graphiques accélérées etc... Définir les caractéristiques propres au hardware Architecture Tuning cross compilateur …. 
  • 58. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 58 www.ciose.fr Reproductibilité et isolation Yocto permet de : Supprimer toute tâche manuelle : bitbake my­ image Définir tous les paramétrages de l'image à priori, dans des recette ad hoc (pas d'intervention manuelle durant l'installation sur le device) Assurer l'indépendance avec le PC hôte
  • 59. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 59 www.ciose.fr Reproductibilité et isolation Tous les composants utilisés (excepté des outils très basique tels shell, python, compilateur natif ...) viennent de la sandbox Yocto : Outils natifs utilisés générés par Yocto Headers et librairies croisées utilisés durant la compilation croisée L'utilisation d'une sandbox évite les erreurs dues à des headers incorrects Les headers coté hôte n'ont pas forcément la bonne version pour les logiciels cross compilés pour la cible.  
  • 60. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 60 www.ciose.fr Bon à savoir Outil historiquement en mode console : Mais apparition de version graphique : Hob Plugin Eclipse : ADT Prévoir beaucoup de disque et de temps CPU : Génération de la toolchain + libc par Yocto (temps CPU) Conservation des étapes intermédiaires – optionnel mais utile – très gourmand en disque Connaissance de Python : non obligatoire mais un + pour comprendre / développer des recettes Connaissance des standards tels que autotools, pkgconfig etc... conseillée : Plus du fait des logiciels gérés que de Yocto lui même
  • 61. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 61 www.ciose.fr Conclusion Yocto fournit un framework complet pour développer des distributions embarquées riches et fiables : Jeu de recettes large Forte communauté d'utilisateurs Investissement d'acteurs majeurs (fondeurs, vendeurs d'outils, sociétés de software ...) Le framework et la communauté prennent en compte la compléxité et la fragmentation de l'écosystème Linux Utilisé par des fondeurs majeurs (Intel, AMD, Freescale, T.I. ...), fondation de distribution Linux commerciales (Wind River Linux, Enea Linux, Mentor Graphics Embedded Linux ...) 2 release par an, sur une base prévisible (Printemps et Automne) 
  • 62. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 62 www.ciose.fr Conclusion Yocto est un outil de packaging, la fiabilité globale dépend également de la qualité des projets upstream Mais des corrections locales Un effort de sélection de projets « sérieux » Ne pas négliger qu'il n'y a pas d'outil miracle : Temps de prise en main initial Courbe d'apprentissage pour passer par les stades : J'utilise Je comprends Je modifie / je crée La documentation s'est professionnalisée (sur le site Web Yocto et distribuée avec le code). Se faire accompagner par un spécialiste : réduction du Time To Market
  • 63. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 63 www.ciose.fr Projets développés avec Yocto Projets développés par CIO, basés sur Yocto : Device de gestion de l'énergie : base de données embarquée, FTP et Web server, communications Modbus SCADA contrôlant la motorisation de bateaux : Qt, localisation et internationalisation (langues asiatiques) Système In Flight Entertainment : codecs, protocoles vidéo et audio, DLNA, SOAP, librairies graphiques (moving map) Appareil d'analyse médicale : Xorg sans Window manager, Java, serveur impression Cups, BDD Postgresql Terminal de vote électronique : Qt4 embedded sur framebuffer, sécurisation des installations par cryptograpie asymétrique Et bien d'autres en cours ou à venir ….
  • 64. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 64 www.ciose.fr Démonstration Démo effectuée sur COM Hera développé par CIO : Processeur IMX 6 de Freescale Distribution Yocto utilisée comme base des solutions In Flight Entertainment Carte d’accueil = carte de développement Remplacée par carte métier dédiée sur avion
  • 65. Concevoir un système embarqué Linux avec YOCTO Project - 24 Février 2015 65 www.ciose.fr Démonstration