SlideShare une entreprise Scribd logo
1  sur  67
Télécharger pour lire hors ligne
1Logiciels libres et SE
Solutions libres pour les systèmes embarqués
Pierre FICHEUX (pierre.ficheux@openwide.fr)
Mars 2015
2Logiciels libres et SE
Programme
● Présentation
● Rappels sur les systèmes embarqués et temps réel
● Le logiciel libre
● Linux comme système embarqué
● Extensions temps réel de Linux
● Android « embarqué »
● eCOS et RTEMS
● Les outils libres pour l'embarqué
● Open hardware
● Co-design
3Logiciels libres et SE
Présentation Open Wide
● Société d'ingénierie créée en septembre 2001 avec le
concours de THALES et Schneider Electric
● Rachat d'ESG-France (automotive) en 2014
● Environ 160 salariés sur Paris, Lyon, Toulouse et
bientôt Grenoble
● Industrialisation de composants open source
– Développement
– Conseil / Formation
● Trois activités :
– OW Système d'Information (Java/PHP)
– OW Outsourcing: hébergement
– OW Ingénierie: informatique industrielle
4Logiciels libres et SE
Présentation PF
● Ingénieur Arts et Métiers + Sup'Aéro
● Utilisateur de logiciels libres depuis 1989
● Utilisateur de Linux depuis 1992
● Auteur des 4 éditions de l'ouvrage « Linux embarqué »
(Eyrolles), 4ème édition parue en juin 2012 avec E. Bénard
● Auteur GNU Linux Magazine et Open Silicium
● CTO Open Wide Ingénierie, enseignant EPITA, ENSEIRB
5Logiciels libres et SE
Rappels sur les systèmes embarqué
6Logiciels libres et SE
Système / logiciel embarqué
● Un système est l'association matériel + logiciel
● Logiciel utilisé dans un équipement industriel ou un
bien de consommation
● On dit aussi logiciel dédié ou intégré → embedded
software
● L'équipement est valorisé pour son coté fonctionnel et
non pas pour le logiciel !
● Un bon logiciel embarqué doit savoir se faire oublier !
● On parle parfois de logiciel enfoui ou profondément
enfoui → « deeply embedded »
7Logiciels libres et SE
Domaines d'application
● 1960-70 : remplacer / compléter des systèmes
analogiques (spatial)
● 1980 : RTOS (Real Time OS) génériques
● 2000 : OS libres, grand public
● Domaines historiques/industriels
– Militaire, spatial (RTOS/360, VRTX sur Hubble)
– Contrôle de processus industriel
– Transport : AUTOSAR/OSEK, ARINC 653 →
certification (DO-178)
– Internet/Telecom : routeurs, PABX
● « Nouveaux » domaines
– Multimédia
– automobile (IVI), objets connectés
– médical
8Logiciels libres et SE
Les nouveaux domaines
● Équipement grand public (multimédia, domotique, …)
● Téléphonie → 1+ milliards de téléphones Android !
● Infotainment transport: automobile, aéronautique
– Ajout de fonctions communicantes → utilisation de
protocoles standards de type IP et dérivés (HTTP,
DHCP, etc.)
– Difficile d'intégrer ces couches dans des logiciels
embarqués propriétaires → utilisation d'un OS
● « Boite noire » dédiée à un ensemble de fonctions
(passerelle médicale, set-top box avec services
étendus)
● Internet des objets → #iot :-)
9Logiciels libres et SE
Avantages d'un OS
● Affranchit le développeur d'un travail d'adaptation au
matériel pour les interfaces de base (PCI, USB,
Ethernet...)
● Permet de bénéficier des dernières avancées
technologiques et de faire évoluer le système:
protocoles réseau, multimédia, etc.
● Recrutement aisé de développeurs (Linux, Android) !
● Utilisation de matériel « standard »
● Focalisation sur le métier de l'entreprise
10Logiciels libres et SE
Inconvénients d'un OS
● Empreinte mémoire
● Performances
● Consommation d'énergie (nombreux travaux en cours)
● Criticité (sauf OS spécialisés)
● Perte de maîtrise du système
11Logiciels libres et SE
Les systèmes temps réel
● Les applications embarquées historiques étaient temps
réel
● Les systèmes d'exploitation embarqués propriétaires
sont TR (VxWorks, LynxOS, VRTX, ...) → RTOS
● La progression des OS libres dans l'industrie et dans
l'embarqué en général modifie la donne !
– Linux est utilisable dans l'industrie
– Linux n'est pas TR
– Linux peut être modifié pour être TR (PREEMPT-RT,
Xenomai)
– Il existe des RTOS libres (RTEMS, FreeRTOS, ...)
12Logiciels libres et SE
Le logiciel libre dans l'embarqué
13Logiciels libres et SE
Historique
● Modèle économique du marché informatique → du
matériel vers le logiciel
● Projets logiciels libres majeurs (chronologie)
– UNIX BSD
– X Window System (X11)
– GNU (tout d'abord sur UNIX propriétaire)
– Linux → GNU/Linux
– Apache
● Apparition de licences libres (vs « freeware »)
– BSD
– GPL (dérivation et « contamination »)
– ASL
14Logiciels libres et SE
Quelques éléments sur le LL
● A peu près équivalent à la notion d'open source, voir
http://www.opensource.org
● Libre ne veut pas dire gratuit
● La confusion vient de la signification anglaise
– free = libre / gratuit
● Différents types de logiciels
– Le freeware : gratuit mais sources non disponibles, pas
forcément de licence (abandon de la « paternité » du
code)
– Le shareware : sources non disponibles, coût modique,
licence souvent propriétaire
– Le logiciel libre: sources disponibles, licence open
source, non liée à la notion de gratuité (on peut
vendre un logiciel libre)
15Logiciels libres et SE
Importance du logiciel libre
● Le logiciel libre est important dans le SI (serveurs)
● Le logiciel libre a pris un part importante dans les
systèmes embarqués
– OS (Linux, Android)
– Outils de base (compilateur, éditeur, débogueur, ...)
– « build systems » (Buildroot, Yocto/OE)
– IDE (Eclipse)
● La plupart des éditeurs ont au catalogue des
composants basés sur du logiciel libre (Wind River,
Adacore, LynuxWorks, ...)
16Logiciels libres et SE
Avantages/inconvénients du LL
● Avantages
– Disponibilité du code source → maîtrise et
maintenabilité dans le temps
– Redistribution sans « royalties »
– Outils de développement souvent « gratuits » !
– Support de la communauté
● Inconvénients
– Méfiance vis à vis d'un modèle décentralisé (support)
– Contraintes de certaines licences (GPL, LGPL)
– Support de certains matériels (?)
– Outils moins « ciblés »
– Documentation (?)
17Logiciels libres et SE
Les OS libres pour l'embarqué
18Logiciels libres et SE
Linux comme (RT)OS
● Réservé aux systèmes complexes
– 32 bits minimum
– Gestion complexe de la mémoire (MMU, pagination +
segmentation)
– Empreinte mémoire importante: 2 Mo pour µCLinux
(sans MMU), 4 Mo pour Linux
– Consommation mémoire vive : 16 Mo minimum
● Problème de migration de anciens RTOS car Linux
n’est pas TR → évolution avec les extensions
PREEMPT-RT et Xenomai
● Incompatible avec les systèmes critiques/certifiés
● Souvent utilisé pour les outils, les simulateurs et
architectures « mixtes » (banc de test)
19Logiciels libres et SE
Linux et le TR, ooops :(
20Logiciels libres et SE
Extensions TR pour Linux
● L'utilisation de Linux comme RTOS est souvent
intéressante
– POSIX
– Approche hybride avec quelques tâches TR
– On conserve le confort d'un système classique
● Deux approches possibles :
– Modifier le noyau Linux afin d'améliorer ses
performances TR (PREEMPT-RT)
– Ajouter un « co-noyau » TR qui partage le matériel avec
le noyau Linux (RTLinux, RTAI, Xenomai) → approche
« virtualisation »
21Logiciels libres et SE
PREEMPT-RT
● Branche expérimentale pour le noyau 2.6, voir
https://rt.wiki.kernel.org
● Initié par Ingo Molnar, contributeur majeur du noyau
● Maintenu par Thomas Gleixner
● Surtout utilisé sur x86 et des processeurs performants
(TSC = Time Stamp Counter)
● Fonctionne également sur ARM (11 ou plus), Nios II,
Microblaze, ...
● Nécessite un noyau « mainline » (ou proche) mais ne
sera probablement jamais intégré à la branche officielle
● Mise en place très simple (application d'un patch)
● Mêmes API de programmation que Linux standard
22Logiciels libres et SE
PREEMPT-RT, caractéristiques
Utilisation d'un thread noyau (interruptible) pour le
traitement de chaque interruption
4 2 root SW< 0 0% 0% [sirq-high/0]
5 2 root SW< 0 0% 0% [sirq-timer/0]
6 2 root SW< 0 0% 0% [sirq-net-tx/0]
● Prévention des inversions de priorité (par héritage)
● Timers noyau haute précision (HRTIMER)
● Amélioration des mécanismes de synchronisation
● Le résultat est un noyau (presque) « préemptif », mais
reste un noyau Linux
23Logiciels libres et SE
PREEMPT-RT, résumé
● Changements significatifs du code noyau
– Verrouillage des sections critiques
– Volume du patch important
● Utilisation de mlockall() → verrouillage des pages
mémoire en RAM
● Le coût de la préemption peut être important si le
nombre de tâches TR augmente
● Temps de latence maximum nettement amélioré
– dépend largement de la plate-forme matérielle (TSC)
– dépend de la configuration logicielle
– Bons résultats sur x86 depuis de nombreuses années
● Permet de garantir moins de 50 µs de jitter (x86)
● Risque sur la maintenance (financement) ?
24Logiciels libres et SE
Linux avec co-noyau
● Ajout d'un « co-noyau » pour la gestion du temps-réel
– Sous-système temps-réel intégré à un module noyau
– Patch de « virtualisation » des interruptions
● Différents modèles de programmation
– Noyau uniquement (RTLinux, version libre)
– Noyau et espace utilisateur, semi-intégration Linux
(RTAI, www.rtai.org)
– Noyau & espace utilisateur, intégration Linux complète
(Xenomai, www.xenomai.org)
25Logiciels libres et SE
Linux avec co-noyau
● Séparation entre le composant temps-réel et Linux
– Ordonnanceur temps-réel spécifique
– Pas de dépendance sur les sections critiques Linux :-)
● Virtualisation de la gestion d'interruptions Linux
– Routage prioritaire des IRQs vers le co-noyau
● Linux comme tâche idle du co-noyau
● Volume du patch noyau plus faible qu'avec PREEMPT-
RT
● Se rapproche de la technique de « para-virtualisation »
des hyperviseurs (adaptation de l'OS)
26Logiciels libres et SE
Linux + co-noyau, suite
● Peu de modifications sur le noyau Linux
– patch de virtualisation (très bas niveau)
– notion de domaine d'exécution (temps-réel / normal)
● Pas d'impact sur l'écriture de code noyau classique
● Impact sur l'écriture de code temps-réel !
– utilisation des API fournies par le co-noyau
● Excellentes performances TR
– ordonnanceur spécifique indépendant
– sous-système temps-réel bien délimité
– jitter maximal de l’ordre de 10 µs sur Atom/x86 !
27Logiciels libres et SE
RTLinux
● Projet universitaire (NMT) développé par Victor
Yodaiken et Michael Barabanov en 1999
● Produit commercial développé par FSMLabs
● Dépôt d’un brevet logiciel → conflit avec la FSF
● Vendu à WIND RIVER en 2007
● Développement en espace noyau (?)
● Version GPL obsolète (2.6.9) retirée par WIND RIVER
28Logiciels libres et SE
Architecture initiale RTLinux
29Logiciels libres et SE
RTLinux en 2002
30Logiciels libres et SE
RTAI
● Real Time Application Interface
● Un « fork » de RTLinux développé au DIAPM de l’école
polytechnique de Milan → Dipartimento di Ingegneria
Aerospaziale (Paolo Montegazza)
● Utilisé au DIAPM pour des travaux d’enseignement et
de recherche
● Quelques utilisations industrielles
● Position douteuse / brevet logiciel FSMLabs
● Toujours actif mais peu d’évolution → version 3.8 en
février 2010, 3.9 en août 2012
31Logiciels libres et SE
Xenomai
● Xenomai est un sous-système temps-réel de Linux
– Programmation de tâches en espace utilisateur
– API d'application et de pilotes temps réel
(RTDM) dédiées
● Intégré au noyau Linux → « Real-time sub-system »
● Supporte de nombreuses architectures
● Dispose de « skins » permettant d'émuler des API
temps réel (POSIX, VxWorks, VRTX, uITRON, ...)
● Plus complexe à mettre en œuvre que PREEMPT-RT
mais performances 5 à 10 fois supérieures
● Licence GPL (cœur), LGPL (interfaces, espace
utilisateur)
32Logiciels libres et SE
Architecture générale
● Xenomai utilise un micro-noyau (ADEOS) pour partager
le matériel avec le noyau Linux
● Un processus contient des threads TR et TP (Linux)
micro-noyau
noyau TR
API TR
pilote TR
Processus Linux
33Logiciels libres et SE
Répartition sur les deux domaines
Hardware
VFS/FS ...
Pile réseau Xenomai RTOS
Adeos I-Pipe
Noyau
Code applicatif VxWorks
glibc
Xenomai
libvxworks
Code applicatif POSIX
Xenomai
libpthread
Appels système
glibc
libpthread_rt
Noyau Linux
34Logiciels libres et SE
Linux/Xenomai et le TR :)
35Logiciels libres et SE
Android
● Android = un système d'exploitation basé sur un noyau
Linux
● Un « framework » fournissant des applications et
permettant d'en ajouter facilement
● Basé sur Dalvik (puis ART), une machine virtuelle Java
(très) optimisée pour le mobile
● Navigateur web basé sur Webkit puis Chrome
● Graphique optimisé en 2D ou 3D basé sur OpenGL/ES
● Nouvel environnement de développement « Android
Studio » compatible avec Android « wear » (#IoT)
● Partiellement open source mais pas réellement du
logiciel libre...
36Logiciels libres et SE
Android et l'industrie
● Linux fournit des API graphiques (Qt, EFL) mais
« difficiles » à programmer
● Android est avantageux si le projet utilise une IHM
● Base importante d'applications Android !
● Android est conçu pour la téléphonie et les tablettes
mais des BSP Android sont fournis pour les cartes
(ARM) récentes (BB Black, i.MX6, ...)
● Android utilise un noyau Linux :-)
● Assez peu de projets pour l'instant
● Concurrence de Yocto !
37Logiciels libres et SE
Avantages/inconvénients
● Avantages
– Programmation Java (simple et répandue) + IHM
– Communauté importante
– Fait rêver les managers (tablette = grand public → bon
marché)
● Inconvénients
– Compatibilité POSIX partielle
– Système de « build » statique assez rudimentaire par
rapport à ceux de Linux (Buildroot, OE)
– Qualité des BSP variable mais portage « simple »
– Pas réellement un projet libre ni communautaire :-(
– Google fait peur !
– Interfaces matérielles industrielles non supportées
(CAN, I2C, SPI, …)
38Logiciels libres et SE
eCOS
● embeddable Configurable OS (CYGNUS 1997)
● Supporte de nombreux CPU (16), 32 et 64 bits
● Empreinte mémoire de 10 à 100 Ko
● Outils de configuration avancé, gestion de «paquets»
● Version « pro » par
● Utilisé dans le multimédia :
– http://www.ecoscentric.com/ecos/examples.shtml
39Logiciels libres et SE
RTEMS
● RTEMS = Real Time Executive for Multiprocessor
Systems
● Initialement « Missile Systems » puis « Military
Systems »
● Exécutif temps réel embarqué diffusé sous licence libre
(GPL avec exception)
● Ce n'est pas exactement un système d'exploitation car
l'application est « liée » au noyau → un seul processus
mais plusieurs « threads »
● Programmation C, C++, Ada
● Plus de 100 BSP disponibles pour 20 architectures
● API RTEMS « classique » ou POSIX
● Utilisé par EADS Astrium, ESA, NASA, etc.
40Logiciels libres et SE
RTEMS, suite
● RTEMS est un exécutif TR :
– Un seul processus
– Beaucoup plus petit qu'un OS → en sélectionnant les
composants on peut arriver à une taille de quelques
dizaines de Ko :-)
– Pas (peu) de support MMU
– De nombreuses fonctionnalités sont optionnelles :
réseau, système de fichiers, etc.
– Configuration statique de l'application
● Permet d'ajouter « facilement » API, ordonnanceur
● Léger, environ 600K lignes pour la version 4.11 (15 M
pour le noyau Linux)
41Logiciels libres et SE
Les outils libres
42Logiciels libres et SE
Typologie des outils
● Outils de base → « toolchain » + mise au point →
GCC, GDB, LLVM
● IDE → Eclipse (?)
● Construction de distribution → Buildroot, Yocto/OE
● Émulation / simulation → QEMU
● Gestion de version (Git, SVN)
→ Les meilleurs de ces outils existent dans le monde
du logiciel libre :-)
43Logiciels libres et SE
Production de distribution (Linux)
● Un outil crée la distribution à partir des sources des
composants adaptés en appliquant des « patch »
● Il ne s'agit pas de distribution mais d'outil de création
de distribution
● L'outil ne fournit pas les sources mais les règles de
production et prend en compte les dépendances
● L'outil peut produire la chaîne de compilation croisée
● L'outil produit les différents éléments de la distribution
– Image du bootloader
– Noyau Linux
– Images du root-filesystem
● Meilleure solution qu'une distribution « générique »
– sécurité
– traçabilité
44Logiciels libres et SE
Les principaux outils disponibles
● Yocto/OpenEmbedded
– Moteur écrit en Python
– Très puissant mais lourd
– Basé sur des fichiers de configuration
● Buildroot
– Basé sur la commande « make »
– Au départ un démonstrateur pour uClibc
– Désormais un véritable outil, bien maintenu !
– Approche statique (pas de paquets)
● OpenWrt
– Dérivé de BR
– Orienté vers les IAD (Internet Access Device)
– Gère les paquets binaires
45Logiciels libres et SE
Buildroot
46Logiciels libres et SE
Buildroot
● Lié au projet uClibc (micro-C-libc) = libC plus légère
que la Glibc
● But initial: produire des root-filesystem simples pour
tester uClibc
● Moteur uniquement basé sur des fichiers Makefile et
quelques scripts-shell →utilisation de GNU-Make
● Outil de configuration utilise le langage Kconfig
● Peut produire la chaîne de compilation (uClibc, Glibc,
Eglibc, ...) ou importer une chaîne existante
● Approche statique
● Pas de version « officielle » avant 2009 (2009.02)
47Logiciels libres et SE
Buildroot aujourd’hui
● Repris en 2009 par Peter Korsgaard et Thomas
Petazzoni
● Une version officielle tous les 3 mois: 2009.02, ...
2012.11, ..., 2015.02
● Projet géré sous Git : http://git.buildroot.net/buildroot
● Bonne documentation :
http://buildroot.uclibc.org/docs.html
● Plus de 1200 composants adaptés (2015.02)
● Support CPU x86, ARM, PowerPC, SH4, ...
● Il est désormais simple d’ajouter un support de carte
par des fichiers de configuration
● Projets très dynamique !
48Logiciels libres et SE
Yocto / OE
● Similaire à BR mais plus évolué et modulaire
● Utilisé par les éditeurs pour leurs produits commerciaux
→ Wind River
● Utilisé par les fabricants de matériel pour les BSP
(Board Support Package) → Freescale, Gumstix, TI, ...
● Yocto n'est pas une distribution mais fournit des
« templates » et outils pour créer des distributions →
« méta données » organisées en couches (layers)
– Support matériel (meta-intel, meta-raspberrypi)
– Distributions (meta-yocto, meta-angstrom)
– Composants « métier » (meta-ivi) → GENIVI
http://layers.openembedded.org/layerindex
It's not an embedded Linux distribution
– it creates a custom one for you
49Logiciels libres et SE
Principe des « layers »
50Logiciels libres et SE
« Workflow » OE
51Logiciels libres et SE
Émulateur QEMU
● Émulateur de matériel initialement développé par
Fabrice Bellard, diffusé sous GPL v2
● Exécuté dans l'espace utilisateur de Linux
● Permet d'émuler diverses architectures: x86, PowerPC,
ARM, etc.
● Émulation de carte complète → outil de
développement, mise au point, test automatique
● Outil de certification DO-178 (Adacore/Couverture)
http://www.open-do.org/projects/couverture
● Désormais, large communauté avec dépôt Git sur
http://git.savannah.gnu.org/cgit/qemu.git
52Logiciels libres et SE
Open Hardware
53Logiciels libres et SE
(R)évolution du matériel
● Évolution du x86 vers ARM
● Création d'un marché autour des « hobbyistes » en
électronique
– Arduino, Raspberry Pi & friends
– Adafruit, Snootlab & friends
● Les professionnels utilisent parfois ces plate-formes ou
du moins profitent de la baisse des coûts → attention
au choix !
● Développement et conception simplifiés
– généralisation d'un open-hardware pragmatique
– utilisation de modules CPU
– nouveaux langages (HTML5, Python)
● Nouveaux canaux de distribution et plate-formes de
financement (kickstarter, ...)
54Logiciels libres et SE
Versatile PB and sons !
€€€€ !
< 20 €
< 30 €
< 25 €
< 15 €
55Logiciels libres et SE
Cependant...
● Certaines plate-formes génériques permettent de créer
une « maquette » mais difficilement la version
définitive → qualité insuffisante
● La connectivité nécessaire n'est pas toujours disponible
– Wi-Fi
– BT
– Capteurs divers
● Un créateur n'est PAS un développeur logiciel et
encore moins un intégrateur système → « fusion » art /
design / technologie
● Quelques plates-forme dédiées sont désormais
disponibles → WeIO (démo!)
● Pour l'industrie ne pas oublier la durée de
maintenance !
56Logiciels libres et SE
Module WeIO
57Logiciels libres et SE
Co-design
58Logiciels libres et SE
Situation actuelle
● Les systèmes embarqués deviennent de plus en plus
complexes
– Hier → RTOS mono-tâche (1 seule application)
– Aujourd'hui → système multitâche proche d'un OS
classique (Linux, Android, …)
● Exemples de systèmes :
– Encodeur / décodeur vidéo HD
– Système « mixte » temps réel et traitement des données
(banc de test)
● Le CPU n'est pas forcément capable de répondre aux
exigences fonctionnelles du système
● L'utilisation du multi-cœur améliore les choses mais
décale le problème (et augmente prix + consommation)
59Logiciels libres et SE
Évolution de la conception
● On travaille maintenant au niveau système (ou
fonctionnalité) et non au niveau porte logique
● Les fonctionnalités peuvent être implantées dans des
composants spécifiques de type ASIC (Application
Specific Integrated Circuit). On parle alors de Système
sur Silicium « SoC » (System on Chip).
● Les fonctionnalités peuvent être implantées dans des
composants logiques programmables de type FPGA
(Field Programmable Gate Array). On parle alors de
système « SoPC » (System on Programmable Chip).
● Le plus souvent le système dispose d'un CPU (avec
OS) + d'un accélérateur matériel pour des tâches
dédiés (compression, génération de signal, …)
● L'association des deux parties correspond au « co-
design »
60Logiciels libres et SE
Exemple de système
● Le processeur est en général externe→ SoC associé à
un FPGA
● Exemple de SoC : i.MX (Freescale), AM335x (TI)
● Exemple de FPGA : Altera Cyclone, Xilinx
Spartan/Virtex
● Système hybride : Armadeus, Zynq
61Logiciels libres et SE
Avantages du co-design
● L'OS – et donc le CPU - est déchargé de tâches très
coûteuses (voire inaccessibles) en calcul logiciel
● L'approche FPGA permet de garantir la souplesse →
utilisation d'un langage de programmation (Verilog ou
VHDL) → portabilité sur plusieurs modèles de FPGA
● Cette même approche garantit la propriété intellectuelle
dans le cas de licences parfois contraignantes
– La fonctionnalité « métier » dans le FPGA
– Le pilote (GPL si Linux) est une simple interface
● On trouve des bibliothèques fonctionnelles (des « IP »)
comme avec le logiciel classique → €€€ !
● Le co-design peut également concerner l'association
µP (CPU) / micro-contrôleur reliés – par exemple - par
un bus de type SPI
62Logiciels libres et SE
Association µC / Linux
● Cette approche « hybride » assure un faible coût en
garantissant les performances
63Logiciels libres et SE
Système Linux « pur »
● Cette approche nécessite souvent un adaptation coté
noyau → temps réel (Xenomai, PREEMPT-RT, …)
64Logiciels libres et SE
Choix du matériel
● Solution 1 :
– Module type SoC
– FPGA ajouté à la carte finale
– Nécessite un design matériel
● Solution 2 :
– Module SoC intégrant directement un FPGA
– Xilinx (Zynq), Altera, Armadeus APF27/APF51
– Pas (ou peu) de design matériel
– La demande du marché pousse ce type de solution
65Logiciels libres et SE
Cas d'exemple
● Un système nécessite une horloge de synchronisation
(période = 1 ms)
– Réalisable sur certains systèmes (tâche périodique sur
un GPIO) → Raspberry Pi/ARM + Linux-TR
– Impossible à réaliser sur d'autres architectures (x86)
sans 1 carte PCI dédiée (€€€)
● Une solution hybride utilise :
– Un système sous Linux (architecture x86, ARM, …) non
TR
– Un contrôleur matériel FPGA sur bus USB
– Simple à mettre en place en langage HDL
– Le calculateur Linux pilote le contrôleur par message
USB mais ne gère pas le TR → insensible aux
variations de charge
66Logiciels libres et SE
Raspberry Pi + FPGA
KNJN DragonPCI-E
Bugblat sur bus local
USB
67Logiciels libres et SE
Questions ?

