Vous êtes sur la page 1sur 9

Prsentation RTAI

TABLE DES MATIERES

1.
2.
3.
3
3
3
3
3
3
3
3
3
4.
5.

Introduction......................................................................2
Larchitecture RTAI............................................................2
Caractristiques................................................................4
. 1 . Planificateur de tches...............................................4
. 2 . Planification priodique et one-shot...........................4
. 3 . Opration en virgule flottante....................................4
. 4 . Gestion des interruptions...........................................4
. 5 . Communications inter-process...................................5
. 6 . Interface proc.............................................................5
. 7 . Support SMP..............................................................5
. 8 . LXRT...........................................................................6
. 9 . API de compatibilit POSIX........................................6
Performances....................................................................6
Bibliographie et ressources..............................................6

LT LA SALLE Avignon

-1-

TV.BTSii.2003

Prsentation RTAI

1 . Introduction
Dans le but de rendre Linux utilisable dans des applications temps rel pures, les
membres du dpartement dingnierie spatiale de lInstitut Polytechnique de Milan
(DIAPM) ont envisag une couche d'abstraction matrielle temps rel (RTHAL : Real
Time Abstraction Layer) sur laquelle une interface pour les applications temps rel
(RTAI) pourrait tre charge.
Vers 1996, un groupe de chercheurs du New Mexico Institute Technology (NMT)
prsenta Linux Temps Rel (RT Linux), ce qui permit l'quipe de DIAPM dapprofondir
son tude du noyau Linux, du matriel et des modifications ncessaires pour fournir une
planification premptive et dterministe. Une nouvelle tape fut franchie en 1998 avec
les amliorations importantes du noyau 2.2, notamment les modifications darchitecture
dans linterfaage de Linux avec le matriel. Ces modifications, combines avec
lexprience acquise par lquipe DIAPM lorsquelle travaillait sur sa propre volution
du noyau Linux NMT-RT, et les concepts de 1996, aboutirent RTAI.
RTAI fournit une planification temps rel pure, tout en conservant toutes les fonctions et
services de Linux Standard. En plus, RTAI fournit le support de UP et SMP (avec la
possibilit dassigner les tches et les IRQs des CPU spcifiques), x486 et Pentium, des
schedulers one-shot et priodiques, la mmoire partage inter-linux ou intra-linux, la
compatibilit POSIX, le support de FPU, la synchronisation inter-tches, des
smaphores, mutexs, message queues, messages, la possibilit dutiliser les appels
systmes RTAI lintrieur de l'espace utilisateur standard et ...

2 . Larchitecture RTAI
Larchitecture de RT Linux et RTAI est sensiblement similaire.

LT LA SALLE Avignon

-2-

TV.BTSii.2003

Prsentation RTAI

Pour chaque implmentation, le systme dexploitation Linux est excut comme la


