SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
1RTS 2014
État de l'art des systèmes embarqués
Utilisation du logiciel libre
Pierre Ficheux (pierre.ficheux@openwide.fr)
Mars 2014
2RTS 2014
Présentation Open Wide
● SSII/SSLL créée en septembre 2001 avec THALES et
Schneider
● Indépendante depuis 2009
● Environ 120 salariés sur Paris, Lyon et Toulouse
● Industrialisation de composants open source
– Développement
– Formation
● Trois activités :
– OW Système d'Information (Java/PHP)
– OW Outsourcing: hébergement
– OW Ingénierie: informatique industrielle
3RTS 2014
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
4RTS 2014
Importance du logiciel libre
● Le logiciel libre a pris un part importante des systèmes
embarqués
– Outils (GNU toolchain)
– OS (Linux, RTEMS, ...)
– Ateliers de développement (Eclipse)
– Composants de solutions propriétaires !
● La plupart des éditeurs commerciaux fournissent
également (ou uniquement) des composants basés sur
du logiciel libre (VxWorks, Adacore, LynuxWorks, ...)
● Attention aux licences !
5RTS 2014
Avantages/inconvénients du logiciel
libre
● Avantages
– Disponibilité du code source: maîtrise et maintenabilité
dans le temps
– Redistribution sans royalties
– Développements dérivés de code source existant
– Outils « gratuits »
● Inconvénients
– Modèle décentralisé apparaissant comme « flou » (?)
– Contraintes de certaines licences (GPL, LGPL)
– Support de certains matériels (?)
– Manque d'outils et de documentation (?)
6RTS 2014
Quelques projets libres majeurs
● X Window System (X11), MIT (MIT/X11)
● Projet GNU (GPL/LGPL) → GCC, EMACS, ...
● FreeBSD (BSD)
● Apache (Apache)
● Noyau Linux (GPL)
● RTEMS (GPL)
● Eclipse (EPL)
● Mozilla / Thunderbird (MPL)
● WebKit (BSD/LGPL)
● Qt (LGPL)
● Android (partiellement Apache 2 + GPL)
● ...
7RTS 2014
Projets « libres » pour l’embarqué
critique
● OCARINA (TPT) : « compilateur » AADL (Architecture
Analysis and Design Language)
● SynDEx (INRIA) : Synchronized Distributed Executive,
générateur de code « synchrone »
● POK (TPT) : RTOS ARINC 653
● TASTE (ESA) : The Assert Set of Tools for Engineering
● TOPCASED (Airbus) : Toolkit in OPen source for
Critical Applications & SystEms Development
● B événementiel (CLEARSY)
● Initiative Open-DO (www.open-do.org) Adacore
8RTS 2014
Les OS libres pour l'embarqué
9RTS 2014
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
(MMU-less), 4 Mo pour Linux
– Consommation mémoire vive : 16 Mo minimum
● Migration temps réel des anciens RTOS complexe car
Linux n’est pas TR → évolution avec les extensions
PREEMPT-RT et Xenomai
● Incompatible avec les systèmes critiques
● Souvent utilisé pour les outils, les simulateurs et
architectures « mixtes » (banc de test)
10RTS 2014
Linux comme (RT)OS , suite
● Désormais, « embarqué » n’implique pas forcément
« temps réel » et/ou très faible empreinte mémoire
(80% / 20 %)
● Dans les autres cas on peut utiliser d'autres systèmes
plus légers et TR
– eCOS / Lepton (libre + POSIX)
– RTEMS (libre + POSIX)
11RTS 2014
Linux et le TR
● Linux est un UNIX, donc pas un système temps réel
● Pas de préemption « complète » en mode noyau → un
processus ne peut être interrompu dans une routine de
traitement d’interruption (top half)
● Préemption par l'ordonnanceur
– Sur interruption timer
– Fréquence timer fixe (constante HZ = 1-10 ms) →
précision de l'ordonnanceur (granularité)
● Ordonnancement par niveau de priorité (POSIX)
– Priorité dynamique standard (0, ajustable avec « nice »)
→ SCHED_OTHER
– Priorité statique « temps réel » SCHED_FIFO/RR (1 à
99) mais mal prise en compte
12RTS 2014
Tâche périodique, Linux non chargé
5 ms
13RTS 2014
Système chargé par « flood ping »
« décrochage »jitter !
14RTS 2014
Extensions TR pour Linux
● L'utilisation de Linux comme RTOS est souvent
intéressante
– 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-kernel, low-latency,
PREEMPT-RT)
– Ajouter un « co-noyau » TR qui partage le matériel
avec le noyau Linux (RTLinux, RTAI, Xenomai) →
approche « virtualisation »
15RTS 2014
PREEMPT-RT
● Branche expérimentale pour la version 2.6 et 3.x, voir
https://rt.wiki.kernel.org
● Initié par Ingo Molnar, contributeur majeur du noyau
● Aucun lien avec « preempt-kernel » !
● Surtout utilisé sur x86 et des processeurs performants
(nécessite TSC = Time Stamp Counter)
● Fonctionne également sur ARM (9 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
16RTS 2014
PREEMPT-RT, modifications
● Threaded interrupt model → utilisation d'un thread
noyau (donc 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 (API hrtimer)
● Réécriture complète des mécanismes de
synchronisation (spinlock → mutex)
● Le résultat est un noyau (presque) « préemptif », mais
reste un noyau Linux
● Sections critiques avec des tâches non TR
17RTS 2014
PREEMPT-RT, conclusion
● Changements significatifs du code noyau
– Verrouillage des sections critiques
– Inspection nécessaire de tous les composants
– 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 pour les versions récentes,
2.6.30 et plus
● Permet de garantir 100 µs de jitter (x86)
18RTS 2014
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 (entre autres)
● 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)
19RTS 2014
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)
20RTS 2014
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 !
21RTS 2014
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
22RTS 2014
Architecture initiale RTLinux
23RTS 2014
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, 4.0 en décembre 2013
● Surtout x86
24RTS 2014
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)
25RTS 2014
Répartition sur 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
micro-noyau
26RTS 2014
Flood ping avec Xenomai :-)
27RTS 2014
Android
● Système d'exploitation « libre » basé sur un noyau
Linux modifié par Google
● Convergence avec GNU/Linux pour les noyaux récents
● Basé sur Dalvik, une machine virtuelle Java (très)
optimisée pour le mobile
● Environnement de développement intégré (EDI) basé
sur Eclipse (émulateur, débogueur, ...) → ADT
● Environ 75 % du marché du mobile
● Partiellement libre donc « concurrent » de GNU/Linux
28RTS 2014
Android et l'industrie
● Android est conçu pour la téléphonie + tablettes !
● Les projets industriels abandonnent les RTOS
propriétaires pour Linux (embarqué)
● Android est utilisable/conseillé si :
– Le projet utilise une IHM (plus simple et standard car
langage Java)
– Le projet n'utilise pas de TR dur (pour l'instant)
● Ne peut remplacer purement et simplement GNU/Linux
– Puissance CPU (Cortex-A8)
– Empreinte mémoire
29RTS 2014
Android industriel,
avantages/inconvénients
● Avantages
– Programmation Java (simple et répandue)
– IHM évoluée
– Communauté importante
– Fait « rêver » les managers et les comptables
(tablette = grand public = bon marché)
– Pilotes noyau identiques mais HAL nécessaire
● Inconvénients
– Compatibilité POSIX partielle
– Système de « build » statique rudimentaire par
rapport à ceux de Linux (Buildroot, OE)
– Des interfaces matérielles mal supportées (CAN, ...)
– Très lié à Google !
30RTS 2014
Android sur BB Black
31RTS 2014
Android standard (noyau 3.8)
32RTS 2014
Android + Xenomai
33RTS 2014
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, NAVY, ...
34RTS 2014
RTEMS, suite
● RTEMS est un exécutif TR :
– L'utilisation est plus complexe → configuration par
fichiers, pas de « shell » comme sur un OS évolué
– 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 320K lignes (.c et .h) pour la version
4.10.2
35RTS 2014
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
« packages »
● Version « pro » par
● Utilisé dans le multimédia :
– http://www.ecoscentric.com/ecos/examples.shtml
36RTS 2014
Les outils libres
37RTS 2014
Typologie des outils nécessaires
● Développement: compilation, mise au point (GNU
Toolchain)
● EDI / IDE (Eclipse)
● Construction de distribution, paquets logiciels,
production
● Émulation / simulation
● Sondes « matérielles » (JTAG)
● Gestion de version
→ La plupart de ces outils existent dans le monde du
logiciel libre
38RTS 2014
Outils de développement
● Intégration des outils GNU (compilation, mise au point)
dans un EDI (Environnement de Développement
Intégré)
– Eclipse + plugin CDT (C/C++)
– QtCreator
● Produits commerciaux liés à un éditeur (Eclipse +
outils)
– Workbench (Wind River → CDT)
– DevRocket (Montavista)
● Libre ou commercial ?
– Outils additionnels intégrés (profiling, mise au point)
– Support technique !
39RTS 2014
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 croisée GCC
● L'outil produit les différents éléments de la distribution
– Image du bootloader
– Noyau Linux
– Images du root-filesystem
40RTS 2014
Les principaux outils disponibles
● OpenEmbedded
– Moteur écrit en Python
– Très puissant mais (très) 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 !
● OpenWrt
– Dérivé de BR
– Gère les paquets binaires
● Autres: LTIB (Freescale), PTXdist (Pengutronix)
41RTS 2014
Buildroot
● Lié au projet uClibc (micro-C-libc) : libC plus légère que
la Glibc
● But initial: produire des images de test de uClibc
● Moteur basé sur des fichiers Makefile et des scripts-
shell
● Outil de configuration « graphique »
● Peut désormais utiliser Glibc, Eglibc, ...
● Repris en 2009 par Peter Korsgaard et Thomas
Petazzoni
● Une version officielle tous les 3 mois: 2009.02 →
2014.02
42RTS 2014
Buildroot 2014.02
43RTS 2014
OpenEmbedded, introduction
● OE est un « framework de compilation croisée »
démarré par Chris Larson en 2003 pour OpenZaurus
(Zaurus = le « premier » PDA sous Linux)
44RTS 2014
Yocto Project(s)
● Yocto est un projet « chapeau » démarré en 2010
● Il intégre de nombreux projets comme OE, BitBake,
Poky, Eglibc, ADT, Hob, AutoBuilder (QA), …
● Plusieurs dizaines de membres dont Intel, Montavista,
Freescale, Huawei, Gumstix, Eukréa, ...
● L'architecte est Richard Purdie qui a rejoint la Linux
Foundation en tant que « fellow » en décembre 2010
● Organisation similaire à celle de l'équipe du noyau
Linux
« meritocracy presided over by a benevolent dictator »
● Forte présence d'Intel mais l’engagement de la Linux
Foundation permet à Yocto d'être un véritable project
collaboratif !
45RTS 2014
É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 (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
46RTS 2014
Questions ?

Más contenido relacionado

La actualidad más candente

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 PRUSSECAM Brussels Engineering School
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
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 communicationECAM Brussels Engineering School
 
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéECAM Brussels Engineering School
 
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...ECAM Brussels Engineering School
 
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 2014eurogicielgroup
 
2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open HardwareSylvain Wallez
 
Introduction aux systèmes d'exploitation mobile
Introduction aux systèmes d'exploitation mobileIntroduction aux systèmes d'exploitation mobile
Introduction aux systèmes d'exploitation mobileHoussem Rouini
 
Embedded intro 2006
Embedded intro 2006Embedded intro 2006
Embedded intro 2006mcbinene
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1SinGuy
 
Cours16 ressources pour arduino
Cours16   ressources pour arduinoCours16   ressources pour arduino
Cours16 ressources pour arduinolabsud
 
Superivision Aéroportuaire
Superivision AéroportuaireSuperivision Aéroportuaire
Superivision AéroportuaireKarim Hassaouan
 
Carte multifonction 2017
Carte multifonction 2017Carte multifonction 2017
Carte multifonction 2017Peronnin Eric
 
Présentation de projet de fin d’études
Présentation de projet de fin d’étudesPrésentation de projet de fin d’études
Présentation de projet de fin d’étudesAimen Hajri
 
Base des systèmes à microprocesseur
Base des systèmes à microprocesseurBase des systèmes à microprocesseur
Base des systèmes à microprocesseurPeronnin Eric
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurablesPeronnin Eric
 
Microcontroleur arduino uno
Microcontroleur arduino unoMicrocontroleur arduino uno
Microcontroleur arduino unobyorn TANDU
 

La actualidad más candente (20)

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
 
Les systèmes embarqués arduino
Les systèmes embarqués arduinoLes systèmes embarqués arduino
Les systèmes embarqués arduino
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
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 : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
 
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...
 
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
 
Microcontroleur
MicrocontroleurMicrocontroleur
Microcontroleur
 
2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware
 
Introduction aux systèmes d'exploitation mobile
Introduction aux systèmes d'exploitation mobileIntroduction aux systèmes d'exploitation mobile
Introduction aux systèmes d'exploitation mobile
 
Embedded intro 2006
Embedded intro 2006Embedded intro 2006
Embedded intro 2006
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
 
Cours16 ressources pour arduino
Cours16   ressources pour arduinoCours16   ressources pour arduino
Cours16 ressources pour arduino
 
Superivision Aéroportuaire
Superivision AéroportuaireSuperivision Aéroportuaire
Superivision Aéroportuaire
 
Carte multifonction 2017
Carte multifonction 2017Carte multifonction 2017
Carte multifonction 2017
 
Présentation de projet de fin d’études
Présentation de projet de fin d’étudesPrésentation de projet de fin d’études
Présentation de projet de fin d’études
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
 
Base des systèmes à microprocesseur
Base des systèmes à microprocesseurBase des systèmes à microprocesseur
Base des systèmes à microprocesseur
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurables
 
Microcontroleur arduino uno
Microcontroleur arduino unoMicrocontroleur arduino uno
Microcontroleur arduino uno
 

Destacado

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 digitaleAbdo07
 
Présentation Qsquare
Présentation QsquarePrésentation Qsquare
Présentation QsquareYourSocialCom
 
Management de l'innovation
Management de l'innovationManagement de l'innovation
Management de l'innovationHervé Padilla
 
Demain, l'Internet des objets
Demain, l'Internet des objets Demain, l'Internet des objets
Demain, l'Internet des objets France Stratégie
 
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 2012servicesmobiles.fr
 
#4 Applications Convergentes JavaEE/OSGi
#4 Applications Convergentes JavaEE/OSGi#4 Applications Convergentes JavaEE/OSGi
#4 Applications Convergentes JavaEE/OSGiGuillaume Sauthier
 
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ésMicrosoft Décideurs IT
 
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 M2MGeoffreyZ
 
Prototypage de Systèmes Embarqués
Prototypage de Systèmes EmbarquésPrototypage de Systèmes Embarqués
Prototypage de Systèmes Embarquésboisgera
 
Internet des Objets par MyTAGG
Internet des Objets par MyTAGGInternet des Objets par MyTAGG
Internet des Objets par MyTAGGMyTAGG
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Hajer Dahech
 
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, DataArtAlina Vilk
 
Identification des empreintes digitales
Identification des empreintes digitalesIdentification des empreintes digitales
Identification des empreintes digitalesSarah
 
Rapport projet Domotique
Rapport projet DomotiqueRapport projet Domotique
Rapport projet Domotiquets4riadhoc
 
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 - ArduinoQuentin Geluyckens
 
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATUREARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATUREHajer Dahech
 
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 ObjetsADIRC
 
Presentation arduino
Presentation arduinoPresentation arduino
Presentation arduinoSinGuy
 

Destacado (20)

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
 
SEMS-bassdef
SEMS-bassdefSEMS-bassdef
SEMS-bassdef
 
Présentation Qsquare
Présentation QsquarePrésentation Qsquare
Présentation Qsquare
 
Management de l'innovation
Management de l'innovationManagement de l'innovation
Management de l'innovation
 
Formations en Aeronautique - Espace - Systèmes Embarqués
Formations en Aeronautique - Espace - Systèmes EmbarquésFormations en Aeronautique - Espace - Systèmes Embarqués
Formations en Aeronautique - Espace - Systèmes Embarqués
 
Demain, l'Internet des objets
Demain, l'Internet des objets Demain, l'Internet des objets
Demain, l'Internet des objets
 
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
 
#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
 
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
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
 
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
 
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATUREARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
 
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
 

Similar a Etat de l'art des systèmes embarqués, utilisation du logiciel libre

Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linuxembedded-linux-bdx
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéAlexandre LAHAYE
 
Architecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPArchitecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPLINAGORA
 
0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.pptDenisKouakou1
 
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éesAlexandre LAHAYE
 
Formation linux temps réel - Malakoff 7 octobre 2014
Formation linux temps réel - Malakoff 7 octobre 2014Formation linux temps réel - Malakoff 7 octobre 2014
Formation linux temps réel - Malakoff 7 octobre 2014eurogicielgroup
 
Formation linux temps réel - Toulouse 4 novembre 2014
Formation linux temps réel - Toulouse 4 novembre 2014Formation linux temps réel - Toulouse 4 novembre 2014
Formation linux temps réel - Toulouse 4 novembre 2014eurogicielgroup
 
Open Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarquesOpen Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarquesAlexandre LAHAYE
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)Pôle Systematic Paris-Region
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsPhilippeBrogi
 
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 ?pprem
 