Contenu connexe

Tendances

Arm système embarqué
Arm système embarquéArm système embarqué
Arm système embarqué
Houssem Rouini
 
Embarqués temps réel
Embarqués temps réelEmbarqués temps réel
Embarqués temps réel
mikhailether
 
Architecture hétérogène au service de l'IoT industriel ?
Architecture hétérogène au service de l'IoT industriel ?Architecture hétérogène au service de l'IoT industriel ?
Architecture hétérogène au service de l'IoT industriel ?
Pierre-jean Texier
 

Tendances (20)

Chap1 intro 1pp
Chap1 intro 1ppChap1 intro 1pp
Chap1 intro 1pp
 
Formation linux temps réel - Rennes 14 octobre 2014
Formation linux temps réel  - Rennes 14 octobre 2014Formation linux temps réel  - Rennes 14 octobre 2014
Formation linux temps réel - Rennes 14 octobre 2014
 
Arm système embarqué
Arm système embarquéArm système embarqué
Arm système embarqué
 
Créer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou AngströmCréer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou Angström
 
Plateformes embarquées
Plateformes embarquéesPlateformes embarquées
Plateformes embarquées
 
Linux et les systèmes embarqués
Linux et les systèmes embarquésLinux et les systèmes embarqués
Linux et les systèmes embarqués
 
