SlideShare une entreprise Scribd logo
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 ?

Contenu connexe

PPTX
Embedded Systems
PDF
Systeme embarque
DOCX
Arm système embarqué
PDF
Chap1 intro 1pp
PDF
Les solutions libres pour les systèmes embarqués
PDF
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
PPT
Embarqués temps réel
PPT
Embedded Systems
Systeme embarque
Arm système embarqué
Chap1 intro 1pp
Les solutions libres pour les systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Embarqués temps réel

Tendances (20)

PDF
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
ODP
Les systèmes embarqués arduino
PDF
Altera nios ii embedded evaluation kit
PDF
Programmation de systèmes embarqués : Bus et périphériques de communication
PDF
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
PDF
Programmation de systèmes embarqués : Internet of Things : système connecté e...
PDF
Formation linux temps réel - Rennes 14 octobre 2014
PDF
Microcontroleur
PDF
2012 11 Toulibre - Open Hardware
DOCX
Introduction aux systèmes d'exploitation mobile
PDF
Embedded intro 2006
PDF
Systeme embarque td1
PDF
Cours16 ressources pour arduino
PDF
Superivision Aéroportuaire
PPTX
Carte multifonction 2017
PPTX
Présentation de projet de fin d’études
PPTX
Microcontrôleur
PDF
Base des systèmes à microprocesseur
PPTX
Composants reconfigurables
PDF
Microcontroleur arduino uno
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Les systèmes embarqués arduino
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 : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Formation linux temps réel - Rennes 14 octobre 2014
Microcontroleur
2012 11 Toulibre - Open Hardware
Introduction aux systèmes d'exploitation mobile
Embedded intro 2006
Systeme embarque td1
Cours16 ressources pour arduino
Superivision Aéroportuaire
Carte multifonction 2017
Présentation de projet de fin d’études
Microcontrôleur
Base des systèmes à microprocesseur
Composants reconfigurables
Microcontroleur arduino uno
Publicité

En vedette (20)

PDF
Projet de fin d'etude :Control d’acces par empreintes digitale
PDF
SEMS-bassdef
PPTX
Présentation Qsquare
PDF
Management de l'innovation
PDF
Formations en Aeronautique - Espace - Systèmes Embarqués
PDF
Demain, l'Internet des objets
PDF
Spéciale Internet des Objets La French Mobile Décembre 2012
ODP
#4 Applications Convergentes JavaEE/OSGi
PPTX
La réalité augmentée dans les systèmes embarqués
PDF
My book about Global Warming and M2M
PDF
Prototypage de Systèmes Embarqués
PPTX
Internet des Objets par MyTAGG
PPTX
Généralités sur les périphériques du STM32
PPTX
Android Things, Alexey Rybakov, Technical Evangelist, DataArt
PDF
Identification des empreintes digitales
PDF
Rapport projet Domotique
PDF
Café Numérique Bruxelles - Les Makers - Arduino
PDF
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
PDF
aDIRC - 12 juin 2014 - Internet des Objets
ODP
Presentation arduino
Projet de fin d'etude :Control d’acces par empreintes digitale
SEMS-bassdef
Présentation Qsquare
Management de l'innovation
Formations en Aeronautique - Espace - Systèmes Embarqués
Demain, l'Internet des objets
Spéciale Internet des Objets La French Mobile Décembre 2012
#4 Applications Convergentes JavaEE/OSGi
La réalité augmentée dans les systèmes embarqués
My book about Global Warming and M2M
Prototypage de Systèmes Embarqués
Internet des Objets par MyTAGG
Généralités sur les périphériques du STM32
Android Things, Alexey Rybakov, Technical Evangelist, DataArt
Identification des empreintes digitales
Rapport projet Domotique
Café Numérique Bruxelles - Les Makers - Arduino
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
aDIRC - 12 juin 2014 - Internet des Objets
Presentation arduino
Publicité

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

PDF
Solutions temps réel sous linux
PPTX
Rtlinux
PPT
Développement Noyau Et Driver Sous Gnu Linux
PDF
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
PPT
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
PDF
Altera nios ii embedded evaluation kit
PDF
Architecture hétérogène au service de l'IoT industriel ?
PDF
Android pour l'industrie
PDF
Embarquer Linux et des systèmes libres, méthodes et apports
PDF
Formation linux temps réel - Toulouse 4 novembre 2014
ODP
OS libres pour l'IoT - Zephyr
PDF
Open Wide : Les outils pour le développement des systemes embarques
PDF
Formation linux temps réel - Malakoff 7 octobre 2014
PDF
Logiciels libres en milieu industriel
PDF
Concevoir un système Linux embarqué avec Yocto Project - Version révisée
PPTX
Présentation de la pile réseau sous gnu linux
PDF
Les technologies Open Source pour les interfaces graphiques embarquées
PDF
Plateformes embarquées
PPTX
real time mobile operating system ok.pptx
PDF
Linux et les systèmes embarqués
Solutions temps réel sous linux
Rtlinux
Développement Noyau Et Driver Sous Gnu Linux
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Altera nios ii embedded evaluation kit
Architecture hétérogène au service de l'IoT industriel ?
Android pour l'industrie
Embarquer Linux et des systèmes libres, méthodes et apports
Formation linux temps réel - Toulouse 4 novembre 2014
OS libres pour l'IoT - Zephyr
Open Wide : Les outils pour le développement des systemes embarques
Formation linux temps réel - Malakoff 7 octobre 2014
Logiciels libres en milieu industriel
Concevoir un système Linux embarqué avec Yocto Project - Version révisée
Présentation de la pile réseau sous gnu linux
Les technologies Open Source pour les interfaces graphiques embarquées
Plateformes embarquées
real time mobile operating system ok.pptx
Linux et les systèmes embarqués

Dernier (6)

PDF
FORMATION COMPLETE EN EXCEL DONE BY MR. NYONGA BRICE.pdf
PDF
Modems expliqués- votre passerelle vers Internet.pdf
PDF
Tendances tech 2025 - SFEIR & WENVISION.pdf
PPTX
Presentation_Securite_Reseaux_Bac+2.pptx
PDF
FORMATION EN Programmation En Langage C.pdf
PDF
presentation_with_intro_compressee IEEE EPS France
FORMATION COMPLETE EN EXCEL DONE BY MR. NYONGA BRICE.pdf
Modems expliqués- votre passerelle vers Internet.pdf
Tendances tech 2025 - SFEIR & WENVISION.pdf
Presentation_Securite_Reseaux_Bac+2.pptx
FORMATION EN Programmation En Langage C.pdf
presentation_with_intro_compressee IEEE EPS France

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 ([email protected]) 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