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