tche plus faible priorit du systme dexploitation temps. En consquence, Linux ne
rencontre pas de changement fonctionnel du point de vue de lutilisateur ou du noyau
Linux, except le fait que son excution est permise simplement quand il nexiste pas de
tches temps rel en cours dexcution.
Fonctionnellement, les deux architectures offrent la possibilit dexcuter des tches
temps rel spciales et des gestionnaires dinterruption qui sexcutent la demande,
indpendamment des autres tches que Linux pourrait faire fonctionner.
Les deux implmentations tendent lenvironnement de programmation standard de
Linux aux problmes du temps rel en autorisant que les tches temps rel et les
gestionnaires dinterruption communiquent avec les traitements Linux au travers dune
interface de priphrique (FIFOS) ou de mmoire partage.
La diffrence primaire darchitecture entre les deux implmentations rside dans la
manire dont les fonctions temps rel sont ajoutes Linux. RT Linux et RTAI tirent tous
deux parti des modules chargeables lors de limplmentation des services temps rel.
Cependant, une des diffrences cls entre les deux rside dans la manire dajouter les
extensions temps rel au noyau standard de Linux.
RT Linux applique la plupart des changements directement aux fichiers sources du
noyau, avec pour rsultat des modifications et des additions dans de nombreux fichiers
source Linux. En consquence, il accrot lintrusion dans les fichiers source Linux, ce qui
peut entraner une maintenance accrue du code. Il rend galement plus difficile le
traage des modifications et mises jour du noyau ainsi que la recherche de bogues.
RTAI limite les changements du noyau standard en ajoutant une couche d'abstraction
matrielle (HAL) comprenant une structure de pointeurs vers les vecteurs
dinterruption, ainsi que les fonctions dactivation/dsactivation des interruptions. HAL
est implment en modifiant moins de 20 lignes du code existant, et en ajoutant environ
50 lignes de nouveau code. Cette approche minimise lintrusion dans le code standard
de Linux et localise la gestion dinterruption et le code dmulation, ce qui constitue
une approche beaucoup plus lgante.
Un autre avantage de la technique HAL est quil est possible de faire revenir Linux dans
son mode de fonctionnement standard en changeant les pointeurs dans la structure
RTHAL et en leur redonnant leurs valeurs originales. Ceci savre utile lorsque les
oprations temps rel sont inactives ou lorsque lon cherche reprer des bogues.
L'impact de HAL sur les performances du noyau est ngligeable, refltant grandement la
maturit et la conception du noyau Linux et de ceux qui ont contribu son
dveloppement.
HAL supporte cinq modules tlchargeables qui apportent les capacits temps rel
requises la demande :
rtai, lenvironnement de travail de base ;
rtai_sched, la planification priodique ou one-shot ;
rtai_mups, planification priodiques ou one-shot simultans ou encore deux
planificateurs priodiques, chacun travaillant sur une horloge diffrente ;
rtai_shm, partage de mmoire inter-linux, entre les tches temps rel et les
traitements Linux, et galement intra-Linux comme remplacement de UNIX V

LT LA SALLE Avignon

-3-

TV.BTSii.2003

Prsentation RTAI

IPC ; et rtai_fifos, une adaptation du FIFO (Files In, Files Out) de NMT de
RTLinux.
Comme tous les modules du noyau, ils peuvent tre chargs ou dchargs ( laide des
commandes standard Linux insmod et rmmod) mesure que leurs possibilits
respectives sont requises ou non.
Par exemple, si vous souhaitez installer uniquement les gestionnaires dinterruption,
vous devez charger le module rtai. Si vous voulez galement communiquer avec les
traitements standards de Linux en utilisant FIFO, alors vous devrez charger les modules
rtai et rtai_fifos.
Cette architecture modulaire et non intruse permet FIFO de sexcuter sur nimporte
quelle queue et dutiliser les rveils immdiats lorsque ncessaire.

LT LA SALLE Avignon

-4-

TV.BTSii.2003

Prsentation RTAI

3 . Caractristiques
La tche temps rel est implmente de faon similaire RTAI. Elle est crite et
compile comme un module du noyau, charg dans le noyau aprs, que le ou les
modules RTAI requis aient t chargs.

3 . 1 . Planificateur de tches
Le planificateur de tches de RTAI permet la planification entirement premptive,
temps rel hard base sur un schma de priorit fixe. Tous les plans peuvent tre grs
par
des fonctions de temps ou des vnements temps rel comme : lacquisition de
smaphores, les fonctions dhorloge ou de temps, les gestionnaires dvnements
asynchrones ... et comprennent la synchronisation inter-tches.

3 . 2 . Planification priodique et one-shot


RTAI supporte la foi les timers priodiques ou one-shot sur des CPU de type 486 ou
Pentium. Bien que des timers priodiques ou one-shot soient tous deux supports, ils ne
peuvent tre instancis de manire simultane. Les tches one-shot et priodiques ne
peuvent tre charges dans le noyau comme modules au mme moment.
En utilisant ces timers (instancis par rtai_sched), les taux priodiques en dpassement
de 90 KHz sont supports, ceci dpendant : de la CPU, la vitesse du bus et la
performance de la puce.
Sur les processeurs Pentium, les taux de tches one-shot en dpassement de 30 KHz
sont supports (Pentium II 233 MHz), et sur des machines 486, limplmentation
one-shot offre des taux de lordre de 10 KHz, tout en conservant suffisamment de temps
CPU pour servir le noyau standard Linux.
La limitation de rtai_sched supporter simultanment des timers priodiques et oneshot est mitige par le planificateur temps rel rtai_mups : Multi Uni Processor (MUP),
qui offre la possibilit simultane : des deux types de timers ou encore deux timers
priodiques avec des priodes diffrentes, une performance quivalente celles
rencontre avec rtai_sched. Il faut noter que, comme le MUP utilise le timer APIC
(Advanced Programmable Interrupt Controller), il ne peut oprer sous SMP et requiert
que chaque tche planifie pour MUP soit bloque dans une CPU spcifique (do
lappellation Multi Uni Processor) ; cependant, MUP conserve toute la coordination et
les services IPX, en consquence de quoi aucune des autres capacits nest perdue.