Embarqués temps réel
Embarqués temps réelEmbarqués temps réel
Embarqués temps réel
 
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
 
Microcontroleur
MicrocontroleurMicrocontroleur
Microcontroleur
 
Les systèmes embarqués arduino
Les systèmes embarqués arduinoLes systèmes embarqués arduino
Les systèmes embarqués arduino
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro framework
 
Architecture hétérogène au service de l'IoT industriel ?
Architecture hétérogène au service de l'IoT industriel ?Architecture hétérogène au service de l'IoT industriel ?
Architecture hétérogène au service de l'IoT industriel ?
 
Meetup Systemd vs sysvinit
Meetup Systemd vs sysvinitMeetup Systemd vs sysvinit
Meetup Systemd vs sysvinit
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurables
 
Présentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECSPrésentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECS
 
System embaraqué
System  embaraquéSystem  embaraqué
System embaraqué
 
Install party
Install partyInstall party
Install party
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
 

En vedette

My book about Global Warming and M2M
My book about Global Warming and M2MMy book about Global Warming and M2M
My book about Global Warming and M2M
GeoffreyZ
 
Prototypage de Systèmes Embarqués
Prototypage de Systèmes EmbarquésPrototypage de Systèmes Embarqués
Prototypage de Systèmes Embarqués
boisgera
 
