Syst`emes temps réel et syst`emes embarqués
Transcription
Syst`emes temps réel et syst`emes embarqués
Systèmes temps réel et systèmes embarqués Systèmes embarqués Jacques Gangloff, Loı̈c Cuvillon 15 février 2008 Plan Plan Table des matières 1 Introduction 1.1 Plan du cours . . . . . . . . . . . 1.2 Définition . . . . . . . . . . . . . 1.3 Concepts de base . . . . . . . . . 1.4 Statistiques / tendances . . . . . . 1.5 Exemples d’utilisation . . . . . . 1.6 Avantages/Inconvénients de linux . . . . . . 1 1 2 2 2 4 4 2 Le matériel 2.1 Le processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Le stockage non volatile . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 3 Programmation d’un système embarqué 3.1 La compilation croisée . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Emulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 1 Introduction 1.1 Plan du cours Introduction – Définition – Concepts de base – Statistiques / tendances – Exemples d’applications – Avantages / inconvénients de Linux – Références Le matériel 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . – Le processeur – La mémoire non volatile Programmation d’un système embarqué – La compilation croisée – Emulation Exemples – Le Zaurus – L’émulateur QEMU – Compilation sous ARM 1.2 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, lecteur de DVD, contrôleur d’injection moteur, télécommande, électroménager, ... 1.3 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 SoS) 1.4 Statistiques / tendances Types de processeurs 2 Historique de l’utilisation des processeurs Types de processeurs Tendances futures d’utilisation des processeurs Utilisation commerciale de linux 3 Historique d’utilisation de versions commerciales de linux embarqué Utilisation de linux pour l’embarqué Linux pour l’embarqué comparé à d’autres OS 1.5 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 1,2,3, GPS TomTom, FreeBox, caméra intelligente Sony XCI-SX1 1.6 Avantages/Inconvénients de linux Avantages de linux 4 – – – – – – – 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 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 2 Le matériel 2.1 Le processeur Processeur embarqué – Les principales architectures : ARM, MIPS, PowerPC, x86 – Plusieurs déclinaisons : fréquences, fonctionnalités, performances ne sont pas les mêmes en fonction des fondeurs. – Une caractéristique que partage beaucoup de CPU embarqués est l’absence de MMU (Memory Management Unit) Fonctionnalités de la MMU – Traduction adressage virtuel-adressage physique : rend possible l’utilisation d’un swap. – Protection matérielle des accès mémoire : des limites peuvent être définies par processus et en cas de violation le processeur génère une interruption. Avantages/Inconvénients d’un CPU sans MMU Avantages – Simplicité du processeur : la surface du processeur est 30% plus réduite. – Plus rapide : le changement de contexte n’inclut pas la protection mémoire. – Accès complet au matériel sans restriction – Supporté dans linux 2.6 de manière native. Inconvénients 5 – Pas de protection de la mémoire : un processus user peut corrompre tout le système. – Débugage délicat. – Pas de swap. – Consommation importante de la mémoire qui devient fragmentée. uClinux – Version de linux fonctionnant sur CPU sans MMU – Léger : le noyau 2.6 uClinux fait moins de 300 Ko – XIP : eXecution In Place permet d’exécuter du code dans la mémoire flash. Gain de mémoire vive. – Fonctionnalités similaires à un linux classique : API linux complète, noyau préemptif, multithreading, grand nombre de processeurs supportés. – uClibc : version modifiée de libc pour uClinux. 2.2 Le stockage non volatile 2 technologies – Mémoire flash NOR ou NAND. – Principe : 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, CFcards) ou géré directement par l’OS (jffs2 sous linux). – Débits d’une SD-card en 2007 : environ 30 Mo/s en lecture et 20 Mo/s en écriture. 3 Programmation d’un système embarqué 3.1 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. – L’environnement de compilation croisée s’appelle toolchain. 3.2 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 – On peut figer la machine virtuelle dans un état – On peut démarrer plusieurs machines virtuelles sur la même machine physique 6 – Limitation : le matériel émulé ne se comporte pas tout à fait comme le matériel réel 7