8
Le système RTEMS © ENST - 2005 158 Le système RTEMS Bertrand Dupouy Le système RTEMS © ENST - 2005 159 Plan • Présentation • Matériel supportés • Gestion des tâches • Gestion de la mémoire • Communications entre threads • Timers • Implantation de pilotes de périphériques • Réseau • outils de mise au point • Divers

3-RTEMS-INF342

Embed Size (px)

Citation preview

  • Le systme RTEMS

    ENST - 2005 158

    Le systme RTEMS

    Bertrand Dupouy

    Le systme RTEMS

    ENST - 2005 159

    Plan

    Prsentation

    Matriel supports

    Gestion des tches

    Gestion de la mmoire

    Communications entre threads

    Timers

    Implantation de pilotes de priphriques

    Rseau

    outils de mise au point

    Divers

  • Le systme RTEMS

    ENST - 2005 160

    Prsentation

    http://www.oarcorp.com

    Caractristiques :

    - open-source : on a accs tous les sources, on peut les modifier, les distribuer

    - cest un excutif, pas un systme : lexcutif est link avec lapplication et donne un excutable qui doit tre charg sur la cible,

    - avantage dun excutif : plus petit quun sysme (on ne charge que les primitives dont on a besoin), RTEMS peut tourner sur une dizaine de K octets

    - RTEMS est arriv maturit

    - Il utilise lenvironnement de dveloppement GNU/gcc :

    o Nombreux compilateurs croiss, pratiquement pour toutes les architectures 32 bits

    o Nombreux formats de fichiers excutables, o remote gdb o Dveloppements sur RTEMS en C, C++, Ada

    Le systme RTEMS

    ENST - 2005 161

    Prsentation

    - Conception modulaire par sparation des :

    o API (RTEMS ou POSIX), o Bibliothques (managers), o CPU (Types de processeurs), o boards (notion de board support package ou BSP)

    Application

    RTEMS avec les seuls managers ncessaires

    Fonctions dpendantes du processeur

    Fonctions dpendantes du BSP

    Matriel

    Matriels supports :

    - Famille Motorola MC68xxx et PowerPC, Intel i386 et i960, MIPS, HP PA-RISC, sur toutes sortes de boards

    - Ces cibles peuvent tre utilises en multiprocesseur, sans migration

  • Le systme RTEMS

    ENST - 2005 162

    Prsentation

    Caractristiques :

    - RTEMS propose plusieurs API, dont POSIX 1003.1b

    - Les primitives systmes sont regroupes par type dans des managers

    - On cr un excutable en linkant le code de lapplication avec le noyau, on indique, pour chaque application, quels managers sont utiliss

    - La mise au point peut se faire distance via une ligne srie ou un cble Ethernet

    - Le noyau fonctionne sur des architectures multiprocesseurs, mais les tche ne peuvent pas migrer

    - Il existe une version Unix qui permet de simuler

    Espace disque pour lenvironnement de dveloppement :

    - gcc et bibliothques : 250 M octets

    - source de RTEMS = environ 95 M octets

    Le systme RTEMS

    ENST - 2005 163

    Gestion des Tches

    Pas despaces dadressage spars, les tches sont donc des threads

    API spcifique et API POSIX.

    Politique dordonnancement :

    - event driven, base sur les priorits (255 niveaux, 1 est maximum, linverse avec POSIX), premptive

    - RMS,

    - tches sporadiques avec lAPI POSIX

    Attention : il faut dfinir le nombre maximal de threads pour chaque application, ce nombre dpend de la mmoire disponible

    Les tches peuvent tre cres et dtruites dynamiquement

  • Le systme RTEMS

    ENST - 2005 164

    Gestion Des tches (suites)

    Pas de protection des espaces dadressage,

    Gestion mmoire dynamique par blocs allocation de blocs de taille variable (memory chunks), (malloc et free),

    Gestion par le Region Manager,

    Communications entre tches : lAPI POSIX 1003.1b IPC est implante

    Le systme RTEMS

    ENST - 2005 165

    Synchronisation : Smaphores

    Verrous, smaphores, avec ou sans timeout, nomms ou non, gr par le Semaphore Manager

    - locaux, globaux

    - oprations P et V (Dijkstra) : rtems_semaphore_obtain et rtems_semaphore_release, option NOWAIT

    - oprations Init (Dijkstra) : rtems_semaphore_create options : LOCAL/GLOBAL, PRIO : PCP/PIP/STANDARD, FA : FIFO/PRIORITY

    - API POSIX implante pour les verrous (pthread_mutex_lock, ),

    Gestion des priorits :

    - pour les verrous locaux seulement

    - PIP (Priority Inheritance Protocol), hritage de priorit :

    - PCP (Priority Ceiling Protocol), priorit plafonne,

  • Le systme RTEMS

    ENST - 2005 166

    Synchronisation : Variables conditionnelles

    servent mettre un thread en attente de vrification d'une condition,

    implantation de lAPI POSIX : association d'un mutex et d'une variable dite conditionnelle

    fonctions de gestion :

    pthread_cond_init(&VarCond,NULL),

    pthread_cond_destroy(&VarCond),

    pthread_cond_wait(&VarCond, &Verrou),

    pthread_cond_timedwait(&VarCond, &Verrou, &Tempo),

    pthread_cond_signal(&VarCond),

    pthread_cond_broadcast(&VarCond)

    le wait est toujours bloquant, la diffrence d'une opration P sur un smaphore .Il fait passer le thread l'tat bloqu ET rend le verrou de faon atomique. Quand le thread sort de l'tat bloqu sur un signal ou broadcast, il essaie de reprendre le verrou

    l'vnement de rveil (signal, broadcast) n'est pas mmoris : si aucun thread ne l'attend, il est perdu (diffrent de V sur un smaphore)

    Le systme RTEMS

    ENST - 2005 167

    Les Messages

    Grs par le Message Manager :

    Primitives bloquantes on non bloquantes

    API POSIX disponible :

    Fonction Description mq_close

    Fermer une file de messages

    mq_getattr Renvoie les caractristiques dune file de messages

    mq_open Ouvrir une file de message mq_receive Extraire un message dune file mq_send Dposer un message dans une file mq_setattr Changer les attributs dune file mq_unlink Dtruire une file de messages

  • Le systme RTEMS

    ENST - 2005 168

    Les signaux, timers, Events, interrupts

    Signal Manager .

    - gestion par ASR dfinie par le thread courant qui est excute quand le signal est dlivr au thread

    API POSIX :

    Fonction Description Sigqueue Queue a signal to a process Sigwaitinfo Attendre un signal et une info. Sigtimedwait Attendre un signal avec une

    chance

    La rsolution du timer (dure du tic) peut tre dfinie au niveau du

    BSP

    Les interruptions ne sont pas converties en signaux ou autres vnements, elles sont gres par des fonctions C associes au vecteur dinterruption:

    Les fonctions qui grent les IT sappellent des ISR et sont attaches aux vecteurs dinterruption par la primitive

    rtems_interrupt_catch()

    Le systme RTEMS

    ENST - 2005 169

    0rdonnancement RMS

    On va crer une priode lintrieur dune tche :

    - appel rate_monotonoc_create,

    - elle est implant sous forme dun Period Control Block,

    - chaque PCB est associ un identificateur unique,

    - le PCB contient ltat de la priode, initialis inactive

    Changements dtats pour une priode par appel rate_monotonoc_create :

    - ni active, ni expire, alors initialise : period ticks et retour tche courante,

    - si active, alors la tche est bloque pendant le reste de la priode courante, lexpiration de celle-ci, la priode est rinitialise et la tche redmarre,

    - si la priode a expir avant lappel rate_monotonoc_period,alors la tche sort en time-out,

    Pour dmarrer la priode:

    - la faire passer ltat active (appel rate_monotonoc_period

  • Le systme RTEMS

    ENST - 2005 170

    Implantation

    Une interruption est gnre chaque clock_tick :

    - elle est gre par un ISR qui appelle une fonction RMS lorsque le nombre de clock_ticks atteint la priode

    - cette fonction rinitialise le compteur de lISR et change ltat de la priode pour dbloquer la tche associe

    Il y a un timer par priode

    Le systme RTEMS

    ENST - 2005 171

    Exemple : Gestion RMS

    Mise en uvre dune gestion RMS :

    #define T 10

    rtems_rate_monotonic_create (nom, &Periode) ;

    while () {

    Etat = rtems_rate_monotonic_period(Periode, T) ;

    if (Etat == RTEMS_TIMEOUT) break ;

    /***** Code excuter (C1, C2, C3) *****/

    }

    /***** Echance dpasse *****/

  • Le systme RTEMS

    ENST - 2005 172

    Exemple : Gestion RMS

    rtems_rate_monotonic_period : initialise un PCB pour grer la

    priode

    Les appels rtems_rate_monotonic_period :

    - Appel 1 (comportement spcifique dinitialisation) : priode initialise T (ici 10), la tche ressort immdiatement de la fonction,

    - Appel 2 : la tche est bloque pendant T- C1

    - Appel 3 : la tche est bloque pendant T- C2

    - Appel 4 : C3 > T, lchance est dpasse, la tche ressort immdiatement avec un message derreur,

    Tche critique et gestion RMS :

    - si certaines tches sont critiques (strict respect des chances) et dautres, non :

    o affecter des priorits telles que celle de la tche critique la moins prioritaire soit plus prioritaire que la tche non-critique la plus prioritaire

    o en cas de surcharge, seules les tches critiques respecteront leurs chances,

    Le systme RTEMS

    ENST - 2005 173

    Exemple : Fichier system.h

    Un extrait du fichier system.h illustre ce qui est fait pour ne charger que les managers utiliss :

    /* configuration information */ #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_MAXIMUM_POSIX_THREADS 1 #define CONFIGURE_MAXIMUM_POSIX_KEYS 10 #define CONFIGURE_MAXIMUM_POSIX_MUTEXES 10 #define CONFIGURE_POSIX_INIT_THREAD_TABLE #include