Tv21 02-07 linuxembedded
Tv21 02-07 linuxembeddedTv21 02-07 linuxembedded
Tv21 02-07 linuxembeddedPascal Flamand
 
Lepton : Description succincte
Lepton : Description succincteLepton : Description succincte
Lepton : Description succincteO10ée
 

Similar a Etat de l'art des systèmes embarqués, utilisation du logiciel libre (20)

Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarqué
 
Architecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPArchitecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAP
 
0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt
 
Démo puppet et état du projet
Démo puppet et état du projetDémo puppet et état du projet
Démo puppet et état du projet
 
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
 
Plateformes embarquées
Plateformes embarquéesPlateformes embarquées
Plateformes embarquées
 
Formation linux temps réel - Malakoff 7 octobre 2014
Formation linux temps réel - Malakoff 7 octobre 2014Formation linux temps réel - Malakoff 7 octobre 2014
Formation linux temps réel - Malakoff 7 octobre 2014
 
Formation linux temps réel - Toulouse 4 novembre 2014
Formation linux temps réel - Toulouse 4 novembre 2014Formation linux temps réel - Toulouse 4 novembre 2014
Formation linux temps réel - Toulouse 4 novembre 2014
 
Open Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarquesOpen Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarques
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
 
Rtlinux
RtlinuxRtlinux
Rtlinux
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloads
 