3 . 3 . Opration en virgule flottante


Les oprations en virgule flottante lintrieur des tches/ISR (Interrupt Service
Routines) temps rel sont possibles, elles sont marques, lors du chargement, comme
des tches requrant la FPU. Cette mthode fournit laccs des tches temps rel au
FPU tout en permettant laccs FPU aux tches standards de Linux.

LT LA SALLE Avignon

-5-

TV.BTSii.2003

Prsentation RTAI

3 . 4 . Gestion des interruptions


RTAI propose un accs immdiat et efficace au matriel en autorisant, si lon choisit
cette option, une interaction directe avec le matriel bas niveau du PC, sans passer en
premier lieu au travers des couches de gestion des interruptions du noyau standard de
Linux. La possibilit dassigner de manire individuelle des IRQ spcifiques des CPU
spcifiques, garantit un interfaage immdiat avec le matriel.

3 . 5 . Communications inter-process
Le terme communication inter-process (IPC) dcrit diffrents moyens de passer des
messages entre les traitements ou tches, et dcrit galement les multiples formes de
synchronisation pour le transfert des donnes.
Linux fournit un IPC standard Systme V sous la forme de mmoire partage, FIFOs,
smaphores, mutexes, variables conditionnelles et pipes qui peuvent tre utilises par
les traitements utilisateurs standards pour transfrer et partager les donnes. Bien que
ces mcanismes IPC Linux ne soient pas disponibles pour accomplir des tches temps
rel, RTAI fournit un jeu supplmentaire de mcanismes IPC qui comprennent la
mmoire partage, les files de messages, les FIFO temps rel, mutexes, smaphores et
variables conditionnelles. Ces instructions sont utilises pour transfrer et partager les
donnes entre les tches et les traitements la fois dans les domaines Linux temps rel
et lespace utilisateur.
Le mcanisme dappel de procdures distantes (RPC) de RTAI est similaire en
fonctionnement aux messages QNX disponibles aux tches temps rel et les transfrent
soit sous la forme dun int non sign soit sous la forme dun pointeur vers la tche de
destination.
Limplmentation de la bote de messagerie de RTAI offre la possibilit denvoyer
nimporte quel message depuis lespace utilisateur vers les tches temps rel, et tches
utilisateur vers tches utilisateur (en utilisant LXRT) via nimporte quelle taille de buffer
de bote de messagerie pouvant tre dfinie. De multiples expditeurs et rcepteurs sont
autoriss, pour lequel chacun est servi en fonction de ses priorits.

3 . 6 . Interface proc
Depuis la version 0.9, RTAI comprend une interface proc qui fournit des informations
utiles sur le statut courant de RTAI, y compris les planificateurs chargs, les activits
temps rel, la priorit et la priode, et les FIFO en utilisation avec leurs tailles de buffer
associes. On peut visualiser l'cran avec la commande cat les fichiers suivants :
/proc/rtai/scheduler
/proc/rtai/rtai
/proc/rtai/fifos
...

3 . 7 . Support SMP
RTAI fournit un vritable support de larchitecture SMP (Symmetric Multi-Processing)
au travers de sa gestion des tches et des IRQ. Par dfaut, toutes les tches sont
assignes pour fonctionner sur nimporte quelle CPU (dune plate-forme SMP). Chaque
tche, cependant, peut tre individuellement assigne nimporte quel sous-ensemble
LT LA SALLE Avignon

