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