Identification des empreintes digitales
Identification des empreintes digitalesIdentification des empreintes digitales
Identification des empreintes digitales
Sarah
 
Rapport projet Domotique
Rapport projet DomotiqueRapport projet Domotique
Rapport projet Domotique
ts4riadhoc
 
aDIRC - 12 juin 2014 - Internet des Objets
aDIRC - 12 juin 2014 - Internet des ObjetsaDIRC - 12 juin 2014 - Internet des Objets
aDIRC - 12 juin 2014 - Internet des Objets
ADIRC
 
Internet des objets
Internet des objetsInternet des objets
Internet des objets
Free Lance
 

En vedette (20)

Demain, l'Internet des objets
Demain, l'Internet des objets Demain, l'Internet des objets
Demain, l'Internet des objets
 
#4 Applications Convergentes JavaEE/OSGi
#4 Applications Convergentes JavaEE/OSGi#4 Applications Convergentes JavaEE/OSGi
#4 Applications Convergentes JavaEE/OSGi
 
La réalité augmentée dans les systèmes embarqués
La réalité augmentée dans les systèmes embarquésLa réalité augmentée dans les systèmes embarqués
La réalité augmentée dans les systèmes embarqués
 
Spéciale Internet des Objets La French Mobile Décembre 2012
Spéciale Internet des Objets La French Mobile Décembre 2012Spéciale Internet des Objets La French Mobile Décembre 2012
Spéciale Internet des Objets La French Mobile Décembre 2012
 
My book about Global Warming and M2M
My book about Global Warming and M2MMy book about Global Warming and M2M
My book about Global Warming and M2M
 
Prototypage de Systèmes Embarqués
Prototypage de Systèmes EmbarquésPrototypage de Systèmes Embarqués
Prototypage de Systèmes Embarqués
 
Internet des Objets par MyTAGG
Internet des Objets par MyTAGGInternet des Objets par MyTAGG
Internet des Objets par MyTAGG
 
Android Things, Alexey Rybakov, Technical Evangelist, DataArt
Android Things, Alexey Rybakov, Technical Evangelist, DataArtAndroid Things, Alexey Rybakov, Technical Evangelist, DataArt
Android Things, Alexey Rybakov, Technical Evangelist, DataArt
 
Identification des empreintes digitales
Identification des empreintes digitalesIdentification des empreintes digitales
Identification des empreintes digitales
 
