Beruflich Dokumente
Kultur Dokumente
version 1.22
Copyright c Stphane List, Nicolas Ferre slist@tuxfamily.org, nferre@free.fr, Alcve Ce document peut tre reproduit, distribu et/ou modi selon les termes de la Licence GNU de Documentation Libre (GNU Free Documentation Licence) dans sa version 1.1 ou ultrieure telle que publie, en anglais, par la Free Software Foundation ; sans partie invariante, avec comme premire de couverture (front cover texts) les deux premires pages, et sans partie considre comme quatrime de couverture (back cover texts) Une copie de la licence est fournie en annexe et peut tre consulte lurl : http ://www.gnu.org/copyleft/fdl.html
Alcve
Centre Paris Pleyel 153 bd Anatole France 93200 Saint-Denis, France Tl. : +33 1 49 22 68 00 Fax : +33 1 49 22 68 01 E-mail : alcove@fr.alcove.com, Toile : www.alcove.com
1
73 77 85
Chapitre 1
Alcve - RTLinux
Le temps rel... FAQ http ://www.faqs.org/faqs/realtime-computing/faq/ Dnition du IEEE : "Un systme temps rel est un systme dont le temps de rponse est aussi important que la qualit de fonctionnement." Dnition POSIX : "Le temps rel est la capacit rpondre une sollicitation en un temps dtermin pour produire une raction approprie." Multitude de dnitions du temps rel qui peut tre quali de mou/dur, critique...
5
Application
U K H
Sys. Call
Appels systmes
Linux OS
Drivers IT I/O
Systme dexploitation
Architecture
Hardware
6
Hardware
RTLinux : un micro-noyau RTLinux se prsente sous la forme dun micro-noyau prenant place entre la machine relle et le noyau Linux. Multitche et totalement premptif ; SMP sur x86, tourne aussi sur PPC, Alpha (version OpenRTLinux) ; + AMD Elan, MIPS, Synergy MicroSystems, IBM Walnut, StrongARM, RTLinux/BSD (version propritaire) ; Ordonnanceur (scheduler) ; IPC et systme de synchronisation entre les tches ; Accs direct au matriel ; Espace dadressage du noyau Linux / pas de protection mmoire ; Module de "debug" et de trace du systme.
7
U K
Sys. Call
Linux OS
Drivers
RTLinux
Hardware
8
Principes : Les tches Linux est la tche temps rel de plus faible priorit ; Cration de tche depuis un contexte Linux (init_module) ou RTLinux ; Attributs dordonnancement, taille de pile, utilisation de FPU, etc ; Dialogue entre tches temps rel et processus Linux par FIFOs, mmoire partage ou interruptions virtuelles (signaux ou soft IT) ;
Principes : les interruptions (1/2) Code de masquage/dmasquage des interruptions rcrit ; Le cli Linux "dsactive la monte dIT virtuelles" Le sti Linux "ractive la monte dIT virtuelles, mule les interruptions en attente" Interruptions matrielles (hard IT) interceptes puis ventuellement routes vers Linux par la couche temps rel ; Gnrations dinterruptions virtuelles (soft IT) destines Linux ; Linux ne peut intervenir sur les interruptions matrielles.
10
Principes : les interruptions (2/2) Sur monte dinterruption : Si un handler RTLinux a t initialis : lappeler Si un handler Linux a t initialis ET RTLinux inactif ET IT virtuelles actives : appeler le handler Linux Sinon : marquer linterruption comme tant en attente
11
Outils et interfaces RTLinux est structur comme partie centrale minimale sur laquelle vient se charger une collection de modules qui fournissent des services optionnels ou des niveaux dabstraction. rtl, rtl_time, rtl_sched : RTLinux, timer, scheduler ; mbuff : Shared Memory ; rtl_fifo : FIFOs ; rtl_posixio : API POSIX pour le systme de chiers ; rtl_debug, rtl_tracer : dbogage ; ... =>Systme modulaire et extensible.
12
Architecture modulaire
Linux process 1 (IHM) Linux process 2 (Data collector)
U K
drivers modules Linux kernel rt-task2 posixio rt-task1 RTL-time Scheduler RT-driver Hardware
13
RTLinux
Besoin dun nouveau modle de programmation Dcoupage de lapplication : "Si un service est intrinsquement non temps rel, il doit tre fourni par Linux et non par les modules RTLinux." Laisser faire Linux ce quil sait bien faire : GUI, base de donnes, drivers non temps rel... Gestion de la mmoire : allocation statique / pas de protections... Communications non-bloquantes ct temps rel. Utilisation de modules chargeables / API spcique.
14
Installation de RTLinux (1/2) Tlcharger RTLinux ; Chercher les versions de Linux supportes par RTLinux ; Tlcharger Linux ; Patcher Linux avec RTLinux ; Congurer / Compiler / Installer le noyau ; Rebooter.
15
Installation de RTLinux (2/2) Congurer / Compiler / Installer RTLinux ; Faire tourner les exemples (make test) ; rtl-config permet de vrier la cong ; rtlinux est un script pour charger les modules RTLinux ; insrtl et rmrtl charge et dcharge les modules RTLinux.
16
Approche micro-noyau : critres de choix Avantages : Comportement temps rel critique ; Modularit, scalabilit ; Compacit du code et du patch noyau (< 100 ko/< 1000 lignes) ; Version rcente du noyau Linux (dernires innovations) ; Peu de bugs, correction rapide (mailing lists), test par de nombreux spcialistes. Inconvnients : Modication des drivers pour un comportement temps rel ; Apprentissage dune API (facilit par la compatibilit POSIX) ; Difcults de dbogage (espace noyau).
17
Chapitre 2
Alcve - RTLinux
Ordonnancement
18
Ordonnancement
Alcve - RTLinux
Ordonnanceurs RTLinux fonctionne en mode Uni-Processeur et SMP (Symetrical Multi-Processor) En mode SMP une tche est affecte un processeur donn. pthread_attr_setcpu_np() permet dassigner une tche un CPU particulier. Permet aussi de rserver un CPU RTLinux Remarque : Attention lors de la compilation du noyau Linux de ne slectionner SMP que si la machine est bien SMP, utiliser le bon type de CPU, dsactiver lAPM.
19
Ordonnancement
Alcve - RTLinux
Politiques dordonnancement Les crateurs de RTLinux voulant garder un systme simple nont implment quun seul type dordonnancement : tches priorits xes ; choix exclusivement par ordre de priorit ; argument de politique SCHED_FIFO pour compatibilit. Mais des initiatives de la communaut RTLinux visent ajouter dautres politiques dordonnancement : SCHED_EDF_NP soit Earliest Deadline First ; choix des tches dchance plus proche sur un niveau de priorit ; utilisation dalgorithme Stack Resource Protocol (SRP) pour la gestion des smaphores (vite linversion de priorit).
20
Ordonnancement
Alcve - RTLinux
Priorit des tches Les priorits min et max que peuvent avoir les tches RTLinux dpendent de la politique dordonnancement, pour connatre ces valeurs, il faut utiliser les fonctions : int sched_get_priority_max() ; int sched_get_priority_min().
21
Chapitre 3
Alcve - RTLinux
Tches (threads)
22
Tches (threads)
Alcve - RTLinux
Dclaration dune tche #include <pthread.h> int pthread_create (pthread_t *thread, // Tche pthread_attr_t *attr, //Attributs de la tche void* (*start_routine)(void*), // Routine de la tche void* arg) ; //paramtre dappel de la routine
23
Tches (threads)
Alcve - RTLinux
Modication des attributs dune tche En contexte Linux : pthread_attr_init(), pthread_attr_destroy() ; pthread_attr_[get|set]schedparam() ; pthread_attr_[set|get]cpu_np() ; pthread_attr_[set|get]stacksize() ; pthread_attr_setfp_np(). Ou en contexte RTLinux : pthread_[get|set]schedparam() ; pthread_setfp_np().
24
Tches (threads)
Alcve - RTLinux
Nombres ottants dans une tche RTLinux Lmulation des nombres ottants prsent dans le noyau Linux ne peut tre utiliss dans une tche RTLinux RTLinux utilise la FPU prsente sur x86 (> 486 DX) et PPC Sauvegarde de registres supplmentaires => changement de contexte plus lent. Possibilit dutiliser une librairie mathmatique (ajouter -lm ldition de liens)
25
Tches (threads)
Alcve - RTLinux
Suppression dune tche pthread_cancel() envoi de notication de n dexcution ; puis pthread_join() attente jusqu la n du thread dsign ; pthread_delete_np() rassemble ces deux fonctions ; pthread_setcancelstate() : PTHREAD_CANCEL_ENABLE (par dfaut) ; PTHREAD_CANCEL_DISABLE ; pthread_setcanceltype() : acceptation de terminaison immdiate (PTHREAD_CANCEL_ASYNCHRONOUS) ; certains point de lexcution (PTHREAD_CANCEL_DEFERRED) (par dfaut) ; pthread_testcancel() : point de possible n dexcution du thread ;
26
Tches (threads)
Alcve - RTLinux
Programmation des tches priodiques pthread_make_periodic_np() rend une tche priodique ou modie la priode " la vole" ; pthread_wait_np() rend la main jusqu la prochaine priode.
27
Tches (threads)
Alcve - RTLinux
Programmation des tches a-priodiques ou sporadiques pthread_suspend_np() endort une tche ; pthread_wakeup_np() rveille une tche ; envoie respectivement les signaux RTL_SIGNAL_SUSPEND et RTL_SIGNAL_WAKEUP. Permet de construire une tche excute sur interruptions : le handler dinterruptions appelle pthread_wakeup_np().
28
Chapitre 4
Alcve - RTLinux
Interruptions
29
Interruptions
Alcve - RTLinux
Linux
CPU
rtl_get_soft_irq rtl_free_soft_irq rtl_global_pend_irq rtl_request_irq rtl_free_irq rtl_no_interrupts rtl_restore_interrupts rtl_stop_interrupts rtl_allow_interrupts
APIC/8259
rtl_hard_enable_irq rtl_hard_disable_irq
RTLinux
disk
prn
modem
video
30
Interruptions
Alcve - RTLinux
Masquage au niveau du [A]PIC : rtl_hard_disable_irq() ; rtl_hard_enable_irq(). Masquage au niveau du CPU (propre un CPU pour le SMP) : rtl_no_interrups() sauvegarde des registres dtat du CPU ; rtl_restore_interrupts() ; rtl_stop_interrupts() simples cli/sti ; rtl_allow_interrupts().
31
Interruptions
Alcve - RTLinux
Installer un handler dinterruptions Interruptions matrielles (hard IT) : rtl_request_irq() : installe un handler pour une IRQ ; rt_free_irq() : ds-installe un handler dIRQ. Interruptions virtuelles (communication avec le noyau Linux) : rtl_get_soft_irq() : installe un handler sur une IRQ virtuelle ; rt_free_soft_irq() : ds-installe le handler. Dclencher la remonte dinterruptions vers le noyau Linux : rtl_global_pend_irq() partage dIRQ (Linux/RTLinux).
32
Chapitre 5
Alcve - RTLinux
33
Section 1
Alcve - RTLinux
34
FIFO
rtf_flush() rtf_isempty() rtf_isused()
FIFO : caractristiques cres/dtruites en contexte Linux ; unidirectionnelles ou utilisation de paires pour changes bidirectionnel (rtf_make_user_pair()) ; accessibles dans le systme de chiers Linux : /dev/rtfX comme priphrique en mode caractre (major 150 minor 0-63) ; les FIFOS doivent tre ouvertes en mode O_NONBLOCK par les tches RTLinux (si I/O POSIX) ; Appel de routines sur vnements Linux/RTLinux (rtf_create_handler()/rtf_create_rt_handler()).
36
Mmoire partage
Linux process (Data collector)
U K
Linux
mbuff_alloc() mbuff_free() mbuff_attach() mbuff_detach()
RLinux
H
MEM
37
Mbuff : caractristiques mmoire virtuelle (utilise vmalloc()) ; cres/dtruites en contexte Linux ; zones mmoires nommes ; compteur dutilisation ; Informations dans /proc/mbuff ; Portable : Linux, RTLinux, RTAI.
38
Mmoire partage : allocation au dmarrage Ancienne mthode permettant de partager la mmoire entre les processus utilisateurs Linux et les tches RTLinux. mmoire physique ; allocation permanente au boot du systme append="mem=31m" dans lilo.conf ; accs depuis Linux : projection dans lespace dadressage du processus de ladresse physique (/dev/mem) ; accs depuis RTLinux : par pointeur sur la zone mmoire physique.
39
Exemple : #define BASE_ADDRESS (31 * 0x100000) MY_STRUCT *ptr ; Dans Linux fd = open ("/dev/mem", O_RDWR) ; ptr = (MY_STRUCT *) mmap (0, sizeof(MY_STRUCT), PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fd, BASE_ADDRESS) ; Dans RTLinux ptr = (MY_STRUCT *) BASE_ADDRESS ;
40
Section 2
Alcve - RTLinux
Mcanismes de synchronisation
41
Mcanismes de synchronisation
Alcve - RTLinux
Exclusion mutuelle(1/3) synchronisation ; intgrit des donnes partages. Leur utilisation peut tre vite : rduction au minimum des sections critiques, excutes interruptions masques. pthread_mutex_init(), pthread_mutex_destroy() ; pthread_mutex_lock() "P" ; pthread_mutex_trylock() si le verrou est pris : pas de bloquage, retour de code derreur ; pthread_mutex_timedlock() smaphore avec timer ; pthread_mutex_unlock() "V" ; De nombreuses fonctions pour xer les attributs du verrou.
42
Mcanismes de synchronisation
Alcve - RTLinux
Exclusion mutuelle (2/3) Types de verrous : PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_DEFAULT ; PTHREAD_MUTEX_SPINLOCK_NP (verrou attente active -SMP-). Porte des smaphores dexclusion mutuelle (mutex) : La norme POSIX dnie deux sortes de porte pour les verrous PTHREAD_PROCESS_SHARED et PTHREAD_PROCESS_PRIVATE. RTLinux nimplmente pas la gestion de ces attributs.
43
Mcanismes de synchronisation
Alcve - RTLinux
Exclusion mutuelle (3/3) Protocole daction des mutex : PTHREAD_PRIO_INHERIT Priority Inheritance Protocol (PIP) (non implment). La tche dtenant le verrou hrite de la priorit de la tche de plus forte priorit en attente sur le mutex ; PTHREAD_PRIO_NONE Priorits statiques ; PTHREAD_PRIO_PROTECT Ceiling Semaphore Protocol (CSP). La tche dtenant le verrou hrite de la priorit attribue la ressource contrle par celui-ci ; PTHREAD_PRIO_SRP Stack Resource Policy (SRP). La tche qui commence son excution ne sera pas bloque jusqu sa n. Utilis avec la politique dordonnancement EDF.
44
Mcanismes de synchronisation
Alcve - RTLinux
synchronisation
mutex
10
15
20
45
Mcanismes de synchronisation
Alcve - RTLinux
API complmentaires : Variables condition et smaphores Permet dtendre les possibilits de synchronisation : smaphores non binaires ou " compteur" pthread_cond_init(), pthread_cond_destroy() ; pthread_cond_wait(), pthread_cond_timedwait() ; pthread_cond_signal() ; pthread_cond_broadcast() rveille toutes le tches en attente sur une variable condition. sem_init(), sem_destroy() ; sem_getvalue() ; sem_wait(), sem_timedwait(), sem_trywait() ; sem_post().
46
Chapitre 6
Alcve - RTLinux
Le temps
47
Le temps
Alcve - RTLinux
Linux kernel
100Hz
CLOCK_UST CLOCK_8254 CLOCK_REALTIME CLOCK_APIC
RTLinux
tsc 64
CPU
1193180Hz
500MHz
8254
cont 16
cont 32
APIC
48
Le temps
Alcve - RTLinux
Gestion des horloges (1/2) RTLinux dispose de 3 horloges logiques (POSIX) : CLOCK_MONOTONIC temps coul depuis le boot du systme ; CLOCK_REALTIME (= CLOCK_RTL_SCHED) horloge utilise par lordonnanceur (et fonctions pthread_make_periodic_np(), nanosleep(), sem_timedwait(), etc.) ; CLOCK_GPOS converge vers lhorloge du systme : sujette aux ajustements NTP.
49
Le temps
Alcve - RTLinux
Gestion des horloges (2/2) Les horloges physiques disponibles sont le reet de larchitecture de la machine (ici x86) : CLOCK_8254 oprations dE/S sur la puce trs lente (bus ISA) Frquence dhorloge : 1 193 180 Hz ; CLOCK_APIC Sur systmes SMP et UP rcents : utilise le le tsc (time stamp counter) des processeurs : le rfrentiel de temps est donc propre chacun deux Frquence dhorloge du processeur.
50
Le temps
Alcve - RTLinux
Fonctions daccs aux horloges Quelle heure est il ? int clock_gettime (clockid_t clock_id, struct timespec *ts) ; hrtime_t clock_gethrtime (clockid_t clock) ; struct timespec { time_t tv_sec ; /* seconds */ long tv_nsec ; /* nanoseconds */ }; Routines de conversion : timespec_to_ns(), timespec_from_ns(), hrt2ts()
51
Le temps
Alcve - RTLinux
Gestion de minuteries (timers) 2 modes de programmation : RTL_CLOCK_MODE_ONESHOT : + on atteint la prcision du matriel ; - reprogrammation chaque interruption. RTL_CLOCK_MODE_PERIODIC : + programmation une fois pour toute ; - prcision en fonction de la rsolution choisie ; - surcharge du systme par interruptions ; +/- moins exible mais plus efcace. Mode x par la fonction : rtl_setclockmode() .
52
Le temps
Alcve - RTLinux
API dutilisation de minuteries attente active : rtl_delay() (en nanosecondes). attente sur timer (non active) - ne pas utiliser depuis une routine de traitement dinterruptions : usleep() (en microsecondes) ; clock_nanosleep() (en nanosecondes) peut tre interrompue par un signal ; nanosleep() (en nanosecondes) utilise CLOCK_REALTIME.
53
Le temps
Alcve - RTLinux
Interruption dhorloge Interruption intimement lie au fonctionnement des systmes RTLinux et Linux (HZ) Manipulation prohibe laide des routine de traitement des IT (rtl_request_irq()) => mise en place dIT virtuelle rtl_setclockhandler() ; rtl_unsetclockhandler(). Utilisation impossible avec le scheduler qui installe son propre handler dIT horloge
54
Chapitre 7
Alcve - RTLinux
Entres / Sorties
55
Section 1
Alcve - RTLinux
56
Remarques Ceci nest quune brve introduction rappelant ces concepts propres au noyau Linux. Pour une approche plus dtaille, se rfrer au cours Alcve "Noyau Linux et pilotes de priphriques".
57
Fonctions daccs direct aux ports Plages dadresses utilises par les priphriques prsents sur le bus dE/S (ex : registres de contrle) ; On accde ces ports depuis le noyau grce aux fonctions : in{b,w,l}()/out{b,w,l}() : lit/crit 1, 2 ou 4 octets conscutifs sur un port dE/S ; in{b,w,l}_p()/out{b,w,l}_p() : lit/crit 1, 2 ou 4 octets conscutifs sur un port dE/S et fait une pause (une instruction) ; ins{b,w,l}()/outs{b,w,l}() : lit/crit des squences de 1, 2 ou 4 octets conscutifs sur un port dE/S.
58
Projection dans lespace dadressage du noyau En contexte Linux, on utilise ioremap() pour mapper une plage dadresses physiques sur la plage dadresses linaires du noyau. On accde ensuite la mmoire partage des E/S grce aux fonctions suivantes : read{b,w,l}()/write{b,w,l}() : lit/crit respectivement 1, 2 ou 4 octets conscutifs dans de la mmoire dE/S ; memcpy_{from,to}io() : lit/crit un bloc doctets conscutifs dans de la mmoire dE/S ; memset_io() : remplit une zone de mmoire dE/S avec une valeur xe ; virt_to_bus()/bus_to_virt() : traduction entre adresses virtuelles linaires et adresses relles sur le bus.
59
Section 2
Alcve - RTLinux
Drivers
60
Drivers
Alcve - RTLinux
Portage de drivers Linux vers RTLinux Un driver Linux est prempt par toute action en espace RTLinux. Pour le rendre dterministe, il faut ladapter lenvironnement RTLinux : gestion des interruptions ; protection des ressources / synchronisation ; changes de donnes entre espace utilisateur et noyau ; interface "chiers" de style POSIX.
61
Drivers
Alcve - RTLinux
Module posixio
62
Drivers
Alcve - RTLinux
Utilisation de librairies de compatibilits DPI (Driver Programming Interface) ; Comedi (Control and Measurement Device Interface). Comedi : Interface de dveloppement de drivers RT[Linux|AI] pour cartes dacquisition de donnes nombreuses cartes dj supportes (convertisseurs A/D D/A, entres/sorties numriques, capteurs temprature, etc.) ; interface modulaire ; applicatif indpendant vis vis du matriel.
63
Drivers
Alcve - RTLinux
Driver de liaison srie : rt_com La liaison srie se programme avec lAPI POSIX (open, write, read, ioctl) ou les fonctions suivante : rt_com_write ; rt_com_read ; rt_com_setup.
64
Chapitre 8
Alcve - RTLinux
Facilits dutilisation
65
Section 1
Alcve - RTLinux
Dbogguer RTLinux
66
Dbogguer RTLinux
Alcve - RTLinux
Utilisation de traces Option CONFIG_RTL_TRACER slectionner lors de la conguration de RTLinux ; Module rtl_tracer.o ; Traces dj existantes dans le coeur de RTLinux ; Dnition du champs dapplication : rtl_trace_settracemask ; Traage manuel : rtl_trace(), rtl_trace2() ; Dnition de nouvelles catgories : rtl_trace_seteventclass et rtl_trace_seteventname ; Traces dumpes dans une mmoire partages, rcuperer avec tracer.c et symresolve.
67
Dbogguer RTLinux
Alcve - RTLinux
Le dboggeur intgr RTLinux Option CONFIG_RTL_DEBUG et CONFIG_RTL_DEBUGGER slectionner lors de la conguration de RTLinux ; Module rtl_debug.o ; Mettre un breakpoint initial : breakpoint() ; Utiliser gdb + macros additionnelles (ou ddd...) ; Possibilit de step , next , breakpoint etc...
68
Section 2
Alcve - RTLinux
Projets connexes
69
Projets connexes
Alcve - RTLinux
miniRTL MiniRTL est une implmentation rduite de RTLinux qui tient sur une disquette de 1.44Mo. miniRTL a les spcicits suivantes : Linux 2.2.13, RTLinux 2.0 ; support rseau (ethernet, slip, plip) ; ssh/scp, sunrpc ; mail sortant ; mini serveur web avec support des CGI.
70
Projets connexes
Alcve - RTLinux
RTIC-Lab RTIC-Lab est un projet en GPL qui permet davoir une interface graphique (gtk) pour le contrle dune application temps rel RTLinux. RTIC-Lab permet de sinterfacer avec des cartes dentres analogiques/digitales.
71
Chapitre 9
Alcve - RTLinux
Licence
72
Licence
Alcve - RTLinux
Rappels GPL : GNU General Public License. LGPL : GNU Lesser General Public License. GPL et LGPL : droit et obligation de redistribution des sources modies. GPL : "contamination" lors du "link" : pas de propritaire (ou autre licence). LGPL : pas de "contamination" : propritaire (ou autre license) possible.
73
Licence
Alcve - RTLinux
RTLinux Brevet US (U.S. Patent No. 5,995,745). Deux versions : OpenRTLinux : licence GPL ; RTLinux/Pro : licence propritaire. Le brevet est licenci gratuitement pour toute utilisation de : OpenRTLinux non modi ET "code" entirement GPL. Code propritaire applicatif avec OpenRTLinux possible mais pas clair...
74
Licence
Alcve - RTLinux
RTAI Licence GPL pour le coeur de RTAI. Licence LGPL pour utilitaires/librairies. Brevet RTLinux applicable ?
75
Chapitre 10
Alcve - RTLinux
Travaux Pratiques
76
Travaux Pratiques
Alcve - RTLinux
Exercice 1 Installer RTLinux. crire un module RTLinux qui crit Hello World dans le chier log, depuis un contexte noyau Linux et depuis une tche RTLinux.
77
Travaux Pratiques
Alcve - RTLinux
Exercice 2 crire un module RTLinux faisant tourner une tche PERIODIQUE (T = 1s) qui crit Hello World 10 fois dans le chier log. Fixer les paramtres du scheduler en contexte RTLinux ; Fixer les paramtres du scheduler linitialisation de la tche temps rel (en utilisant pthread_attr_*()).
78
Travaux Pratiques
Alcve - RTLinux
Exercice 3 crire un module RTLinux faisant tourner une tche PERIODIQUE (T = 1s) qui calcule et afche le temps coul entre deux activations de la tche. Mme exercice en utilisant un mode de programmation au coup par coup (one-shot). Comparer les performances des horloges priodiques et coup par coup laide de lexemple measurements.
79
Travaux Pratiques
Alcve - RTLinux
Exercice 4 crire un module RTLinux avec une tche priodique qui crit un compteur de 1 10 dans une FIFO. Et crire un programme en mode utilisateur qui va lire la FIFO. Que se passe-t-il si on appelle 2 fois la fonction de cration de FIFO pour la mme FIFO (cf. code source) ?
80
Travaux Pratiques
Alcve - RTLinux
Exercice 5
Frank_app
FIFO # User
Kernel FIFO #
FIFO #
Tache 1
FIFO #
Travaux Pratiques
Alcve - RTLinux
Exercice 6 crire un module RTLinux qui crit une valeur dans une mmoire partage. Et crire un programme en mode utilisateur qui va lire la mmoire partage.
82
Travaux Pratiques
Alcve - RTLinux
Exercice 7 crire un module RTLinux qui compte les interruptions produites par le clavier et qui crit la valeur du compteur dans une mmoire partage. Et crire un programme en mode utilisateur qui va lire la mmoire partage. (crire le module en utilisant rt_request_linux_irq puis avec rt_request_global_irq )
83
Chapitre 11
Alcve - RTLinux
Remerciements / Rfrences
84
Remerciements / Rfrences
Alcve - RTLinux
Remerciements (Acknowledgements) I whould like to thank Jose Ismael Ripoll <iripoll@disca.upv.es> for allowing me to use his images. His RTLinux tutorial (in spanish) helps me to build this course. http ://bernia.disca.upv.es/iripoll/rtlinux/rtlinux-tutorial/index.html I also want to thank RTLinux and RTAI developers for their help.
85
Remerciements / Rfrences
Alcve - RTLinux
Rfrences FSMLabs http ://www.fsmlabs.com ; RTAI http ://www.rtai.org ; Archive mailing-liste RTAI http ://www.realtimelinux.org/archives/rtai/ ; Portail RTLinux de luniversit de Valencia http ://bernia.disca.upv.es/rtportal/ ; Comedi http ://stm.lbl.gov/comedi/ ; Portail plus jeune http ://www.realtimelinuxfoundation.org ; Portail Linux embarqu http ://www.linuxdevices.com ; Travaux Linux embarqu / temps rel http ://nferre.free.fr.
86