Trampoline un support pour le développement d applications temps réel Jean-Luc Béchennec, Mikaël Briday, Sébastien Faucou, Pierre Molinaro et Yvon Trinquet Institut de Recherche en Communications et en Cybernétique de Nantes Nantes - France CNRIUT 2009 - Lille
Plan 2 1. Contexte d un exécutif temps réel 2. Objectifs de Trampoline 3. OSEK/VDX 4. OSEK/OIL 5. Cas d utilisation 6. Dissémination
Applications 3 Grande consommation sèche linge, machine à café,... Hi tech téléphonie, lecteurs MP3, APN,... Automobile ABS, ESP, contrôle moteur,... Avionique, spatial, ferroviaire...
système embarqué? Temps Réel? 4 Embarqué périphériques (imprimantes fax,..) décodeur vidéo grand public Temps réel souple assistant personnel PDA téléphonie mobile automobile contrôle moteur contrôle de production embarqué grand public (cafetière,..) avionique commandes de vol électriques source: I. Puaut dur
Utilisation d un OS Temps Réel? 5 Complexité de l application interruptions Taille du Système (ROM, CPU)
Utilisation d un OS Temps Réel? 5 Complexité de l application Exécutif Temps Réel interruptions Taille du Système (ROM, CPU)
Utilisation d un OS Temps Réel? 5 Complexité de l application Système POSIX,WinCE, Exécutif Temps Réel interruptions Taille du Système (ROM, CPU)
Utilisation d un OS Temps Réel? 5 Complexité de l application Système POSIX,WinCE, Exécutif Temps Réel Java interruptions Taille du Système (ROM, CPU)
Fonctions de base 6 Ordonnancement des tâches entre elles Synchronisation des tâches Communication: interne: entre les tâches externe: avec les tâches sur d autres processeurs Pilotes matériels (drivers) tâche 1 tâche 2 Système d exploitation... tâche n drivers Matériel
Fonctions de base 6 Ordonnancement des tâches entre elles Synchronisation des tâches Communication: interne: entre les tâches externe: avec les tâches sur d autres processeurs Pilotes matériels (drivers) tâche 1 Développement plus rapide indépendant de la cible maintenance du code vérification et estimation du comportement tâche 2 Système d exploitation... tâche n drivers Matériel
Plan 7 1. Contexte d un exécutif temps réel 2. Objectifs de Trampoline 3. OSEK/VDX 4. OSEK/OIL 5. Cas d utilisation 6. Dissémination
Objectifs de Trampoline 8 Développement basé sur la recherche académique et l enseignement. Objectif de portabilité couche d abstraction matérielle et nombreux portages Faible empreinte de mémoire (footprint) partages de contextes et piles. Séparation des structures de données noyau (partie statique en ROM, partie dynamique en RAM). Simplicité d utilisation Un environnement d exécution sur cible UNIX.
Plan 9 1. Contexte d un exécutif temps réel 2. Objectifs de Trampoline 3. OSEK/VDX 4. OSEK/OIL 5. Cas d utilisation 6. Dissémination
OSEK/VDX 10 Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug / Vehicle Distributed executive Industrie automobile et standard ISO Ensemble de spécifications OS COM NM OIL http://www.osek-vdx.org
OSEK/VDX 10 Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug / Vehicle Distributed executive Industrie automobile et standard ISO Ensemble de spécifications OS COM NM OIL http://www.osek-vdx.org
OSEK/VDX 10 Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug / Vehicle Distributed executive Industrie automobile et standard ISO Ensemble de spécifications OS COM NM OIL http://www.osek-vdx.org
OSEK/VDX OS 11 Fonctionnalités de base de l OS : Tâches Ressources (Immediate Priority Ceiling Protocol) Alarmes Services d interruption (ISR) Evénements Politique d ordonnancement à priorité fixe; L application est définie statiquement; Différentes classes de conformités proposées.
OSEK/VDX OS 11 Fonctionnalités de base de l OS : Tâches Ressources (Immediate Priority Ceiling Protocol) Alarmes Services d interruption (ISR) Evénements Politique d ordonnancement à priorité fixe; L application est définie statiquement; Différentes classes de conformités proposées. Approprié pour les systèmes embarqués temps réel de contrôle/commande
Les tâches OSEK 12 Les tâches sont les éléments actifs de l application 2 catégories de tâches dans OSEK/VDX: Les tâches basiques Les tâches étendues Une tâches basique: un code séquentiel (en C) qui doit se terminer code applicatif Appel système de terminaison de tâche mot-clé pour définir une tâche nom de la tâche TASK(tache1) { //instructions //de la tâche TerminateTask(); }
Les tâches OSEK 13 la tâche est inactive Terminate Suspended activate Running start Ready la tâche a le processeur preempt La tâche est prête (attente du processeur)
Plan 14 1. Contexte d un exécutif temps réel 2. Objectifs de Trampoline 3. OSEK/VDX 4. OSEK/OIL 5. Cas d utilisation 6. Dissémination
Déclaration d une tâche OSEK 15 Certains paramètres doivent être fournis: la priorité (qui est fixe); le mode de préemption (préemptif ou non); l état de la tâche au démarrage (suspended ou ready) le nombre maximales d activations Certains paramètres sont spécifiques à la cible: taille de pile: mémoire où sont stockées les variables locales, les retours des appels de fonctions imbriqués.
Implémentation des tâches dans Trampoline 16 Descripteur de tâche de Trampoline *static_desc *resources activate_count priority state evt_set evt_wait tpl_task context stack *entry id base_priority max_activate_count type void f(void) { } TerminateTask(); Les structures de données internes ne sont pas normalisées...
Implémentation des tâches dans Trampoline 16 Descripteur de tâche de Trampoline dépendant de la cible *static_desc *resources activate_count priority state evt_set evt_wait tpl_task context stack *entry id base_priority max_activate_count type void f(void) { } TerminateTask(); Les structures de données internes ne sont pas normalisées...
Implémentation des tâches dans Trampoline 16 Descripteur de tâche de Trampoline ROM *static_desc *resources activate_count priority state evt_set evt_wait tpl_task context stack *entry id base_priority max_activate_count type void f(void) { } TerminateTask(); Les structures de données internes ne sont pas normalisées...
Implémentation des tâches dans Trampoline 16 Descripteur de tâche de Trampoline ROM RAM *static_desc *resources activate_count priority state evt_set evt_wait tpl_task context stack *entry id base_priority max_activate_count type void f(void) { } TerminateTask(); Les structures de données internes ne sont pas normalisées...
OIL: Osek Implementation Language 17 Spécifie la structure de l application Configuration de l OS (section implementation) Description des objets (section application): Tâches interruptions Compteurs Alarmes Ressources Evénements Messages...
GOIL: compilateur OIL pour Trampoline 18 Compiler écrit en Galgas (générateur de compilateur) Fonctionne sous Unix et Windows Étendu pour la description des objets AUTOSAR
Déclaration d une tâche OSEK dans OIL 19 priorité statique de la tâche TASK matache { PRIORITY = 2; AUTOSTART = FALSE; ACTIVATION = 1; SCHEDULE = NON; STACKSIZE = 256; }; état de la tâche au démarrage de l OS: - READY si la AUTOSTART = TRUE - SUSPENDED si la AUTOSTART = FALSE Nombre maximal d activation (au delà, les activations ne sont pas enregistrées) mode d ordonnancement: - FULL: la tâche est préemptible - NON: la tâche n est pas préemptible Extension spécifique à la cible: la taille de la pile
Plan 20 1. Contexte d un exécutif temps réel 2. Objectifs de Trampoline 3. OSEK/VDX 4. OSEK/OIL 5. Cas d utilisation 6. Dissémination
Un exemple simple 21 2 tâches périodiques: Mets une sortie logique à 1 Allume une diode LED Le code utile de la tâche est une boucle d'attente active, Eteint la diode LED La sortie logique est remise à 0 C167 P7.0 P7.1 P2.10 P2.11 LED0 LED1 COMP0 COMP1
Un exemple simple 22 Structure fonctionnelle: action temporaire logicielle activatetask Tache1 COMP0 Alarm Task LED0 action permanente matérielle action temporaire logicielle activatetask Tache2 COMP1 Alarm Task LED1 action permanente matérielle
description textuelle OIL 23 COUNTER General_counter { TICKSPERBASE = 1; MAXALLOWEDVALUE = 255; MINCYCLE =1; }; TASK Tache1 { PRIORITY = 5; AUTOSTART = FALSE; }; définition des 2 tâches TASK Tache2 { PRIORITY = 3; AUTOSTART = FALSE; }; ALARM Active_Tache1 { COUNTER = General_counter; ACTION = ACTIVATETASK { TASK = Tache1; }; AUTOSTART = TRUE { ALARMTIME = 1; CYCLETIME = 5; APPMODE=std; }; définition des 2 alarmes }; ALARM Active_Tache2 { COUNTER = General_counter; ACTION = ACTIVATETASK { TASK = Tache2; }; AUTOSTART = TRUE { ALARMTIME = 1; CYCLETIME = 5; APPMODE=std; }; };
Code applicatif 24 TASK(Tache1) { volatile int i; COMP0 = 1; LED0 = 1; for (i=0; i<6700; i++); LED0 = 0; COMP0 = 0; TerminateTask(); } int main(void) { inites(); StartOS(OSDEFAULTAPPMODE); } tache1 Suspended Running Suspended tache2 Suspended Ready Running Suspended
Plan 25 1. Contexte d un exécutif temps réel 2. Objectifs de Trampoline 3. OSEK/VDX 4. OSEK/OIL 5. Cas d utilisation 6. Dissémination
Utilisation pédagogique 26 IUT de Nantes - GEII - cours MCII2; Licence Pro (Nantes, Rennes); École d ingénieur (Angers, Toulouse); Mastère à Nantes il est aisé de moduler la difficulté en intervenant sur le niveau de conception; nombreux portages: l'arm7 (Arm), l'avr (Atmel), le H8300h (Hitachi), S12X (Freescale), PowerPC 565 (Freescale), C167 (Infineon) et le V850e (Nec)... et POSIX (Linux, MacOSX,...)
Outil de recherche / valorisation 27 projets O4A - O4A phase 2 intégré dans l offre commerciale de Geensys tests fonctionnels réalisés par Kereval partenariat avec le LAAS/Renault travaux concernant la robustesse des systèmes embarqués l ANR Scarlet Utilisation par Trialog (robustesse) Ordonnancement feedback scheduling
Conclusion 28 Présentation de OSEK/OS et OIL facilité de mise en oeuvre Trampoline est une implémentation du standard OSEK/VDX logiciel libre (GNU LGPL / BSD) Portable Valorisé au niveau enseignement, recherche et valorisation.
Conclusion 28 Présentation de OSEK/OS et OIL facilité de mise en oeuvre Trampoline est une implémentation du standard OSEK/VDX logiciel libre (GNU LGPL / BSD) Portable Valorisé au niveau enseignement, recherche et valorisation. http://trampoline.rts-software.org
Conclusion 28 Présentation de OSEK/OS et OIL facilité de mise en oeuvre Trampoline est une implémentation du standard OSEK/VDX? logiciel libre (GNU LGPL / BSD) Portable Valorisé au niveau enseignement, recherche et valorisation. http://trampoline.rts-software.org
How to use Trampoline 29 VIPER : Virtual Processor. Ease of use of a Unix based execution environment. Host machine Task1 Task 2 Trampoline OSEK kernel... Tn IT VIPER VIrtual Processor EmulatoR UNIX based Host Operating System (Mac OS X, Linux,..) Unix process POSIX signal IT OSEK application tasks Interrupt handler of Trampoline