Rapport projet Domotique
Rapport projet DomotiqueRapport projet Domotique
Rapport projet Domotique
 
Café Numérique Bruxelles - Les Makers - Arduino
Café Numérique Bruxelles - Les Makers - ArduinoCafé Numérique Bruxelles - Les Makers - Arduino
Café Numérique Bruxelles - Les Makers - Arduino
 
aDIRC - 12 juin 2014 - Internet des Objets
aDIRC - 12 juin 2014 - Internet des ObjetsaDIRC - 12 juin 2014 - Internet des Objets
aDIRC - 12 juin 2014 - Internet des Objets
 
Presentation arduino
Presentation arduinoPresentation arduino
Presentation arduino
 
des mobiles aux objets : Internet pour apprendre
des mobiles aux objets : Internet pour apprendredes mobiles aux objets : Internet pour apprendre
des mobiles aux objets : Internet pour apprendre
 
Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HOD
 
Projet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitaleProjet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitale
 
Internet des objets - Survol des développements
Internet des objets - Survol des développementsInternet des objets - Survol des développements
Internet des objets - Survol des développements
 
Maisons Intelligentes ( Projet bibliographique )
Maisons Intelligentes ( Projet bibliographique ) Maisons Intelligentes ( Projet bibliographique )
Maisons Intelligentes ( Projet bibliographique )
 
Présentation arduino
Présentation arduinoPrésentation arduino
Présentation arduino
 
Internet des objets
Internet des objetsInternet des objets
Internet des objets
 

Similaire à Les solutions libres pour les systèmes embarqué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"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Smile I.T is open
 
Développement Noyau Et Driver Sous Gnu Linux
Développement Noyau Et Driver Sous Gnu LinuxDéveloppement Noyau Et Driver Sous Gnu Linux
Développement Noyau Et Driver Sous Gnu Linux
Thierry Gayet
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
Wassim Smati
 
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
mazurus
 
Lepton : Description succincte
Lepton : Description succincteLepton : Description succincte
Lepton : Description succincte
O10ée
 
Introduction à l'Open Hardware
Introduction à l'Open HardwareIntroduction à l'Open Hardware
Introduction à l'Open Hardware
Robert Viseur
 
Les technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquéesLes technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquées
Alexandre LAHAYE
 

Similaire à Les solutions libres pour les systèmes embarqués (20)

2003 forum asso-faches
2003 forum asso-faches2003 forum asso-faches
2003 forum asso-faches
 
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"
 
Développement Noyau Et Driver Sous Gnu Linux
Développement Noyau Et Driver Sous Gnu LinuxDéveloppement Noyau Et Driver Sous Gnu Linux
Développement Noyau Et Driver Sous Gnu Linux
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à Linux
 
Historique
HistoriqueHistorique
Historique
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Open Wide : les licences libres.
Open Wide : les licences libres. Open Wide : les licences libres.
Open Wide : les licences libres.
 
0484-systemes-d-exploitation-os.pdf
0484-systemes-d-exploitation-os.pdf0484-systemes-d-exploitation-os.pdf
0484-systemes-d-exploitation-os.pdf
 
Android pour l'industrie
Android pour l'industrieAndroid pour l'industrie
Android pour l'industrie
 
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
 
Lepton : Description succincte
Lepton : Description succincteLepton : Description succincte
Lepton : Description succincte
 
Introduction à l'Open Hardware
Introduction à l'Open HardwareIntroduction à l'Open Hardware
Introduction à l'Open Hardware
 
0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt
 
Les technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquéesLes technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquées
 
Présentation de la pile réseau sous gnu linux
Présentation de la pile réseau sous gnu linuxPrésentation de la pile réseau sous gnu linux
Présentation de la pile réseau sous gnu linux
 
Conference Informatique Embarquée Synergie-NTIC
Conference Informatique Embarquée Synergie-NTICConference Informatique Embarquée Synergie-NTIC
Conference Informatique Embarquée Synergie-NTIC
 
Cours linux
Cours linuxCours linux
Cours linux
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
 
Mac os vs linux
Mac os vs linuxMac os vs linux
Mac os vs linux
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 

Plus de Alexandre LAHAYE

Plus de Alexandre LAHAYE (8)

Building RT image with Yocto
Building RT image with YoctoBuilding RT image with Yocto
Building RT image with Yocto
 
openPOWERLINK over Xenomai
openPOWERLINK over XenomaiopenPOWERLINK over Xenomai
openPOWERLINK over Xenomai
 
Les technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectésLes technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectés
 
Les technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectésLes technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectés
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarqué
 
Yocto oe
Yocto oeYocto oe
Yocto oe
 
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
 
OPEN WIDE : L’open source pour les systemes embarques Temps reel
OPEN WIDE : L’open source pour les systemes embarques Temps reelOPEN WIDE : L’open source pour les systemes embarques Temps reel
OPEN WIDE : L’open source pour les systemes embarques Temps reel
 