-6-

TV.BTSii.2003

Prsentation RTAI

CPU, voire une simple CPU. En plus, il est possible dassigner nimporte quel service
dinterruption temps rel nimporte quelle CPU spcifique. Parce que la possibilit de
forcer une interruption vers une CPU spcifique nest pas lie au planificateur SMP,
RTAI conserve la souplesse deffectuer ces deux oprations de faon indpendante.
Ces capacits fournissent une mthode pour optimiser lapplication temps rel, si la
distribution manuelle des tches gre la tche de faon plus efficace que les services de
distribution automatique SMP fournis par Linux.

LT LA SALLE Avignon

-7-

TV.BTSii.2003

Prsentation RTAI

3 . 8 . LXRT
Comme les tches temps rel de Linux sont implmentes comme des modules
tlchargeables, elles sont parties intgrantes du noyau. Ainsi, ces tches ne sont pas
lies aux services de protection de la mmoire de Linux et elles ont la possibilit dcrire
par dessus les zones critiques de la mmoire, qui peuvent provoquer une interruption du
systme. Cette limitation sest avre trs frustrante pour ceux dentre nous qui ont err
durant le dveloppement de tches temps rel.
LXRT de RTAI rsout ce problme en autorisant le dveloppement de tches temps rel,
utilisant tous les appels systmes temps rel hard de RTAI lintrieur de lespace
mmoire protg de Linux et sous un service temps rel firm . Lorsque le
dveloppeur est satisfait des performances dune tche au sein de LXRT, la tche est
simplement recompile comme un module et insre dans le noyau (avec les modules
associs qui fournissent les fonctions temps rel de RTAI) afin deffectuer la transition.
Le service temps rel de LXRT, similaire au patch temps rel propos par luniversit du
Kansas (KURT) fournit du temps rel soft.
Les performances sous LXRT sont plutt bonnes, produisant des dlais de latence pas
plus importants que pour un appel systme standard Linux destin basculer une tche.
Bien quil sagisse dun outil de valeur pour les dveloppements, nous ne devons pas
perdre de vue le fait que limplmentation temps rel firm de RTAI peut savrer
particulirement utile pour des tches qui ne requirent pas le temps rel hard, mais ne
sont pas encore accomplies par Linux standard.

3 . 9 . API de compatibilit POSIX


RTAI implmente un sous-ensemble compatible de POSIX 1003.1.c au travers dun seul
module tlchargeable. Ces appels supportent la cration et la suppression, le contrle
dattributs, le contrle denvironnement pour les threads, mutexes et variables
conditionnelles. Le support POSIX rsultant est similaire celui offert pour les threads
Linux Standard (librairie pthread).

4 . Performances
Les performances d'un RTOS dpendant videmment des performances du RTOS lui
mme mais aussi de la plateforme matrielle sur lequel il fonctionne et des procdures
de tests et de mesures (trs difficile raliser ce qui implique qu'il est toujours trs
difficile de comparer deux RTOS).
Les chiffres ci-dessous ont t obtenus sur un Pentium II 233 Mhz avec un Linux
lourdement charg :
Taux d'itration priodique maximum :
Jittler au taux maximum d'itration :
Taux d'interruption one-shot :
Temps de changement de contexte :

125 KHz
0-13 s (UP)
30 KHz
environ 4 s

5 . Bibliographie et ressources
A partir dun article paru dans Linux+ (mai 2000).
LT LA SALLE Avignon

-8-

TV.BTSii.2003

Prsentation RTAI
RTAI :
www.rtai.org
RT Linux :
Linux temps rel : www.realtimelinux.org
Trace Toolkit :
Ethernet IP RTnet : opensource.lineo.com/rtai.html

www.rtlinux.org
www.opersys.com

Un excellent site sur les systmes embarqus et les diffrents RTOS existants :
www.enseirb.fr/~kadionik/embedded/embedded.html
On trouvera sur le site RTAI des liens vers le support de cartes d'acquisition avec l'API COMEDI
et l'API rt_com pour les liaisons sries.

LT LA SALLE Avignon

-9-

TV.BTSii.2003