Syst[PleaseinsertPrerenderUnicode{è}intopreamble]
Transcription
Syst[PleaseinsertPrerenderUnicode{è}intopreamble]
Systèmes temps réel et systèmes embarqués Systèmes embarqués Jacques Gangloff, Loı̈c Cuvillon Ecole Nationale Supérieure de Physique de Strasbourg 14 février 2012 Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 1 / 31 Plan Plan 1 Introduction Concepts de base Statistiques / tendances Exemples d’utilisation Avantages/Inconvénients de linux 2 Mémoire embarquée Le stockage non volatile 3 Programmation d’un système embarqué La compilation croisée Emulation 4 Examples Android NxtOSEK pour Lego Mindstorms Gumstix Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 2 / 31 Introduction Plan 1 Introduction Concepts de base Statistiques / tendances Exemples d’utilisation Avantages/Inconvénients de linux 2 Mémoire embarquée Le stockage non volatile 3 Programmation d’un système embarqué La compilation croisée Emulation 4 Examples Android NxtOSEK pour Lego Mindstorms Gumstix Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 3 / 31 Introduction Définition Définition Un système embarqué (Embedded system en anglais) désigne un matériel électronique comprenant au moins un microprocesseur (ou microcontrôleur) et un logiciel dédié à sa gestion. Exemples de systèmes embarqués : téléphone mobile, navigateur GPS, routeur ethernet (Box Adsl), lecteur de DVD, contrôleur d’injection moteur, télécommande, électroménager, ... Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 4 / 31 Introduction Concepts de base Contraintes Les systèmes embarqués ont des contraintes spécifiques : ◮ ◮ ◮ ◮ ◮ ◮ Coût très bas Encombrement réduit Robustesse aux chocs, à la température, à l’humidité. Autonomie donc faible consommation Bonnes performances Temps de démarrage court Caractéristiques Ces contraintes entraı̂nent des caractéristiques particulières : ◮ ◮ ◮ ◮ ◮ Stockage de masse sans entraı̂nement mécanique (robustesse aux chocs, consommation, temps de démarrage) Processeurs basse consommation (consommation, dissipation) Mémoire vive et mémoire de masse de taille limitée (coût, encombrement, temps de démarrage) Processeurs avec fonctionnalités minimum (coût, consommation, encombrement) Processeurs intégrant plusieurs fonctions (system on chip ou SoC) Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 5 / 31 Introduction Statistiques / tendances Types de processeurs Historique de l’utilisation des processeurs Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 6 / 31 Introduction Statistiques / tendances Types de processeurs Tendances futures d’utilisation des processeurs Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 7 / 31 Introduction Statistiques / tendances Utilisation de linux pour l’embarqué Linux pour l’embarqué comparé à d’autres OS Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 8 / 31 Introduction Statistiques / tendances Début 2012 2012 Q1 : Arm et Android ARM équipe 92% des systèmes embarqués (source : Fitzpatrick, J. (2011). ”An interview with Steve Furber”. Communications of the ACM.) dont la quasi-totalité des smartphones : 1 2 3 Iphone/Ipad : Apple A5 (SOC avec core ARM Cortex A9) fondu par Samsung Samsung Galaxy S : Exynos (SOC avec core ARM Cortex A9) fondu par Samsung HTC desire : Snapdragon (SOC avec CPU ARM Cortex A8) fondu par Qualcomm Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 9 / 31 Introduction Exemples d’utilisation Par domaine d’application PDA / tablettes : Zaurus, Nokia N800, XO, Sony MYLO... Téléphones : Motorola, NEC, Panasonic, ... Robotique : nomadic, barrett robotics, HRP Audio/Vidéo : Lecteur de DVD Dlink, convertisseurs Hauppage, pinnacle audio athenaeum, caméra wifi TRENDNET Modems / routeurs Wifi : pratiquement tous Autres : PlayStation 3, GPS TomTom, FreeBox, caméra intelligente Sony XCI-SX1 Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 10 / 31 Introduction Avantages/Inconvénients de linux Avantages de linux Gratuit Multi-plateformes Sources disponible (nombreux exemples) Outils de développement performants Adapté aux processeurs sans MMU Robuste Version temps-réel Inconvénients de linux Pas de support technique contractuel Obligation de publier les sources (pas de module binaire dans le noyau) Pas adapté aux systèmes à taille mémoire très réduite (¡4 Mo) Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 11 / 31 Introduction Avantages/Inconvénients de linux Références http://linuxdevices.com/ http://uuu.enseirb.fr/˜kadionik/embedded/embeddedlinux.html http://free-electrons.com/ http://uuu.enseirb.fr/˜kadionik/formation... .../embeddedlinux/introduction.html Linux magazine hors série No 25, Avril/Mai 2006. http://en.wikipedia.org/wiki/Flash_memory Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 12 / 31 Mémoire embarquée Plan 1 Introduction Concepts de base Statistiques / tendances Exemples d’utilisation Avantages/Inconvénients de linux 2 Mémoire embarquée Le stockage non volatile 3 Programmation d’un système embarqué La compilation croisée Emulation 4 Examples Android NxtOSEK pour Lego Mindstorms Gumstix Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 13 / 31 Mémoire embarquée Le stockage non volatile 2 technologies Mémoire flash NOR ou NAND. Piéger des électrons dans la grille d’un transistor MOS. Durée théorique du piégeage : 10 ans. NOR : rapide en lecture, lent en écriture, permet XIP. NAND : lecture par bloc, plus endurant que la NOR (environ 10x plus de cycles). Gestion des erreurs : micro-contrôleur embarqué (SD-card, MemoryStick, CF-cards) ou géré directement par l’OS (jffs2 sous linux). SD card 2 Go : 2x 1go chips NAND 1 chip controller en bas Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 14 / 31 Programmation d’un système embarqué Plan 1 Introduction Concepts de base Statistiques / tendances Exemples d’utilisation Avantages/Inconvénients de linux 2 Mémoire embarquée Le stockage non volatile 3 Programmation d’un système embarqué La compilation croisée Emulation 4 Examples Android NxtOSEK pour Lego Mindstorms Gumstix Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 15 / 31 Programmation d’un système embarqué La compilation croisée La compilation croisée Compilation effectuée sur une machine puissante avec code assembleur généré pour le CPU du sustème embarqué. Le code est transmis au système embarqué par une procédure du ”flashage”. La compilation est rarement réalisée sur le système embarqué lui-même car il n’inclut pas les outils de développement très consommateurs de place (200 Mo pour gcc). L’environnement de compilation croisée s’appelle toolchain. Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 16 / 31 Programmation d’un système embarqué Emulation Emulation Pour accélérer le développement on peut développer le système dans un émulateur (Qemu, Bochs, VMWare, ...) On peut brancher un débogueur sur l’émulateur, figer la machine émulé On peut démarrer plusieurs machines virtuelles sur la même machine physique Limitation : le matériel émulé ne se comporte pas tout à fait comme le matériel réel Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 17 / 31 Examples Plan 1 Introduction Concepts de base Statistiques / tendances Exemples d’utilisation Avantages/Inconvénients de linux 2 Mémoire embarquée Le stockage non volatile 3 Programmation d’un système embarqué La compilation croisée Emulation 4 Examples Android NxtOSEK pour Lego Mindstorms Gumstix Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 18 / 31 Examples Android Developpement d’applications sous Android Compilation croisée pour ARM et API Android : Android SDK. Emulateur Smartphone : basé sur qemu. Déboguage : avec client ADB (android debug bridge) sur -l’émulateur -un smartphone connecté en USB. Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 19 / 31 Examples NxtOSEK pour Lego Mindstorms OSEK 1 système d’exploitation temps réel développé dans les années 90 par BMW, Bosch, DaimlerChrysler, Opel, Siemens, VW, Renault. pour équiper les ECU (Electronic control Unit) embarqués dans l’automobile : -Injection -Verrouillage porte -Airbag -ABS architecture complète en 3 systèmes : -le système d’exploitation -gestion du réseau (bus : CAN,...) -communication entre ECU Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 20 / 31 Examples NxtOSEK pour Lego Mindstorms OSEK : propriété du système d’exploitation Noyau (système) statique ! -nombre de tâche, sémaphores définis à la compilation du système -un fichier en langage OIL définit le nombre et la propriété des tâches -le système se résume à 1 seul binaire contenant le système et les tâches → l’équivalent de pthread create() ou fork() n’existe donc pas → très faible empreinte mémoire sur un micro-controlleur ordonnancement préemptif à priorité fixe. Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 21 / 31 Examples NxtOSEK pour Lego Mindstorms OSEK : objets statiques disponibles TASK : définit une tâche EVENT : définit un événement sur lequel peut bloquer une tâche COUNTER : définit un compteur ALARM : déclenche une action après un nombre de compte du compteur -actions : ACTIVATETASK pour activer une tâche (crée 1 tâche périodique) - SETEVENT : déclence un événement RESSOURCE : définit un sémaphore pour protéger une ressource Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 22 / 31 Examples NxtOSEK pour Lego Mindstorms OSEK : propriété des tâches Tâche -4 états : Ready, Running, Waiting, Suspended -Waiting : la tâche bloque en attente d’un événement -Suspended : Tâche terminée = inactive La tâche passe à l’état ’Suspended’ avec l’appel TerminateTask() ; (obligatoire à la fin du code de la tâche) Une tâche ne peut être suspendre par une autre tâche. Propriété d’une tâche : -PRIORITY : 1-15 -SCHEDULE : FULL (préemptible) ou NON (non-preemptible) -ACTIVATION : nbre d’activation parralèlle (1=tâche doit finir pour pouvoir redémarrer) -AUTOSTART : si actif au démarrage de l’os Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 23 / 31 Examples NxtOSEK pour Lego Mindstorms Etat d’une tâche Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 24 / 31 Examples NxtOSEK pour Lego Mindstorms Génération du système (1 binaire unique) Un fichier de configuration .oil déclarant les objets et leurs propriétés un traducteur du .oil en .c et le code c de chacune des tâches Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 25 / 31 Examples NxtOSEK pour Lego Mindstorms NxtOSEK 1 système OSEK pour le lego NXT lego NXT (256 Ko Flash, 56Ko de RAM) périphèriques : capteurs et actionneurs API : nxt motor set speed() ecrobot get touch sensor() ”Flashage” du système utilitaire nextool : copie du binaire en flash par USB le firmware du NXT permet d’exécuter le binaire le binaire écrase en RAM le firmware par le système OSEK Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 26 / 31 Examples NxtOSEK pour Lego Mindstorms NxtOSEK : 1 exemple 2 tâches de périodes 1 et 500ms chaque tâche modifie la vitesse d’un moteur fichier de configuration : example.oil 1 2 3 2 taches de priorité différentes 1 compteur utilisé par les alarmes 2 alarmes de périodes 1 et 500 ms ayant pour action d’activer les tâches fichier d’instruction pour les tâches : example.c Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 27 / 31 Examples NxtOSEK pour Lego Mindstorms example.oil /* Definition of application mode */ APPMODE appmode1{}; /* Definition of Task1 */ TASK Task1 { AUTOSTART = FALSE; PRIORITY = 3; ACTIVATION = 1; SCHEDULE = FULL; STACKSIZE = 512; /* Stack size */ }; /* Definition of Task2 */ TASK Task2 { AUTOSTART = FALSE; PRIORITY = 2; ACTIVATION = 1; SCHEDULE = FULL; STACKSIZE = 512; /* Stack size */ }; Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 28 / 31 Examples NxtOSEK pour Lego Mindstorms /* Definition of OSEK Alarm Counter */ COUNTER SysTimerCnt { MINCYCLE = 1; MAXALLOWEDVALUE = 10000; TICKSPERBASE = 1; /* One tick is equal to 1msec */ }; /* Definition of Task1 execution timing */ ALARM cyclic_alarm1 { COUNTER = SysTimerCnt; ACTION = ACTIVATETASK { TASK = Task1; }; AUTOSTART = TRUE { ALARMTIME = 1; CYCLETIME = 1; /* Task1 is executed every 1msec */ APPMODE = appmode1; }; }; /* Definition of Task2 execution timing */ ALARM cyclic_alarm2 { COUNTER = SysTimerCnt; ACTION = ACTIVATETASK { TASK = Task2; }; AUTOSTART = TRUE { ALARMTIME = 1; CYCLETIME = 500; /* Task2 is executed every 500msec */ APPMODE = appmode1; }; }; }; Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 29 / 31 Examples NxtOSEK pour Lego Mindstorms example.c /* OSEK declarations */ DeclareCounter(SysTimerCnt); DeclareTask(Task1); DeclareTask(Task2); /* Task1 executed every 1msec */ TASK(Task1) { if (ecrobot_get_touch_sensor(NXT_PORT_S1)) nxt_motor_set_speed(NXT_PORT_A, 0, 1); else nxt_motor_set_speed(NXT_PORT_A, 50, 1); TerminateTask(); } /* Task2 executed every 500msec */ TASK(Task2) { if (ecrobot_get_touch_sensor(NXT_PORT_S1)) nxt_motor_set_speed(NXT_PORT_B, 0, 1); else nxt_motor_set_speed(NXT_PORT_B, 50, 1); TerminateTask(); } Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 30 / 31 Examples Gumstix Gumstix (cf TP 3) Micro-carte mère ARM (64 Mo RAM et 16 Mo Flash) Buildroot (ensemble de scripts) compile : -1 noyau Linux 2.6 ARM -busybox pour ARM (1 binaire pour la majorité des commandes shell linux) -1 Toolchain : gcc pour cible ARM Emulation : qemu architecture ARM Flashage du noyau et système de fichiers JFFS2 : - utilisation du u-boot (≈ bios du gumstix) - avec la liaison serie Jacques Gangloff (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2007-2008 31 / 31