Les solutions libres pour les systèmes embarqués

  • 1. 1Logiciels libres et SE Solutions libres pour les systèmes embarqués Pierre FICHEUX (pierre.ficheux@openwide.fr) Mars 2015
  • 2. 2Logiciels libres et SE Programme ● Présentation ● Rappels sur les systèmes embarqués et temps réel ● Le logiciel libre ● Linux comme système embarqué ● Extensions temps réel de Linux ● Android « embarqué » ● eCOS et RTEMS ● Les outils libres pour l'embarqué ● Open hardware ● Co-design
  • 3. 3Logiciels libres et SE Présentation Open Wide ● Société d'ingénierie créée en septembre 2001 avec le concours de THALES et Schneider Electric ● Rachat d'ESG-France (automotive) en 2014 ● Environ 160 salariés sur Paris, Lyon, Toulouse et bientôt Grenoble ● Industrialisation de composants open source – Développement – Conseil / Formation ● Trois activités : – OW Système d'Information (Java/PHP) – OW Outsourcing: hébergement – OW Ingénierie: informatique industrielle
  • 4. 4Logiciels libres et SE Présentation PF ● Ingénieur Arts et Métiers + Sup'Aéro ● Utilisateur de logiciels libres depuis 1989 ● Utilisateur de Linux depuis 1992 ● Auteur des 4 éditions de l'ouvrage « Linux embarqué » (Eyrolles), 4ème édition parue en juin 2012 avec E. Bénard ● Auteur GNU Linux Magazine et Open Silicium ● CTO Open Wide Ingénierie, enseignant EPITA, ENSEIRB
  • 5. 5Logiciels libres et SE Rappels sur les systèmes embarqué
  • 6. 6Logiciels libres et SE Système / logiciel embarqué ● Un système est l'association matériel + logiciel ● Logiciel utilisé dans un équipement industriel ou un bien de consommation ● On dit aussi logiciel dédié ou intégré → embedded software ● L'équipement est valorisé pour son coté fonctionnel et non pas pour le logiciel ! ● Un bon logiciel embarqué doit savoir se faire oublier ! ● On parle parfois de logiciel enfoui ou profondément enfoui → « deeply embedded »
  • 7. 7Logiciels libres et SE Domaines d'application ● 1960-70 : remplacer / compléter des systèmes analogiques (spatial) ● 1980 : RTOS (Real Time OS) génériques ● 2000 : OS libres, grand public ● Domaines historiques/industriels – Militaire, spatial (RTOS/360, VRTX sur Hubble) – Contrôle de processus industriel – Transport : AUTOSAR/OSEK, ARINC 653 → certification (DO-178) – Internet/Telecom : routeurs, PABX ● « Nouveaux » domaines – Multimédia – automobile (IVI), objets connectés – médical
  • 8. 8Logiciels libres et SE Les nouveaux domaines ● Équipement grand public (multimédia, domotique, …) ● Téléphonie → 1+ milliards de téléphones Android ! ● Infotainment transport: automobile, aéronautique – Ajout de fonctions communicantes → utilisation de protocoles standards de type IP et dérivés (HTTP, DHCP, etc.) – Difficile d'intégrer ces couches dans des logiciels embarqués propriétaires → utilisation d'un OS ● « Boite noire » dédiée à un ensemble de fonctions (passerelle médicale, set-top box avec services étendus) ● Internet des objets → #iot :-)
  • 9. 9Logiciels libres et SE Avantages d'un OS ● Affranchit le développeur d'un travail d'adaptation au matériel pour les interfaces de base (PCI, USB, Ethernet...) ● Permet de bénéficier des dernières avancées technologiques et de faire évoluer le système: protocoles réseau, multimédia, etc. ● Recrutement aisé de développeurs (Linux, Android) ! ● Utilisation de matériel « standard » ● Focalisation sur le métier de l'entreprise
  • 10. 10Logiciels libres et SE Inconvénients d'un OS ● Empreinte mémoire ● Performances ● Consommation d'énergie (nombreux travaux en cours) ● Criticité (sauf OS spécialisés) ● Perte de maîtrise du système
  • 11. 11Logiciels libres et SE Les systèmes temps réel ● Les applications embarquées historiques étaient temps réel ● Les systèmes d'exploitation embarqués propriétaires sont TR (VxWorks, LynxOS, VRTX, ...) → RTOS ● La progression des OS libres dans l'industrie et dans l'embarqué en général modifie la donne ! – Linux est utilisable dans l'industrie – Linux n'est pas TR – Linux peut être modifié pour être TR (PREEMPT-RT, Xenomai) – Il existe des RTOS libres (RTEMS, FreeRTOS, ...)
  • 12. 12Logiciels libres et SE Le logiciel libre dans l'embarqué
  • 13. 13Logiciels libres et SE Historique ● Modèle économique du marché informatique → du matériel vers le logiciel ● Projets logiciels libres majeurs (chronologie) – UNIX BSD – X Window System (X11) – GNU (tout d'abord sur UNIX propriétaire) – Linux → GNU/Linux – Apache ● Apparition de licences libres (vs « freeware ») – BSD – GPL (dérivation et « contamination ») – ASL
  • 14. 14Logiciels libres et SE Quelques éléments sur le LL ● A peu près équivalent à la notion d'open source, voir http://www.opensource.org ● Libre ne veut pas dire gratuit ● La confusion vient de la signification anglaise – free = libre / gratuit ● Différents types de logiciels – Le freeware : gratuit mais sources non disponibles, pas forcément de licence (abandon de la « paternité » du code) – Le shareware : sources non disponibles, coût modique, licence souvent propriétaire – Le logiciel libre: sources disponibles, licence open source, non liée à la notion de gratuité (on peut vendre un logiciel libre)
  • 15. 15Logiciels libres et SE Importance du logiciel libre ● Le logiciel libre est important dans le SI (serveurs) ● Le logiciel libre a pris un part importante dans les systèmes embarqués – OS (Linux, Android) – Outils de base (compilateur, éditeur, débogueur, ...) – « build systems » (Buildroot, Yocto/OE) – IDE (Eclipse) ● La plupart des éditeurs ont au catalogue des composants basés sur du logiciel libre (Wind River, Adacore, LynuxWorks, ...)
  • 16. 16Logiciels libres et SE Avantages/inconvénients du LL ● Avantages – Disponibilité du code source → maîtrise et maintenabilité dans le temps – Redistribution sans « royalties » – Outils de développement souvent « gratuits » ! – Support de la communauté ● Inconvénients – Méfiance vis à vis d'un modèle décentralisé (support) – Contraintes de certaines licences (GPL, LGPL) – Support de certains matériels (?) – Outils moins « ciblés » – Documentation (?)
  • 17. 17Logiciels libres et SE Les OS libres pour l'embarqué
  • 18. 18Logiciels libres et SE Linux comme (RT)OS ● Réservé aux systèmes complexes – 32 bits minimum – Gestion complexe de la mémoire (MMU, pagination + segmentation) – Empreinte mémoire importante: 2 Mo pour µCLinux (sans MMU), 4 Mo pour Linux – Consommation mémoire vive : 16 Mo minimum ● Problème de migration de anciens RTOS car Linux n’est pas TR → évolution avec les extensions PREEMPT-RT et Xenomai ● Incompatible avec les systèmes critiques/certifiés ● Souvent utilisé pour les outils, les simulateurs et architectures « mixtes » (banc de test)
  • 19. 19Logiciels libres et SE Linux et le TR, ooops :(
  • 20. 20Logiciels libres et SE Extensions TR pour Linux ● L'utilisation de Linux comme RTOS est souvent intéressante – POSIX – Approche hybride avec quelques tâches TR – On conserve le confort d'un système classique ● Deux approches possibles : – Modifier le noyau Linux afin d'améliorer ses performances TR (PREEMPT-RT) – Ajouter un « co-noyau » TR qui partage le matériel avec le noyau Linux (RTLinux, RTAI, Xenomai) → approche « virtualisation »
  • 21. 21Logiciels libres et SE PREEMPT-RT ● Branche expérimentale pour le noyau 2.6, voir https://rt.wiki.kernel.org ● Initié par Ingo Molnar, contributeur majeur du noyau ● Maintenu par Thomas Gleixner ● Surtout utilisé sur x86 et des processeurs performants (TSC = Time Stamp Counter) ● Fonctionne également sur ARM (11 ou plus), Nios II, Microblaze, ... ● Nécessite un noyau « mainline » (ou proche) mais ne sera probablement jamais intégré à la branche officielle ● Mise en place très simple (application d'un patch) ● Mêmes API de programmation que Linux standard
  • 22. 22Logiciels libres et SE PREEMPT-RT, caractéristiques Utilisation d'un thread noyau (interruptible) pour le traitement de chaque interruption 4 2 root SW< 0 0% 0% [sirq-high/0] 5 2 root SW< 0 0% 0% [sirq-timer/0] 6 2 root SW< 0 0% 0% [sirq-net-tx/0] ● Prévention des inversions de priorité (par héritage) ● Timers noyau haute précision (HRTIMER) ● Amélioration des mécanismes de synchronisation ● Le résultat est un noyau (presque) « préemptif », mais reste un noyau Linux
  • 23. 23Logiciels libres et SE PREEMPT-RT, résumé ● Changements significatifs du code noyau – Verrouillage des sections critiques – Volume du patch important ● Utilisation de mlockall() → verrouillage des pages mémoire en RAM ● Le coût de la préemption peut être important si le nombre de tâches TR augmente ● Temps de latence maximum nettement amélioré – dépend largement de la plate-forme matérielle (TSC) – dépend de la configuration logicielle – Bons résultats sur x86 depuis de nombreuses années ● Permet de garantir moins de 50 µs de jitter (x86) ● Risque sur la maintenance (financement) ?
  • 24. 24Logiciels libres et SE Linux avec co-noyau ● Ajout d'un « co-noyau » pour la gestion du temps-réel – Sous-système temps-réel intégré à un module noyau – Patch de « virtualisation » des interruptions ● Différents modèles de programmation – Noyau uniquement (RTLinux, version libre) – Noyau et espace utilisateur, semi-intégration Linux (RTAI, www.rtai.org) – Noyau & espace utilisateur, intégration Linux complète (Xenomai, www.xenomai.org)
  • 25. 25Logiciels libres et SE Linux avec co-noyau ● Séparation entre le composant temps-réel et Linux – Ordonnanceur temps-réel spécifique – Pas de dépendance sur les sections critiques Linux :-) ● Virtualisation de la gestion d'interruptions Linux – Routage prioritaire des IRQs vers le co-noyau ● Linux comme tâche idle du co-noyau ● Volume du patch noyau plus faible qu'avec PREEMPT- RT ● Se rapproche de la technique de « para-virtualisation » des hyperviseurs (adaptation de l'OS)
  • 26. 26Logiciels libres et SE Linux + co-noyau, suite ● Peu de modifications sur le noyau Linux – patch de virtualisation (très bas niveau) – notion de domaine d'exécution (temps-réel / normal) ● Pas d'impact sur l'écriture de code noyau classique ● Impact sur l'écriture de code temps-réel ! – utilisation des API fournies par le co-noyau ● Excellentes performances TR – ordonnanceur spécifique indépendant – sous-système temps-réel bien délimité – jitter maximal de l’ordre de 10 µs sur Atom/x86 !
  • 27. 27Logiciels libres et SE RTLinux ● Projet universitaire (NMT) développé par Victor Yodaiken et Michael Barabanov en 1999 ● Produit commercial développé par FSMLabs ● Dépôt d’un brevet logiciel → conflit avec la FSF ● Vendu à WIND RIVER en 2007 ● Développement en espace noyau (?) ● Version GPL obsolète (2.6.9) retirée par WIND RIVER
  • 28. 28Logiciels libres et SE Architecture initiale RTLinux
  • 29. 29Logiciels libres et SE RTLinux en 2002
  • 30. 30Logiciels libres et SE RTAI ● Real Time Application Interface ● Un « fork » de RTLinux développé au DIAPM de l’école polytechnique de Milan → Dipartimento di Ingegneria Aerospaziale (Paolo Montegazza) ● Utilisé au DIAPM pour des travaux d’enseignement et de recherche ● Quelques utilisations industrielles ● Position douteuse / brevet logiciel FSMLabs ● Toujours actif mais peu d’évolution → version 3.8 en février 2010, 3.9 en août 2012
  • 31. 31Logiciels libres et SE Xenomai ● Xenomai est un sous-système temps-réel de Linux – Programmation de tâches en espace utilisateur – API d'application et de pilotes temps réel (RTDM) dédiées ● Intégré au noyau Linux → « Real-time sub-system » ● Supporte de nombreuses architectures ● Dispose de « skins » permettant d'émuler des API temps réel (POSIX, VxWorks, VRTX, uITRON, ...) ● Plus complexe à mettre en œuvre que PREEMPT-RT mais performances 5 à 10 fois supérieures ● Licence GPL (cœur), LGPL (interfaces, espace utilisateur)
  • 32. 32Logiciels libres et SE Architecture générale ● Xenomai utilise un micro-noyau (ADEOS) pour partager le matériel avec le noyau Linux ● Un processus contient des threads TR et TP (Linux) micro-noyau noyau TR API TR pilote TR Processus Linux
  • 33. 33Logiciels libres et SE Répartition sur les deux domaines Hardware VFS/FS ... Pile réseau Xenomai RTOS Adeos I-Pipe Noyau Code applicatif VxWorks glibc Xenomai libvxworks Code applicatif POSIX Xenomai libpthread Appels système glibc libpthread_rt Noyau Linux
  • 34. 34Logiciels libres et SE Linux/Xenomai et le TR :)
  • 35. 35Logiciels libres et SE Android ● Android = un système d'exploitation basé sur un noyau Linux ● Un « framework » fournissant des applications et permettant d'en ajouter facilement ● Basé sur Dalvik (puis ART), une machine virtuelle Java (très) optimisée pour le mobile ● Navigateur web basé sur Webkit puis Chrome ● Graphique optimisé en 2D ou 3D basé sur OpenGL/ES ● Nouvel environnement de développement « Android Studio » compatible avec Android « wear » (#IoT) ● Partiellement open source mais pas réellement du logiciel libre...
  • 36. 36Logiciels libres et SE Android et l'industrie ● Linux fournit des API graphiques (Qt, EFL) mais « difficiles » à programmer ● Android est avantageux si le projet utilise une IHM ● Base importante d'applications Android ! ● Android est conçu pour la téléphonie et les tablettes mais des BSP Android sont fournis pour les cartes (ARM) récentes (BB Black, i.MX6, ...) ● Android utilise un noyau Linux :-) ● Assez peu de projets pour l'instant ● Concurrence de Yocto !
  • 37. 37Logiciels libres et SE Avantages/inconvénients ● Avantages – Programmation Java (simple et répandue) + IHM – Communauté importante – Fait rêver les managers (tablette = grand public → bon marché) ● Inconvénients – Compatibilité POSIX partielle – Système de « build » statique assez rudimentaire par rapport à ceux de Linux (Buildroot, OE) – Qualité des BSP variable mais portage « simple » – Pas réellement un projet libre ni communautaire :-( – Google fait peur ! – Interfaces matérielles industrielles non supportées (CAN, I2C, SPI, …)
  • 38. 38Logiciels libres et SE eCOS ● embeddable Configurable OS (CYGNUS 1997) ● Supporte de nombreux CPU (16), 32 et 64 bits ● Empreinte mémoire de 10 à 100 Ko ● Outils de configuration avancé, gestion de «paquets» ● Version « pro » par ● Utilisé dans le multimédia : – http://www.ecoscentric.com/ecos/examples.shtml
  • 39. 39Logiciels libres et SE RTEMS ● RTEMS = Real Time Executive for Multiprocessor Systems ● Initialement « Missile Systems » puis « Military Systems » ● Exécutif temps réel embarqué diffusé sous licence libre (GPL avec exception) ● Ce n'est pas exactement un système d'exploitation car l'application est « liée » au noyau → un seul processus mais plusieurs « threads » ● Programmation C, C++, Ada ● Plus de 100 BSP disponibles pour 20 architectures ● API RTEMS « classique » ou POSIX ● Utilisé par EADS Astrium, ESA, NASA, etc.
  • 40. 40Logiciels libres et SE RTEMS, suite ● RTEMS est un exécutif TR : – Un seul processus – Beaucoup plus petit qu'un OS → en sélectionnant les composants on peut arriver à une taille de quelques dizaines de Ko :-) – Pas (peu) de support MMU – De nombreuses fonctionnalités sont optionnelles : réseau, système de fichiers, etc. – Configuration statique de l'application ● Permet d'ajouter « facilement » API, ordonnanceur ● Léger, environ 600K lignes pour la version 4.11 (15 M pour le noyau Linux)
  • 41. 41Logiciels libres et SE Les outils libres
  • 42. 42Logiciels libres et SE Typologie des outils ● Outils de base → « toolchain » + mise au point → GCC, GDB, LLVM ● IDE → Eclipse (?) ● Construction de distribution → Buildroot, Yocto/OE ● Émulation / simulation → QEMU ● Gestion de version (Git, SVN) → Les meilleurs de ces outils existent dans le monde du logiciel libre :-)
  • 43. 43Logiciels libres et SE Production de distribution (Linux) ● Un outil crée la distribution à partir des sources des composants adaptés en appliquant des « patch » ● Il ne s'agit pas de distribution mais d'outil de création de distribution ● L'outil ne fournit pas les sources mais les règles de production et prend en compte les dépendances ● L'outil peut produire la chaîne de compilation croisée ● L'outil produit les différents éléments de la distribution – Image du bootloader – Noyau Linux – Images du root-filesystem ● Meilleure solution qu'une distribution « générique » – sécurité – traçabilité
  • 44. 44Logiciels libres et SE Les principaux outils disponibles ● Yocto/OpenEmbedded – Moteur écrit en Python – Très puissant mais lourd – Basé sur des fichiers de configuration ● Buildroot – Basé sur la commande « make » – Au départ un démonstrateur pour uClibc – Désormais un véritable outil, bien maintenu ! – Approche statique (pas de paquets) ● OpenWrt – Dérivé de BR – Orienté vers les IAD (Internet Access Device) – Gère les paquets binaires
  • 45. 45Logiciels libres et SE Buildroot
  • 46. 46Logiciels libres et SE Buildroot ● Lié au projet uClibc (micro-C-libc) = libC plus légère que la Glibc ● But initial: produire des root-filesystem simples pour tester uClibc ● Moteur uniquement basé sur des fichiers Makefile et quelques scripts-shell →utilisation de GNU-Make ● Outil de configuration utilise le langage Kconfig ● Peut produire la chaîne de compilation (uClibc, Glibc, Eglibc, ...) ou importer une chaîne existante ● Approche statique ● Pas de version « officielle » avant 2009 (2009.02)
  • 47. 47Logiciels libres et SE Buildroot aujourd’hui ● Repris en 2009 par Peter Korsgaard et Thomas Petazzoni ● Une version officielle tous les 3 mois: 2009.02, ... 2012.11, ..., 2015.02 ● Projet géré sous Git : http://git.buildroot.net/buildroot ● Bonne documentation : http://buildroot.uclibc.org/docs.html ● Plus de 1200 composants adaptés (2015.02) ● Support CPU x86, ARM, PowerPC, SH4, ... ● Il est désormais simple d’ajouter un support de carte par des fichiers de configuration ● Projets très dynamique !
  • 48. 48Logiciels libres et SE Yocto / OE ● Similaire à BR mais plus évolué et modulaire ● Utilisé par les éditeurs pour leurs produits commerciaux → Wind River ● Utilisé par les fabricants de matériel pour les BSP (Board Support Package) → Freescale, Gumstix, TI, ... ● Yocto n'est pas une distribution mais fournit des « templates » et outils pour créer des distributions → « méta données » organisées en couches (layers) – Support matériel (meta-intel, meta-raspberrypi) – Distributions (meta-yocto, meta-angstrom) – Composants « métier » (meta-ivi) → GENIVI http://layers.openembedded.org/layerindex It's not an embedded Linux distribution – it creates a custom one for you
  • 49. 49Logiciels libres et SE Principe des « layers »
  • 50. 50Logiciels libres et SE « Workflow » OE
  • 51. 51Logiciels libres et SE Émulateur QEMU ● Émulateur de matériel initialement développé par Fabrice Bellard, diffusé sous GPL v2 ● Exécuté dans l'espace utilisateur de Linux ● Permet d'émuler diverses architectures: x86, PowerPC, ARM, etc. ● Émulation de carte complète → outil de développement, mise au point, test automatique ● Outil de certification DO-178 (Adacore/Couverture) http://www.open-do.org/projects/couverture ● Désormais, large communauté avec dépôt Git sur http://git.savannah.gnu.org/cgit/qemu.git
  • 52. 52Logiciels libres et SE Open Hardware
  • 53. 53Logiciels libres et SE (R)évolution du matériel ● Évolution du x86 vers ARM ● Création d'un marché autour des « hobbyistes » en électronique – Arduino, Raspberry Pi & friends – Adafruit, Snootlab & friends ● Les professionnels utilisent parfois ces plate-formes ou du moins profitent de la baisse des coûts → attention au choix ! ● Développement et conception simplifiés – généralisation d'un open-hardware pragmatique – utilisation de modules CPU – nouveaux langages (HTML5, Python) ● Nouveaux canaux de distribution et plate-formes de financement (kickstarter, ...)
  • 54. 54Logiciels libres et SE Versatile PB and sons ! €€€€ ! < 20 € < 30 € < 25 € < 15 €
  • 55. 55Logiciels libres et SE Cependant... ● Certaines plate-formes génériques permettent de créer une « maquette » mais difficilement la version définitive → qualité insuffisante ● La connectivité nécessaire n'est pas toujours disponible – Wi-Fi – BT – Capteurs divers ● Un créateur n'est PAS un développeur logiciel et encore moins un intégrateur système → « fusion » art / design / technologie ● Quelques plates-forme dédiées sont désormais disponibles → WeIO (démo!) ● Pour l'industrie ne pas oublier la durée de maintenance !
  • 56. 56Logiciels libres et SE Module WeIO
  • 57. 57Logiciels libres et SE Co-design
  • 58. 58Logiciels libres et SE Situation actuelle ● Les systèmes embarqués deviennent de plus en plus complexes – Hier → RTOS mono-tâche (1 seule application) – Aujourd'hui → système multitâche proche d'un OS classique (Linux, Android, …) ● Exemples de systèmes : – Encodeur / décodeur vidéo HD – Système « mixte » temps réel et traitement des données (banc de test) ● Le CPU n'est pas forcément capable de répondre aux exigences fonctionnelles du système ● L'utilisation du multi-cœur améliore les choses mais décale le problème (et augmente prix + consommation)
  • 59. 59Logiciels libres et SE Évolution de la conception ● On travaille maintenant au niveau système (ou fonctionnalité) et non au niveau porte logique ● Les fonctionnalités peuvent être implantées dans des composants spécifiques de type ASIC (Application Specific Integrated Circuit). On parle alors de Système sur Silicium « SoC » (System on Chip). ● Les fonctionnalités peuvent être implantées dans des composants logiques programmables de type FPGA (Field Programmable Gate Array). On parle alors de système « SoPC » (System on Programmable Chip). ● Le plus souvent le système dispose d'un CPU (avec OS) + d'un accélérateur matériel pour des tâches dédiés (compression, génération de signal, …) ● L'association des deux parties correspond au « co- design »
  • 60. 60Logiciels libres et SE Exemple de système ● Le processeur est en général externe→ SoC associé à un FPGA ● Exemple de SoC : i.MX (Freescale), AM335x (TI) ● Exemple de FPGA : Altera Cyclone, Xilinx Spartan/Virtex ● Système hybride : Armadeus, Zynq
  • 61. 61Logiciels libres et SE Avantages du co-design ● L'OS – et donc le CPU - est déchargé de tâches très coûteuses (voire inaccessibles) en calcul logiciel ● L'approche FPGA permet de garantir la souplesse → utilisation d'un langage de programmation (Verilog ou VHDL) → portabilité sur plusieurs modèles de FPGA ● Cette même approche garantit la propriété intellectuelle dans le cas de licences parfois contraignantes – La fonctionnalité « métier » dans le FPGA – Le pilote (GPL si Linux) est une simple interface ● On trouve des bibliothèques fonctionnelles (des « IP ») comme avec le logiciel classique → €€€ ! ● Le co-design peut également concerner l'association µP (CPU) / micro-contrôleur reliés – par exemple - par un bus de type SPI
  • 62. 62Logiciels libres et SE Association µC / Linux ● Cette approche « hybride » assure un faible coût en garantissant les performances
  • 63. 63Logiciels libres et SE Système Linux « pur » ● Cette approche nécessite souvent un adaptation coté noyau → temps réel (Xenomai, PREEMPT-RT, …)
  • 64. 64Logiciels libres et SE Choix du matériel ● Solution 1 : – Module type SoC – FPGA ajouté à la carte finale – Nécessite un design matériel ● Solution 2 : – Module SoC intégrant directement un FPGA – Xilinx (Zynq), Altera, Armadeus APF27/APF51 – Pas (ou peu) de design matériel – La demande du marché pousse ce type de solution
  • 65. 65Logiciels libres et SE Cas d'exemple ● Un système nécessite une horloge de synchronisation (période = 1 ms) – Réalisable sur certains systèmes (tâche périodique sur un GPIO) → Raspberry Pi/ARM + Linux-TR – Impossible à réaliser sur d'autres architectures (x86) sans 1 carte PCI dédiée (€€€) ● Une solution hybride utilise : – Un système sous Linux (architecture x86, ARM, …) non TR – Un contrôleur matériel FPGA sur bus USB – Simple à mettre en place en langage HDL – Le calculateur Linux pilote le contrôleur par message USB mais ne gère pas le TR → insensible aux variations de charge
  • 66. 66Logiciels libres et SE Raspberry Pi + FPGA KNJN DragonPCI-E Bugblat sur bus local USB
  • 67. 67Logiciels libres et SE Questions ?