Sie sind auf Seite 1von 44

RTLinux

Stphane List, Nicolas Ferre


slist@tuxfamily.org, nferre@free.fr

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

Table des matires


Chapitre 1 Dnition et concepts de RTLinux Chapitre 2 Ordonnancement Chapitre 3 Tches (threads) Chapitre 4 Interruptions Chapitre 5 IPC : outils de communication inter processus 5.1 Communication entre RTLinux et Linux 5.2 Mcanismes de synchronisation Chapitre 6 Le temps Chapitre 7 Entres / Sorties 7.1 Accs la mmoire physique et aux ports 7.2 Drivers Chapitre 8 Facilits dutilisation 8.1 Dbogguer RTLinux 8.2 Projets connexes 3 17 21 28 32 33 40 46 54 55 60 66 67 70
2

Chapitre 9 Licence Chapitre 10 Travaux Pratiques Chapitre 11 Remerciements / Rfrences

73 77 85

Chapitre 1
Alcve - RTLinux

Dnition et concepts de RTLinux

Dnition et concepts de RTLinux


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

Dnition et concepts de RTLinux


Alcve - RTLinux

Systme GNU/Linux : interfaces et couches dabstractions


staroffice staroffice staroffice Xine

Application

POSIX, API de dev.


x11 glibc pthread Bibliothques

U K H
Sys. Call

Appels systmes

Linux OS
Drivers IT I/O

Systme dexploitation

Architecture
Hardware
6

Hardware

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Dnition et concepts de RTLinux


Alcve - RTLinux

RTLinux : Architecture conceptuelle


staroffice staroffice staroffice Xine

x11 glibc pthread

U K
Sys. Call

rt-task1 rt-task2 Scheduler

Linux OS
Drivers

RTLinux

Hardware
8

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Dnition et concepts de RTLinux


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

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Dnition et concepts de RTLinux


Alcve - RTLinux

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

Gestion des interruptions

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

IPC : outils de communication inter processus

33

Section 1
Alcve - RTLinux

Communication entre RTLinux et Linux

34

Communication entre RTLinux et Linux


Alcve - RTLinux

FIFO : First In First Out


rtf_put() rtf_create() rtf_make_user_pair() rtf_resize() rtf_destroy() rtf_create_handler() rtf_create_rt_handler() rtf_link_user_ioctl() POSIX: open(), close() read(), write(), ioctl() select() rtf_get()
35

FIFO
rtf_flush() rtf_isempty() rtf_isused()

Communication entre RTLinux et Linux


Alcve - RTLinux

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

Communication entre RTLinux et Linux


Alcve - RTLinux

Mmoire partage
Linux process (Data collector)

U K
Linux
mbuff_alloc() mbuff_free() mbuff_attach() mbuff_detach()

RLinux

H
MEM

37

Communication entre RTLinux et Linux


Alcve - RTLinux

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

Communication entre RTLinux et Linux


Alcve - RTLinux

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

Communication entre RTLinux et Linux


Alcve - RTLinux

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

Gestion des verrous

synchronisation

mutex

lock unlock Running tasks

Task waiting for mutex critical section

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

Gestion des horloges (clocks)

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

Accs la mmoire physique et aux ports

56

Accs la mmoire physique et aux ports


Alcve - RTLinux

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

Accs la mmoire physique et aux ports


Alcve - RTLinux

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

Accs la mmoire physique et aux ports


Alcve - RTLinux

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 #

FIFO handler Tache 0 FIFO #

TP : Retrouvez les numros des FIFOS et le sens de passage des donnes


81

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

Das könnte Ihnen auch gefallen