Qt5 embedded
Qt5 embeddedQt5 embedded
Qt5 embedded
 
Sysadmin Day #5
Sysadmin Day #5Sysadmin Day #5
Sysadmin Day #5
 
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 ?
 
Android pour l'industrie
Android pour l'industrieAndroid pour l'industrie
Android pour l'industrie
 
Tv21 02-07 linuxembedded
Tv21 02-07 linuxembeddedTv21 02-07 linuxembedded
Tv21 02-07 linuxembedded
 
Lepton : Description succincte
Lepton : Description succincteLepton : Description succincte
Lepton : Description succincte
 

Etat de l'art des systèmes embarqués, utilisation du logiciel libre

  • 1. 1RTS 2014 État de l'art des systèmes embarqués Utilisation du logiciel libre Pierre Ficheux (pierre.ficheux@openwide.fr) Mars 2014
  • 2. 2RTS 2014 Présentation Open Wide ● SSII/SSLL créée en septembre 2001 avec THALES et Schneider ● Indépendante depuis 2009 ● Environ 120 salariés sur Paris, Lyon et Toulouse ● Industrialisation de composants open source – Développement – Formation ● Trois activités : – OW Système d'Information (Java/PHP) – OW Outsourcing: hébergement – OW Ingénierie: informatique industrielle
  • 3. 3RTS 2014 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
  • 4. 4RTS 2014 Importance du logiciel libre ● Le logiciel libre a pris un part importante des systèmes embarqués – Outils (GNU toolchain) – OS (Linux, RTEMS, ...) – Ateliers de développement (Eclipse) – Composants de solutions propriétaires ! ● La plupart des éditeurs commerciaux fournissent également (ou uniquement) des composants basés sur du logiciel libre (VxWorks, Adacore, LynuxWorks, ...) ● Attention aux licences !
  • 5. 5RTS 2014 Avantages/inconvénients du logiciel libre ● Avantages – Disponibilité du code source: maîtrise et maintenabilité dans le temps – Redistribution sans royalties – Développements dérivés de code source existant – Outils « gratuits » ● Inconvénients – Modèle décentralisé apparaissant comme « flou » (?) – Contraintes de certaines licences (GPL, LGPL) – Support de certains matériels (?) – Manque d'outils et de documentation (?)
  • 6. 6RTS 2014 Quelques projets libres majeurs ● X Window System (X11), MIT (MIT/X11) ● Projet GNU (GPL/LGPL) → GCC, EMACS, ... ● FreeBSD (BSD) ● Apache (Apache) ● Noyau Linux (GPL) ● RTEMS (GPL) ● Eclipse (EPL) ● Mozilla / Thunderbird (MPL) ● WebKit (BSD/LGPL) ● Qt (LGPL) ● Android (partiellement Apache 2 + GPL) ● ...
  • 7. 7RTS 2014 Projets « libres » pour l’embarqué critique ● OCARINA (TPT) : « compilateur » AADL (Architecture Analysis and Design Language) ● SynDEx (INRIA) : Synchronized Distributed Executive, générateur de code « synchrone » ● POK (TPT) : RTOS ARINC 653 ● TASTE (ESA) : The Assert Set of Tools for Engineering ● TOPCASED (Airbus) : Toolkit in OPen source for Critical Applications & SystEms Development ● B événementiel (CLEARSY) ● Initiative Open-DO (www.open-do.org) Adacore
  • 8. 8RTS 2014 Les OS libres pour l'embarqué
  • 9. 9RTS 2014 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 (MMU-less), 4 Mo pour Linux – Consommation mémoire vive : 16 Mo minimum ● Migration temps réel des anciens RTOS complexe car Linux n’est pas TR → évolution avec les extensions PREEMPT-RT et Xenomai ● Incompatible avec les systèmes critiques ● Souvent utilisé pour les outils, les simulateurs et architectures « mixtes » (banc de test)
  • 10. 10RTS 2014 Linux comme (RT)OS , suite ● Désormais, « embarqué » n’implique pas forcément « temps réel » et/ou très faible empreinte mémoire (80% / 20 %) ● Dans les autres cas on peut utiliser d'autres systèmes plus légers et TR – eCOS / Lepton (libre + POSIX) – RTEMS (libre + POSIX)
  • 11. 11RTS 2014 Linux et le TR ● Linux est un UNIX, donc pas un système temps réel ● Pas de préemption « complète » en mode noyau → un processus ne peut être interrompu dans une routine de traitement d’interruption (top half) ● Préemption par l'ordonnanceur – Sur interruption timer – Fréquence timer fixe (constante HZ = 1-10 ms) → précision de l'ordonnanceur (granularité) ● Ordonnancement par niveau de priorité (POSIX) – Priorité dynamique standard (0, ajustable avec « nice ») → SCHED_OTHER – Priorité statique « temps réel » SCHED_FIFO/RR (1 à 99) mais mal prise en compte
  • 12. 12RTS 2014 Tâche périodique, Linux non chargé 5 ms
  • 13. 13RTS 2014 Système chargé par « flood ping » « décrochage »jitter !
  • 14. 14RTS 2014 Extensions TR pour Linux ● L'utilisation de Linux comme RTOS est souvent intéressante – 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-kernel, low-latency, PREEMPT-RT) – Ajouter un « co-noyau » TR qui partage le matériel avec le noyau Linux (RTLinux, RTAI, Xenomai) → approche « virtualisation »
  • 15. 15RTS 2014 PREEMPT-RT ● Branche expérimentale pour la version 2.6 et 3.x, voir https://rt.wiki.kernel.org ● Initié par Ingo Molnar, contributeur majeur du noyau ● Aucun lien avec « preempt-kernel » ! ● Surtout utilisé sur x86 et des processeurs performants (nécessite TSC = Time Stamp Counter) ● Fonctionne également sur ARM (9 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
  • 16. 16RTS 2014 PREEMPT-RT, modifications ● Threaded interrupt model → utilisation d'un thread noyau (donc 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 (API hrtimer) ● Réécriture complète des mécanismes de synchronisation (spinlock → mutex) ● Le résultat est un noyau (presque) « préemptif », mais reste un noyau Linux ● Sections critiques avec des tâches non TR
  • 17. 17RTS 2014 PREEMPT-RT, conclusion ● Changements significatifs du code noyau – Verrouillage des sections critiques – Inspection nécessaire de tous les composants – 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 pour les versions récentes, 2.6.30 et plus ● Permet de garantir 100 µs de jitter (x86)
  • 18. 18RTS 2014 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 (entre autres) ● 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)
  • 19. 19RTS 2014 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)
  • 20. 20RTS 2014 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 !
  • 21. 21RTS 2014 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
  • 23. 23RTS 2014 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, 4.0 en décembre 2013 ● Surtout x86
  • 24. 24RTS 2014 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)
  • 25. 25RTS 2014 Répartition sur 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 micro-noyau
  • 26. 26RTS 2014 Flood ping avec Xenomai :-)
  • 27. 27RTS 2014 Android ● Système d'exploitation « libre » basé sur un noyau Linux modifié par Google ● Convergence avec GNU/Linux pour les noyaux récents ● Basé sur Dalvik, une machine virtuelle Java (très) optimisée pour le mobile ● Environnement de développement intégré (EDI) basé sur Eclipse (émulateur, débogueur, ...) → ADT ● Environ 75 % du marché du mobile ● Partiellement libre donc « concurrent » de GNU/Linux
  • 28. 28RTS 2014 Android et l'industrie ● Android est conçu pour la téléphonie + tablettes ! ● Les projets industriels abandonnent les RTOS propriétaires pour Linux (embarqué) ● Android est utilisable/conseillé si : – Le projet utilise une IHM (plus simple et standard car langage Java) – Le projet n'utilise pas de TR dur (pour l'instant) ● Ne peut remplacer purement et simplement GNU/Linux – Puissance CPU (Cortex-A8) – Empreinte mémoire
  • 29. 29RTS 2014 Android industriel, avantages/inconvénients ● Avantages – Programmation Java (simple et répandue) – IHM évoluée – Communauté importante – Fait « rêver » les managers et les comptables (tablette = grand public = bon marché) – Pilotes noyau identiques mais HAL nécessaire ● Inconvénients – Compatibilité POSIX partielle – Système de « build » statique rudimentaire par rapport à ceux de Linux (Buildroot, OE) – Des interfaces matérielles mal supportées (CAN, ...) – Très lié à Google !
  • 33. 33RTS 2014 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, NAVY, ...
  • 34. 34RTS 2014 RTEMS, suite ● RTEMS est un exécutif TR : – L'utilisation est plus complexe → configuration par fichiers, pas de « shell » comme sur un OS évolué – 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 320K lignes (.c et .h) pour la version 4.10.2
  • 35. 35RTS 2014 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 « packages » ● Version « pro » par ● Utilisé dans le multimédia : – http://www.ecoscentric.com/ecos/examples.shtml
  • 37. 37RTS 2014 Typologie des outils nécessaires ● Développement: compilation, mise au point (GNU Toolchain) ● EDI / IDE (Eclipse) ● Construction de distribution, paquets logiciels, production ● Émulation / simulation ● Sondes « matérielles » (JTAG) ● Gestion de version → La plupart de ces outils existent dans le monde du logiciel libre
  • 38. 38RTS 2014 Outils de développement ● Intégration des outils GNU (compilation, mise au point) dans un EDI (Environnement de Développement Intégré) – Eclipse + plugin CDT (C/C++) – QtCreator ● Produits commerciaux liés à un éditeur (Eclipse + outils) – Workbench (Wind River → CDT) – DevRocket (Montavista) ● Libre ou commercial ? – Outils additionnels intégrés (profiling, mise au point) – Support technique !
  • 39. 39RTS 2014 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 croisée GCC ● L'outil produit les différents éléments de la distribution – Image du bootloader – Noyau Linux – Images du root-filesystem
  • 40. 40RTS 2014 Les principaux outils disponibles ● OpenEmbedded – Moteur écrit en Python – Très puissant mais (très) 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 ! ● OpenWrt – Dérivé de BR – Gère les paquets binaires ● Autres: LTIB (Freescale), PTXdist (Pengutronix)
  • 41. 41RTS 2014 Buildroot ● Lié au projet uClibc (micro-C-libc) : libC plus légère que la Glibc ● But initial: produire des images de test de uClibc ● Moteur basé sur des fichiers Makefile et des scripts- shell ● Outil de configuration « graphique » ● Peut désormais utiliser Glibc, Eglibc, ... ● Repris en 2009 par Peter Korsgaard et Thomas Petazzoni ● Une version officielle tous les 3 mois: 2009.02 → 2014.02
  • 43. 43RTS 2014 OpenEmbedded, introduction ● OE est un « framework de compilation croisée » démarré par Chris Larson en 2003 pour OpenZaurus (Zaurus = le « premier » PDA sous Linux)
  • 44. 44RTS 2014 Yocto Project(s) ● Yocto est un projet « chapeau » démarré en 2010 ● Il intégre de nombreux projets comme OE, BitBake, Poky, Eglibc, ADT, Hob, AutoBuilder (QA), … ● Plusieurs dizaines de membres dont Intel, Montavista, Freescale, Huawei, Gumstix, Eukréa, ... ● L'architecte est Richard Purdie qui a rejoint la Linux Foundation en tant que « fellow » en décembre 2010 ● Organisation similaire à celle de l'équipe du noyau Linux « meritocracy presided over by a benevolent dictator » ● Forte présence d'Intel mais l’engagement de la Linux Foundation permet à Yocto d'être un véritable project collaboratif !
  • 45. 45RTS 2014 É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 (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