Presentation Open Wide 18 avril 2012 Technifutur SE
Transcription
Presentation Open Wide 18 avril 2012 Technifutur SE
Systèmes embarqués et logiciel libre Pierre Ficheux ([email protected]) Avril 2012 Systèmes embarqués et logiciel libre 1 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 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 Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 3 Domaines d’utilisation Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 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) Systèmes embarqués et logiciel libre 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) Systèmes embarqués et logiciel libre 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) Systèmes embarqués et logiciel libre 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 ! Systèmes embarqués et logiciel libre 9 Approches asynchrone / synchrone ● ● Asynchrone – 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 Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 11 Le logiciel libre Systèmes embarqués et logiciel libre 12 Le logiciel libre, introduction ● ● A peu près équivalent à la notion d'open source, voir http://www.opensource.org La confusion vient de la signification anglaise – ● free = libre / 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 libre: sources disponibles, licence open source, non liée à la notion de gratuité (on peut vendre un logiciel libre) Systèmes embarqués et logiciel libre 13 Logiciel libres, quelques éléments ● ● ● ● ● Le logiciel libre n'est pas forcément gratuit La migration vers du logiciel libre n'est JAMAIS gratuite => le « coût du changement » Les licences, même libres 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 Systèmes embarqués et logiciel libre 14 Les licences libres ● ● ● ● Doivent être compatibles avec le modèle libre, 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_libre Systèmes embarqués et logiciel libre 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) Systèmes embarqués et logiciel libre 16 Quelques projets libres 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) ... Systèmes embarqués et logiciel libre 17 Avantages/inconvénients du logiciel libre ● ● 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 Systèmes embarqués et logiciel libre 18 Les (RT)OS libres Systèmes embarqués et logiciel libre 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) Systèmes embarqués et logiciel libre 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 (libre / POSIX) – RTEMS (libre / POSIX) – Micro-C-OS II (8 bits ou plus) Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 22 RTEMS ● ● ● ● ● ● ● ● ● Real-Time Executive for Missile/Military Systems → RTE for Multiprocessor Systems Développé depuis 1988, libre 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 Systèmes embarqués et logiciel libre 23 Les outils Systèmes embarqués et logiciel libre 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 libre Systèmes embarqués et logiciel libre 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 ! Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 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 » Systèmes embarqués et logiciel libre 28 Quelques outils de production libres ● ● ● ● 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, ... Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 30 Buildroot Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 33 Sondes JTAG ● ● ● GDB → gdbserver / KGDB Sondes JTAG commerciales (Abatron, Wind River, …) → €€€ OpenOCD (libre) Systèmes embarqués et logiciel libre 34 Outils « 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) Systèmes embarqués et logiciel libre 35 Linux: tendances Systèmes embarqués et logiciel libre 36 Les tendances 2003-2007 Systèmes embarqués et logiciel libre 37 Linux foundation (2010) Systèmes embarqués et logiciel libre 38 Linux foundation (2010), suite Systèmes embarqués et logiciel libre 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 Systèmes embarqués et logiciel libre 40 Évolution du modèle, dès 2007 ! Systèmes embarqués et logiciel libre 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) Systèmes embarqués et logiciel libre 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 libres 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 Systèmes embarqués et logiciel libre 43 Évolution du modèle « éditeur » Systèmes embarqués et logiciel libre 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 « libres » L'activité d'un éditeur Linux est également liée à du service Les éditeurs sont de gros contributeurs aux projets libres (exemple : Wind River et KGDB, CDT, ...) Systèmes embarqués et logiciel libre 45 Exemples de produits sous Linux Systèmes embarqués et logiciel libre 46 Linksys WRT54GL Systèmes embarqués et logiciel libre 47 SIP Box (PABX) Systèmes embarqués et logiciel libre 48 Livebox Systèmes embarqués et logiciel libre 49 Freebox Systèmes embarqués et logiciel libre 50 Freebox v6 (Atom / ARM) Systèmes embarqués et logiciel libre 51 Questions ? Systèmes embarqués et logiciel libre 52