Vous êtes sur la page 1sur 8

Le systme RTEMS

Le systme RTEMS

Plan

Prsentation

Le systme RTEMS

Matriel supports Gestion des tches Gestion de la mmoire Communications entre threads Timers

Bertrand Dupouy

Implantation de pilotes de priphriques Rseau outils de mise au point Divers

ENST

- 2005

158

ENST

- 2005

159

Le systme RTEMS

Le systme RTEMS

Prsentation
http://www.oarcorp.com

Prsentation
- Conception modulaire par sparation des : o API (RTEMS ou POSIX),

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

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

ENST

- 2005

160

ENST

- 2005

161

Le systme RTEMS

Le systme RTEMS

Prsentation

Gestion des Tches

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

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

ENST

- 2005

162

ENST

- 2005

163

Le systme RTEMS

Le systme RTEMS

Gestion Des tches (suites)

Synchronisation : Smaphores

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

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,

ENST

- 2005

164

ENST

- 2005

165

Le systme RTEMS

Le systme RTEMS

Synchronisation : Variables conditionnelles

Les Messages

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)

Grs par le Message Manager : Primitives bloquantes on non bloquantes API POSIX disponible : Fonction
mq_close mq_getattr mq_open mq_receive mq_send mq_setattr mq_unlink

Description Fermer une file de messages Renvoie les caractristiques dune file de messages Ouvrir une file de message Extraire un message dune file Dposer un message dans une file Changer les attributs dune file Dtruire une file de messages

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)

ENST

- 2005

166

ENST

- 2005

167

Le systme RTEMS

Le systme RTEMS

Les signaux, timers, Events, interrupts

0rdonnancement RMS
On va crer une priode lintrieur dune tche :

Signal Manager . - gestion par ASR dfinie par le thread courant qui est excute quand le signal est dlivr au thread API POSIX : Fonction Sigqueue Sigwaitinfo Sigtimedwait Description Queue a signal to a process Attendre un signal et une info. Attendre un signal avec une chance

- 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,

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()

Pour dmarrer la priode: - la faire passer ltat

active

(appel

rate_monotonoc_period
ENST

ENST

- 2005

168

- 2005

169

Le systme RTEMS

Le systme RTEMS

Implantation

Exemple : Gestion RMS

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 Mise en uvre dune gestion RMS :
#define T 10 rtems_rate_monotonic_create (nom, &Periode) ; while () {

Il y a un timer par priode

Etat = rtems_rate_monotonic_period(Periode, T) ; if (Etat == RTEMS_TIMEOUT) break ; /***** } /***** Echance dpasse *****/ Code excuter (C1, C2, C3) *****/

ENST

- 2005

170

ENST

- 2005

171

Le systme RTEMS

Le systme RTEMS

Exemple : Gestion RMS

rtems_rate_monotonic_period

Exemple : Fichier system.h


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

: 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,

/* configuration information */ #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_MAXIMUM_POSIX_THREADS #define CONFIGURE_MAXIMUM_POSIX_KEYS #define CONFIGURE_MAXIMUM_POSIX_MUTEXES #define CONFIGURE_POSIX_INIT_THREAD_TABLE #include <confdefs.h> 1 10 10

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 noncritique la plus prioritaire o en cas de surcharge, seules les tches critiques respecteront leurs chances,
ENST

- 2005

172

ENST

- 2005

173