Pierre Ficheux (pierre.ficheux@openwide.fr) Avril 2012 1
Présentation PF Ingénieur Arts et Métiers + Sup'Aéro Utilisateur de logiciels s depuis 1989 Utilisateur de Linux depuis 1992 Auteur des trois éditions de l'ouvrage «Linux embarqué» (Eyrolles), 4ème édition 6/2012 Auteur GNU Linux Magazine, Open Silicium CTO Open Wide Ingénierie, enseignant EPITA 2
Présentation Open Wide SSII/SSLL créée en septembre 2001 avec Thales et Schneider Indépendante depuis 2009 Environ 100 salariés sur Paris et Lyon et Toulouse (1/2012)! Industrialisation de composants open source Quatre activités : OW Système d'information OW Outsourcing: hébergement OW Ingénierie: informatique industrielle OW Technologies: composants Java 3
Domaines d utilisation 4
Domaines d'application 1960-70 : remplacer la mécanique et la logique «câblée» lorsque c'est possible (souplesse) 1980 : RTOS (Real Time OS) génériques Historique Militaire, spatial (RTOS/360, VRTX sur Hubble) Contrôle de processus industriel Transport : AUTOSAR/OSEK, ARINC 653 certification (DO-178,...) Internet/Telecom : routeurs, PABX (Chorus) Assimilé / émergent Multimédia : audio, vidéo, TV, automobile (GENIVI), Téléphonie, médical 5
Les «nouveaux» domaines Équipement grand public jusque la isolé (multimédia, domotique, ) «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 Notion de «boite noire» dédiée à un ensemble de fonctions (téléphonie, set-top box avec services étendus) 6
«Bare board» / RTOS Pas de système d'exploitation (Bare Board) Système (très) critique ou très réduit Éventuellement un simple «exécutif» temps réel (Sysgo) Utilisation d'un RTOS Plus de souplesse et portabilité mais plus d'empreinte mémoire Certification possible sur certains OS : VxWorks 653 (Wind River), LynxOS-178 / LynxOS-SE (LynuxWorks), INTEGRITY-178 (Green Hills) 7
GPOS / RTOS GPOS (Windows, Linux,...) Lissage des priorités (dynamique) => complexe Grand nombre de tâches concurrentes (> 200 sur un PC Linux «inactif») 15M lignes de code pour le noyau Linux 3.x! RTOS Prévisible : évaluer le pire des cas Déterministe : faible influence de la charge Pas ou peu de notion de «performances moyennes» Peu de tâches concurrentes Léger (< 100K lignes de code pour FreeRTOS) 8
RTOS, les types de temps-réel Temps-réel mou : un retard dans l obtention du résultat n est pas dramatique (multimédia) Temps-réel dur : un retard dans l obtention du résultat le rend inutile (pilotage matériel) Temps-réel «ferme» : un retard, s il arrive très peu souvent, peut être toléré (téléphonie, multimédia) La plupart des systèmes temps-réel modernes sont «hybrides» (exemple : Linux/Xenomai) Certaines tâches sont temps-réel (dur) D'autres ne le sont pas ou peu (mou/ferme) Frontière mou/dur parfois difficile à définir! 9
Asynchrone Approches asynchrone / synchrone Interaction avec l'environnement (interruption), dérive d'horloge entre calculateurs Modélisation complexe (nombreux cas de préemption) Synchrone Modélisation statique du comportement Pas d'interruption ni d'allocation dynamique Convient aux systèmes critiques Langages dédiés, génération de code (ESTEREL, SIGNAL, SynDEx) Exemple du métro automatique parisien 1/14 10
Quelques «RTOS» célèbres VxWorks de WindRiver (édite également WR Linux) QNX, UNIX like Windows CE / XP Embedded, Windows Mobile LynxOS de LynuxWorks (édite également BlueCat Linux) Nucleus (Mentor Graphics) µc/os (micro-c OS) et µc/os II: RTOS pour micro-contrôleurs VRTX uitron psos 11
Le logiciel 12
Le logiciel, introduction A peu près équivalent à la notion d'open source, voir http://www.opensource.org La confusion vient de la signification anglaise free = / gratuit Différents types de logiciels Le freeware ou graticiel: 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 : sources disponibles, licence open source, non liée à la notion de gratuité (on peut vendre un logiciel ) 13
Logiciel s, quelques éléments Le logiciel n'est pas forcément gratuit La migration vers du logiciel n'est JAMAIS gratuite => le «coût du changement» Les licences, même s doivent être respectées (cf assignation de Free par la FSF ou problème avec Busybox) Ces licences ne sont pas incompatibles avec la vente de logiciel (embarqué ou non) ni de matériel La conception de l'architecture du système est fondamentale afin de prévenir les problèmes de licence 14
Les licences s Doivent être compatibles avec le modèle, voir http://www.opensource.org Problème de compatibilité avec les droits nationaux Exemples de licences : GPL / LGPL BSD MIT/X11 Mozilla FDL (pour la documentation) CeCILL (France) Voir http://fr.wikipedia.org/wiki/licence_ 15
GPL/LGPL en bref (Linux) GPL = General Public License (GNU/FSF) On la surnomme également «copyleft» La GPL v2 (1991) est la plus répandue (ex: noyau Linux), GPL v3 en 2007 (DRM) La licence s'applique uniquement en cas de redistribution Un code source utilisant du code GPL est du travail dérivé et doit être publié Publication: celui qui reçoit la version binaire peut obtenir le code source Pas de lien (ld) possible entre du code GPL et du code «propriétaire» => possible avec la LGPL (Lesser-GPL) 16
Quelques projets s majeurs X Window System (X11), MIT (MIT/X11) Projet GNU (GPL/LGPL) GCC, EMACS,... FreeBSD (BSD) Apache (Apache) Noyau Linux (GPL) Eclipse (EPL) Mozilla / Thunderbird (MPL) WebKit (BSD/LGPL) Qt (LGPL) Android (partiellement)... 17
Avantages/inconvénients du logiciel Avantages Disponibilité du code source: maitrise et maintenabilité dans le temps Redistribution sans royalties Développements dérivés de code source existant Outils de développement «gratuits»! Inconvénients Méfiance des décideurs, modèle décentralisé apparaissant comme «flou» Contraintes des licences (GPL, LGPL) Support parfois non officiel pour certains matériels Manque d'outils et de documentation 18
Les (RT)OS s 19
Linux comme (RT)OS Réservé aux systèmes complexes 32 bits Gestion complexe de la mémoire (MMU) 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) 20
Linux comme (RT)OS, suite Désormais, «embarqué» n implique pas forcément «temps réel» et/ou très faible empreinte mémoire Dans les autres cas on peut utiliser d'autres systèmes plus légers et TR ecos / Lepton ( / POSIX) RTEMS ( / POSIX) Micro-C-OS II (8 bits ou plus) 21
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.s html 22
RTEMS Real-Time Executive for Missile/Military Systems RTE for Multiprocessor Systems Développé depuis 1988, depuis 1994 32 bits CPU (8/16 bits avec TinyRTEMS) API POSIX, ARINC 653 (AIR/ESA) Programmation C/C++/Ada Empreinte minimale entre 64 et 128 Ko (256 à 400 Ko suivant le nombre de paquets) Utilisation industrielle (ESA, EADS,...) Large communauté de développeurs http://wiki.rtems.org/wiki/index.php 23
Les outils 24
Typologie des outils Développement: compilation, mise au point (GNU Toolchain) EDI / IDE Construction de distribution, paquets logiciels, production Emulation Sondes «matérielles» (JTAG) Outils divers (gestion de version) La plupart de ces outils existent dans le monde du logiciel 25
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 (LTT, KGDB,...) Support technique! 26
Création de distribution Linux Utiliser un produit d éditeur (Wind River, MV, ) Adapter une distribution Linux classique Limité au niveau matériel (x86) Empreinte mémoire importante Pour des cas très particuliers Créer la distribution «from scratch» Complexe Difficile/impossible à industrialiser: gestion des dépendances évolutions Utiliser un outil de génération : Buildroot, OpenEmbedded, OpenWrt, LTIB 27
Utilisation des outils de production Un «moteur» crée la distribution à partir des sources des composants adaptés en appliquant des «patch» Ne fournit pas les sources: uniquement les patch et les règles de production prenant en compte les dépendances :-) Peut produire la chaîne croisée Produit les différents éléments de la distribution Image du bootloader Noyau Linux Image du «root-filesystem» 28
Quelques outils de production s OpenEmbedded Moteur écrit en Python Très puissant mais lourd Basé sur des fichiers de configuration! Buildroot Au départ un démonstrateur pour uclibc Désormais un véritable outil, bien maintenu! OpenWrt Dérivé de BR Orienté vers les IAD (Internet Access Device) Autres: LTIB, PTXdist,... 29
OpenEmbedded Une «généralisation» de l'approche utilisée dans BR Utilise un moteur écrit en Python (bitbake) et un ensemble de règles utilisant un principe d'héritage => «recipe» (recette) Pas d'interface de configuration Processus lourd => plusieurs heures pour la première compilation (environ 30mn pour BR) TRES puissant, recommandé dans le cas ou l'on gère un grand nombre de configurations Gère la notion de paquet binaire, contrairement à BR 30
Buildroot 31
Buildroot, histoire 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,..., 2011.02...2012.02 32
É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 Voir la démo 33
Sondes JTAG GDB gdbserver / KGDB Sondes JTAG commerciales (Abatron, Wind River, ) OpenOCD () 34
Outils «s» 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) 35
Linux: tendances 36
Les tendances 2003-2007 37
Linux foundation (2010) 38
Linux foundation (2010), suite 39
Explication du phénomène Fiabilité et performances de Linux validation dans le monde du serveur Disponibilité du code source Support matériel généralisé ou presque Pas de royalties (interdit par les licences OSS) Réduction des coûts (prix des licences développeur PME) Orientation stratégique des leaders de l embarqué vers Linux: Wind River, LynuxWorks, Mentor Graphics 40
Évolution du modèle, dès 2007! 41
Explications Linux est entré depuis longtemps au cœur de la stratégie des grands groupes industriels THALES THOMSON/Technicolor (depuis 1997) SAGEMCOM / SAGEM Défense EADS Opérateurs de Télécom Orange (impose Linux à ses sous-traitants) Free a toujours utilisé Linux Les autres suivent (SFR, Bouygues) 42
Explications, suite Évolution du marché des télécoms (convergence téléphonie/internet) Linux arrive au niveau des «terminaux» (Android) et concurrence les OS spécialisés comme Symbian ou Windows Linux est omniprésent au niveau des routeurs grand public Les projets s communautaires (ex: OpenWrt) deviennent viables pour les industriels (SFR) Des solutions techniques «temps réel» sont disponibles sur Linux (PREEMPT-RT, RTAI, Xenomai) Meilleure confiance des décideurs 43
Évolution du modèle «éditeur» 44
Modèle éditeur, suite La situation a un peu évoluée depuis car l'offre commerciale s'est étoffée : Wind River MontaVista... Chacun se partage environ 30 % du marché, le dernier tiers concerne les distributions «s» L'activité d'un éditeur Linux est également liée à du service Les éditeurs sont de gros contributeurs aux projets s (exemple : Wind River et KGDB, CDT,...) 45
Exemples de produits sous Linux 46
Linksys WRT54GL 47
SIP Box (PABX) 48
Livebox 49
Freebox 50
Freebox v6 (Atom / ARM) 51
Questions? 52