Documente Academic
Documente Profesional
Documente Cultură
Le temps reel
Janvier 2010
Acadmie Navale
Plan
Plan
1
` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai Xenomai (taches, timers, INT) Annexe : API specique
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
Bibliographie
Bibliographie
Le noyau Linux
` Understanding the Linux kernel, 3eme Edition, D.P. Bovet et M. Cesati, OReilly. ` Edition, Robert Love, Novell Press. Linux Kernel Development, 2eme Programmation temps reel, Introduction, Daniel Rossier, cours en ligne, Haute Ecole dIngenierie et de Gestion du Canton de Vaud Real-time concepts for embedded systems, Q. Li, CMP Books. Xenomai documentation
: Le temps reel
Acadmie Navale
Bibliographie
Notation
Norme SI, IEEE, . . .
1 Ko=1000 octets (1KB, Bytes)=8000 bits 1 Mo=104 octets 1 Go = 106 octets (convention pour les disques durs)
1 Kio = 1 KibiOctet =1024 octets= 210 octets 1 Mio = 220 octets 1 Gio = 320 octets 1Ko =1024 octets. . . (convention historique et dans cette presentation, plus adaptee)
Acadmie Navale
Bibliographie
Notation
Base
hexadecimal : 0xB1 ou B1h (note : 1 chiffre en hexa= 4bits) binaire : 10110001b decimal : 177
Little/Big Endian
Petit/Gros boutiste (ethymology : voyage de Gulliver) ordre des octets en memoire pour un mot exemple : la valeur 433=01B1h sur 16bits Little-Endian (intel) addresse 00 01 B1 01 Big-Endian (powerpc) addresse 00 01 01 B1
Acadmie Navale
Plan
1
` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai Xenomai (taches, timers, INT) Annexe : API specique
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
Partitionnement
Partitionnement du disque
fragmentation dun disque dur (physique) en plusieurs disques logiques usage :
` coexistence de divers systemes de chiers (et OS) organisation physique des donnees
table des partitions dans le premier secteur du disque (MBR) limite : 4 partitions (primaires) lune des 4 peut etre de type etendue pour y denir des partitions logiques en grand nombre
MBR hda: first hard disk NTFS EXT2 EXT3 SWAP ReiserFS FAT32
primaire
primaire
primaire
Acadmie Navale
1 Little-endian
Acadmie Navale
PC
` et Systemes ` Systemes temps reel embarques
Acadmie Navale
Cylindre 1024
10
Acadmie Navale
11
signature
pas de partition 2
3844*513o=1922Ko (= 2Mo) car une partition doit nir sur une n de cylindre
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
12
une arborescence via des repertoires des noms de chiers (heure de creation, des meta-donnees modication, taille,. . . ) ` des droits dacces
` ` chaque systeme possede des limites speciques : taille maximale de la partition, taille maximale des chiers, longueur des noms de chiers, . . . : journal de transaction, liens symboliques. . . et des specicit es
FS FAT32 NTFS EXT3 natif Win Win Linux max le size 4Go 16To <2To max name size 2To >16 To 32 To max volume size 255 255 255
Acadmie Navale
13
une amorce de partition (boot sector) specique 2 tables dallocation de chiers (File Allocation Table) qui commence par la zone de donnees le repertoire racine /
data
MBR
VBR
FAT 1
FAT 2
512 octets
1 repiste
512 octets
2 mepiste
Acadmie Navale
14
Acadmie Navale
15
Acadmie Navale
16
0x ?0000000 : cluster libre ` 0xFFFFFEF : cluster utilise, valeur=cluster suivant du chier 0x ?0000002 a ` 0x000000F : dernier cluster du chier 0x ?FFFFFF8 a
O4h O 32bits rserv 32bits rserv 32bits 0xfff 0Ch
FAT 1
0x005 0x008 0x009 0xfff 0xfff
08h
2 numro du cluster
DATA REGION
GNU PUB LIC LICE NCE FR E SOFTW ARE FON ATION D cluster 3 cluster 4 512octets roit est don n de modi fier, redistr ibu toute ou partie d u code si l cluster 5 512octets cluster 6 512octets
FILE1 TXT 0x01 ..... .. 0x000 .... REP2 0x10 ..... .. 0x000 ....
. ..
FILE2 JPG REP 3 FILE4 AVI REP4 cluster 7 512octets
cluster 8 512octets
512octets
Acadmie Navale
17
FAT 32
Analyse du boot sector
creation dune FAT 32 sur la partition 1 de label key usb : mkfs.msdos -F 32 -n key usb /dev/sdx1 dd if=/dev/sdx1 of=msdos.bin bs=512 count=1 ou dd if=/dev/sdx of=msdos.bin bs=512 count=1 skip= N sect/piste
FAT de taille 30 secteurs total: 3844 secteurs secteur de taille 512oct 1 secteur/cluster 32 secteurs avant la FAT
Acadmie Navale
18
FAT 32
Analyse du repertoire racine
` partir du debut position a de la partition du repertoire racine ? B800h (32+2x30 secteurs) ` creation Analyse du repertoire racine apres dun chier : touch le1 ; dd if=/dev/urandom of=le1 bs=1 count=1173
` la FAT2 (cluster 0 et 1 reserve) note : cluster 2= le 1er apres
entre long nom de fichier Falg: volume label
Nom du fichier
00 00 00 03 cluster du fichier: 3
Acadmie Navale
19
FAT 32
Analyse de la FAT
(reserv cluster 0 et 1 jamais utilises es) 3 clusters (3x512o) necessaires ici pour stocker le chier de 1173o.
cluster 0 cluster 1 cluster 2 cluster 3
cluster 4
cluster 5
Acadmie Navale
20
BIOS
es Propriet
acronyme pour Basic Input/Output System ` 1 carte mere= 1 bios adapte memoire (ROM ou Flash) contenant des programmes offrant :
POST (Power on self Test, test du ` systeme) initialisation du hardware (BIOS video, memoire, IRQ..) ` au routines bas niveau dacces hardware ` au int 13h fournie une fonction dacces disque dur.
Acadmie Navale
21
BIOS
Sequence de boot
Le chipset active la broche RESET du CPU Le processeur execute par defaut le contenu de ladresse 0xFFF0 POST Initialisation RAM video (logos) Initialisation Bios IDE/ATA, RAM,periph. auto-copie en RAM (en dessous de FFFFFh) test du MBR des disques durs et CDROMs (1er secteur) execution du code du MBR si present : chargement de lOS.
Acadmie Navale
22
BIOS
Le BIOS fournit des fonctions dI/O
par le biais dINT. logicielle vecteur de ces interruptions normalise ` provenant du clavier exemple : INT 0x16H, lecture du caractere en 0x0000 la table des vecteurs dinterruptions est placee
Memory
x Go
Free RAM
0x0FFFFF= 2
20=1Mo
0x0F2573
0x00016
JUMP 0xF2573
Acadmie Navale
23
Acadmie Navale
24
Acadmie Navale
25
afche un menu (avec du graphisme) charge le noyau linux ou le secteur de boot dune autre partition
un chier de conguration lilo.conf ` chaque modication de lilo.conf ou du kernel a ` jour le second stage mettre a ` jour le premier stage avec la mettre a nouvelle adresse CHS du second stage ` jour la commande lilo effectue la mise a
Acadmie Navale
26
le bootloader LILO
installation de LILO
soit sur le MBR (plus commun)
soit sur le secteur de boot de la partition linux (permet de conserver son boot M.S.)
au logiciel damorc le choix de lOS est alors indique age M.S. en modiant la partition active dans la table du MBR
Acadmie Navale
27
le bootloader GRUB
Installation classique
sur le MBR, charge le stage 1.5 stage 1 : installe ` stage 1.5 : capable de lire un systeme de chiers (e2fs stage1 5, sur la premiere ` piste du disque fat stage 1 5), installe dans le repertoire stage 2 : installe /boot/grub dune partition linux
afche un menu (avec du graphisme) charge le noyau linux ou le secteur de boot dune autre partition
Syslinux
Un logiciel damorc age simple pour partition FAT
pour amorcer un CD dinstallation Linux parent disolinux utilise sur le secteur de boot de la FAT (stage1) installe ` la racine de la partition (stage 2) charge ensuite un binaire ldlinux.sys a ` la racine (un noyau linux) par defaut : execute le chier LINUX a ou utilise un chier de conguration SYSLINUX.CFG Necessite la presence dans le MBR dun code similaire au boot M-S (executer le secteur de boot de la partition active) sous Win98 fdisk /MBR ou xmbr (>Win2000) sous linux install-MBR ou cat syslinux.mbr > /dev/sdx
Acadmie Navale
29
Syslinux
Acadmie Navale
30
` Le systeme GNU/Linux
Plan
1
` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai timers, INT) Annexe : API specique Xenomai (taches,
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
31
` Le systeme GNU/Linux
32
` Le systeme GNU/Linux
Distribution
fournissent lensemble de ces composants ` grand nombre : Red hat - Slackware -Ubuntu - Suse - Mandriva... un tres ` en commun : le noyau Linux est certains utilitaires/bibliotheques de bases ` ` un systeme GNU-Linux un systeme Linux complet est plutot
Acadmie Navale
33
` Le systeme GNU/Linux
Noyau Linux
es classiques Propriet
kernel (noyau) monolithique (coeur de lOS) et decharg : MAIS portions de code du noyau peuvent etre chargees ees les modules e (ring 0), acces ` total au materiel le noyau tourne en niveau privilegi
es speciques Propriet
en C (source disponible sous forme darchives) programme portage sur de nombreuses plateformes interface de conguration graphique ou texte (make menucong) du noyau : bzimage (make) compilation produit une image compresse ` linterface graphique nest pas incluse dans le noyau (contrairement a windows)
Acadmie Navale
34
` Le systeme GNU/Linux
Noyau linux
Compilation
archive disponible sur http ://www.kernel.org decompresser larchive : tar -xf linux-xx.xx.xx.tbz descendre dans le repertoire : cd linux-xx.xx.xx lancer la conguration du noyau : make menucong dans le chier .cong cette conguration est sauvee compilation du noyau et modules : make installer les modules dans /lib/modules : make modules install limage noyau est disponible dans /arch/xxxx/boot/bzimage
Acadmie Navale
35
` Le systeme GNU/Linux
Shell
GCC
MyApp
Espace Utilisateur
Appels Systmes (POSIX) IPC Memory Management ... Threads Noyaux Drivers IRQ handler Ordonnanceur Espace Kernel
CPU
Priphriques
Acadmie Navale
36
` Le systeme GNU/Linux
Acadmie Navale
37
` Le systeme GNU/Linux
Espace utilisateur/noyau
Espace utilisateur
contexte dexecution des applications classiques MMU : protection memoire des applications ` aux services du acces noyau par des fonctions speciques : ` les appels systemes (mkdir, open, setgid) : C, C++, langages evolu es ada, fortran..
Espace noyau
contexte dexecution OS ` (appel systeme, ISR, ordonnancement) ` direct au hardware acces (I/O, memoire physique,..) pas de protection memoire pour les taches noyaux des modules permettent dinclure dynamiquement du code dans le noyau API specique au noyau (C et ASM)
38
` Le systeme GNU/Linux
Espace utilisateur/noyau
` les appels systemes et lAPI du noyau sont mutuellement exclusifs un processus utilisateur passe temporairement du mode utilisateur au ` des droits des utilisateurs) mode noyau via un appel systeme (controle
Processus utilisateur
API utilisateur Espace Utilisateur
Processus noyau
Espace Utilisateur API noyau
Appel Systeme
Appel function
Espace Kernel
Espace Kernel
Temps dexecution
Temps dexecution
39
` Le systeme GNU/Linux
lecture du chier de conguration inittab montage des partitions en lecture-ecriture detection des periph eriques par chargement des modules conguration reseau, demarrage des services, du programme login ` on peut changer le programme par defaut en passant le parametre init= au bootloader
Remarque
` le drivers pour le support du systeme de chiers racine ne peut etre comme modules (stockes sur le systeme ` compile de chiers en question !)
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
40
` Le systeme GNU/Linux
` realisation doperations avant le montage du systeme de chiers nal ` ` a ` un jeu de modules necessaire acces au montage du systeme de chiers et au demarrage
41
` Le systeme GNU/Linux
Initialisation priph. (disques) Non Ramdisk? Oui Utilisation temporaire du ramdisk pour / Execution de /linuxrc Montage de la partition racine / Execution dinit (1) : consoles et services
Acadmie Navale
` Le systeme GNU/Linux
` Systeme de chiers
suivant une unique arborescence. Sous Linux/Unix, tout est chiers organises /. La racine est nommee
Acadmie Navale
43
` Le systeme GNU/Linux
Acadmie Navale
44
` Le systeme GNU/Linux
VFS /home/loic Ext2 code spcifique a lopration Drivers periph. de stockage Linux
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
d:/
FAT32
` Le systeme GNU/Linux
Disque dur
Acadmie Navale
46
` Le systeme GNU/Linux
Acadmie Navale
47
` Le systeme GNU/Linux
Compilation
necessite les sources et le chier de conguration du noyau utilis e compilation par la commande : make -C /usr/src/linux-headers-2.6.24-21-generic/ SUBDIRS=pwd modules et le chier makele suivant (pour les modules hello.c, toto.c)
Acadmie Navale
48
` Le systeme GNU/Linux
Restriction
` la libC standard (getch, fopen,. . . ) aucun appel a seul lAPI du noyau peut etre utilisee la resolution de lien est faite au chargement du noyau printk() permet decrire dans le buffer interne (debug)
Liberte
` libre a ` la memoire physique (au risque de corrompre le noyau) acces ` aux periph acces eriques (ports : inb, outb ; map memoire : ioremap, writeb. . . )
Acadmie Navale
49
` Le systeme GNU/Linux
return 0;
Acadmie Navale
50
` Le systeme GNU/Linux
usage
communication par un chier (descripteur) entre programme utilisateur et erique dans le noyau le pilote dun periph ` utilisation des appels systemes : open, read, write, close . . .
Acadmie Navale
51
` Le systeme GNU/Linux
int init_module(void) { int Res; Res = register_chrdev(Major, "parport", &fops); //enregistre le pilote en mode char. return 0; } void cleanup_module(void) { unregister_chrdev(Major, "parport"); } //r evoque le pilote identifi e par Major
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
52
` Le systeme GNU/Linux
Utilisation de ce pilote
e par un numero de majeur (identiant creation dun chier special reper unique du pilote noyau) et un mineur (identie le periph erique si plusieurs partagent le meme pilote) mknod /dev/parport c 60 0 test douverture par un open() dans un programme utilisateur, ou : echo x > /dev/parport `1 resultat : afchage un message dans le buffer du noyau ou mise a ` dune broche du port parallele.
Acadmie Navale
53
` Le systeme GNU/Linux
54
` Le systeme GNU/Linux
` Lappel systeme
Acadmie Navale
55
` Le systeme GNU/Linux
un preprocesseur : suppression des commentaires, expansion des macros (.i) une compilation en langage assembleur (.s) un assembleur (as) : code objet des options possibles -I/chemin/vers/include -L/chemin/vers/lib -lm assemble plusieurs chiers objets en un seul ` remplace les symboles par le code correspondant issu des bibliotheques
source gcc E .c .i gcc S .s assembleur gcc c .o objet (language machine)
lediteur de lien : ld
gcc lm ljpg
Acadmie Navale
56
` Le systeme GNU/Linux
` -lc : la bibliotheque C /usr/lib/crtX, les objets crtX (C RunTime) qui initialise lenvironnement et les variables C ` de lien dynamique pour ledition ld-linux : la bibliotheque
Resultat
: 2420 octets (7x le programme en assembleur) taille de lexecutable mais environnement C : notamment passage automatique des arguments au programme main(argc,*argv)
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
57
` Le systeme GNU/Linux
Acadmie Navale
58
` Le systeme GNU/Linux
Acadmie Navale
59
` Le systeme GNU/Linux
Resultat
: 555814 octets (200x le programme en dynamique) taille de lexecutable
Acadmie Navale
60
Le temps reel
Plan
1
` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai timers, INT) Annexe : API specique Xenomai (taches,
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
61
Le temps reel
E0 E1 E2
S0
Systme
S1
Acadmie Navale
62
Le temps reel
Acadmie Navale
63
Le temps reel
Acadmie Navale
64
Le temps reel
Caracteristiques
determinisme logique : meme sorties pour un un meme vecteur et un meme ` dentree etat du systeme
Acadmie Navale
65
Le temps reel
Caracteristiques
determinisme logique : meme sorties pour un un meme vecteur et un meme ` dentree etat du systeme determinisme temporel : le temps de reponse dune tache est bornee (bornes inf et sup).
Acadmie Navale
66
Le temps reel
Caracteristiques
determinisme logique : meme sorties pour un un meme vecteur et un meme ` dentree etat du systeme determinisme temporel : le temps de reponse dune tache est bornee (bornes inf et sup). ` est temporellement predictible Un systeme temps-reel : borne sup. du temps de reponse dune tache connue.
Acadmie Navale
67
Le temps reel
Acadmie Navale
68
Le temps reel
Acadmie Navale
69
Le temps reel
Acadmie Navale
70
Le temps reel
` pas de panne du systeme relative au retard sur lech eance e a une penalit
Acadmie Navale
71
Le temps reel
0
Acadmie Navale
26
52
78
t(ms)
72
Le temps reel
Acadmie Navale
73
Le temps reel
74
Le temps reel
vitesse : mach 0.93 (850 m.s1 /s) longueur/poids : 5.2m / 855 Kg ` 5m par mer calme altitude de vol : 3 a : 60km portee etique (EM) navigation : GPS/Cellule Inertielle, sonde electromagn acquisition nale : autodirecteur EM
Surface de sustentation Antennes
RADAR/ capteurs
Charge explosive
el ectronique Unite
75
Le temps reel
76
Le temps reel
Ordonnancement preemptif
Taches Concurrentes
Concurrence
: du latin concurrere, courir avec. Competition, Def lutte, entres plusieurs agents pour lacquisition dune meme ressource ( ou la realisation dun meme objectif). ` a ` la limitation dune ressource phenom ene naturel lie
recup erer les temps dattente dI/O pour faire dautres taches
` ` memoire calculs paralleles sur multi-processeur a commune ` un environnement concurrent ou distribue applications reactives a
77
Le temps reel
Ordonnancement preemptif
Taches Concurrentes
Acadmie Navale
78
Le temps reel
Ordonnancement preemptif
Ordonnancement
Rappel
` lordonnanceur choix du process a ` executer appel a parmi les processus prets sont en attente dune ressource ou dun les processus bloques enement ev externe
En excution
Ordonnanceur
Prt
Bloqu
Acadmie Navale
79
Le temps reel
Ordonnancement preemptif
Ordonnancement preemptif
Objectif de lordonnanceur temps reel
: assurer lordonnancement des taches eances faisabilite et leurs ech : assurer un taux de charge le plus bas possible du CPU optimalite implementable : ordonnanceur preemptif ` priorite xe le plus utilise a
Acadmie Navale
80
Le temps reel
Ordonnancement preemptif
t Ci
Ai : date dactivation de la tache i (prete) Ti : periode dactivation de la tache i de la tache i Ci : duree de la tache Pi : priorite i
81
Acadmie Navale
Le temps reel
Ordonnancement preemptif
Ordonnancement RM
Condition sufsante dordonnancement
N taches periodiques et independantes sont ordonnanc ables si :
N
U=
i =1
Ci < Ti
N (2 2 1)
cst. de liu & Leyland
(1)
avec avec Pi =
1 Ti
(2)
N 1 2 3 ..
Acadmie Navale
U : taux de charge du CPU si {cst de l&l} < U < 1 : on ne peut conclure avec ce test
82
Le temps reel
Ordonnancement preemptif
Ordonnancement RM
Exemple avec 2 taches
e toutes les unites de temps ordonnanceur execut 25 occupation du CPU 81.5% ( 50 + 30 ) 95 veri ee condition sufsante dordonnanc abilite i 1 2
Tche 1 Tche 2
A1 A2 fin 1 re chance A1 fin 2 me chance A1 fin 3 me chance A1
Ci 25 30
Ti 50 95
Pi 0.02 0.01
t 0 50
fin
100
1 re chance
150
fin
A2 2 me chance
83
Acadmie Navale
Le temps reel
Ordonnancement preemptif
Ordonnancement RM
Exemple avec 2 taches
e toutes les unites de temps ordonnanceur execut 25 30 occupation du CPU 90% ( 50 + 75 ) ee condition sufsante non veri poursuite de lanalyse (non ordonnanc able) i 1 2
Tche 1 Tche 2
A1 A2 fin 1 re chance A1 fin 2 me chance A1
Ci 25 30
Ti 50 75
Pi 0.02 0.013
t 0
Acadmie Navale
50
A2 1re chance
100
150
84
Le temps reel
Ordonnancement preemptif
Ordonnancement RM
Conclusion
en presence dun ordonnancement preemptif et de taches periodiques independantes :
xes pour les taches RM permet dutiliser des priorites ` sufsant dordonnanc RM donne un critere abilite
Remarques
un grand nombre de taches = 69% du CPU utilisable (Cst. de l&l)
le RME (RM Etendu) peut prendre en compte des taches dependantes variables existent : EDF ` priorites des ordonnancements preemptifs a
` necessaire critere et sufsant U < 100% ` implementer a ` recalculer dynamiquement) mais bien + complexe a (priorites
Acadmie Navale
85
Le temps reel
Ordonnancement preemptif
Ordonnancement RM
Exercice 1 : Encodage dune frame mp3
` es suivantes : Soit un systeme avec les propriet statiques ; un ordonnancement preemptif par priorites des temps de changements de contexte (commutation) et dordonnancement negligeables ; ` lordonnanceur, an de determiner un appel toutes les millisecondes a la ` executer. tache a les 3 taches periodiques et independantes suivantes : Taches Tache 1 (T1 ) Tache 2 (T2 ) Tache 3 (T3 ) Ai (ms) 10 20 25 Pi 1 3 2 Ci (ms) 12 7 4
temporelle par le CPU Completer le chronogramme representant lexecution ` e. des taches ci-dessus pour le systeme consider
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
86
Le temps reel
Ordonnancement preemptif
Ordonnancement RM
Exercice 1 :
T1
t
10 20 30 40 50
Acadmie Navale
87
Le temps reel
Ordonnancement preemptif
Ordonnancement RM
Exercice 2 : Encodage dune frame mp3
soit les 3 taches periodiques et independantes suivantes : Tache Filtrage du son Encodage (DCT) Post-traitement Ci 3ms 4ms 5ms Ti 11ms 14ms 20ms Pi . . .
les taches dencodages et de post-traitement sont capables de traiter des plus grands que le ltre (elles ont ainsi une frequence blocs de donnes plus faible) xes ? sont-elles ordonnanc ables avec des priorites ` faire un chronogramme et donner le temps dobtention des premieres trames pos-traitees.
Acadmie Navale
88
Le temps reel
Ordonnancement preemptif
Ordonnancement RM
10
15
20
25
Acadmie Navale
89
Le temps reel
Ordonnancement preemptif
` preemptif Le modele
Changement de contexte Premption Mutex (race condition) Interblocage Piles multiples dxecution
Inversion de priorit
Acadmie Navale
90
Le temps reel
Communication et Synchronisation
Mutex
Rappel
2 etats : ouvert, ou ferme protection dune section critique ou une ressource en cours dutilisation seule la tache qui a acquis le mutex peut le liberer un mutex ferme est bloquee en attente une tache qui veut acquerir
Fonction Xenomai rt mutex create() (toujours heritage de priorite) rt mutex delete() rt mutex aquire() rt mutex release() Fonction Posix pthread mutex init() pthread mutexattr init() pthread mutex destroy() pthread mutex lock() pthread mutex unlock() Operation un mutex creer es du mutex denir propriet detruire un mutex un mutex acquerir liberer un mutex
Acadmie Navale
91
Le temps reel
Communication et Synchronisation
Mutex
Usage
` a ` une ressource partagee protection, synchronisation de lacces
Acadmie Navale
92
Le temps reel
Communication et Synchronisation
Mutex
` Problemes courants avec les mutexes (et semaphores)
des ressources monopolisees par les taches famine : tache privee de haute priorite interblocage : taches possedant chacune une ressource voulu par une autre : execution alors quune inversion de priorite de taches de basse priorite attend car elle bloque sur une ressource tache de haute priorite
Solutions possibles
interblocage :
detection du blocage par le RTOS dune ressource) (liberation forcee procedure de deblocage
Acadmie Navale
93
Le temps reel
Communication et Synchronisation
Mutex
Interblocage (Deadlock)
ee par un mutex (exclusion mutuelle) la ressource est proteg une tache a acquis une ressource et bloque en attente dune autre ressource ` une ressource une cha ne de 2 taches ou plus, ou possede ` chaque tache voulue par une autre
A1 mutex_lock A mutex_lock B
A t possd par
A2
mutex_lock B
mutex_lock A
mutex_unlock A et B (prvu)
veut
veut
possd par
t 0 50 100
Interblocage
Tche
Tche
Acadmie Navale
94
Le temps reel
Communication et Synchronisation
Mutex
Inversion de priorite
sexecutent : situation ou Def de basses priorites avant une ` des taches du ` un blocage sur une ressource tache de haute priorite a intermediaires aggraver par lexistence de taches de priorites
Priorit
A2
t
mutex_lock mutex_lock
t section critique de T1
3
(comportement normal)
t
A1 mutex_lock mutex_unlock
t 0
Acadmie Navale
50
100
150
95
Le temps reel
Communication et Synchronisation
Mutex
Inversion de priorite
sexecutent : situation ou Def de basses priorites avant une ` des taches du ` un blocage sur une ressource tache de haute priorite a intermediaires aggraver par lexistence de taches de priorites
Priorit
A2
t
mutex_lock
+C3 + C4
mutex_lock
t
A4
Inversion de priorit t
A3
t
A1 mutex_lock mutex_unlock
t 0
Acadmie Navale
50
100
150
96
Le temps reel
Communication et Synchronisation
Mutex
Heritage de priorite
` algorithme pour resoudre le probleme dinversion de priorite dans les RTOS le plus frequemment implement e dans les GPOS (linux)) (rarement implement e
Principe :
la ressource qui bloque la tache liberer au plus tot prioritaire elev ee Ta bloque sur une ressource detenue par si une tache de priorite inferieure une tache Tb de priorite :
1 2
de la tache ee au rang de celle de Ta la priorite Tb est temporairement elev ` que la ressource est liber ee, Tb retrouve sa priorite des
Acadmie Navale
97
Le temps reel
Communication et Synchronisation
Mutex
Heritage de priorite
` algorithme pour resoudre le probleme dinversion de priorite dans les RTOS le plus frequemment implement e dans les GPOS (linux)) (rarement implement e
Priorit
A2
t
mutex_lock mutex_lock
t
A4
t
A3
t
A1 mutex_lock mutex_unlock (P1 = P1 initial)
t 0
Acadmie Navale
50
hritage: P1 = P100 2
150
98
Le temps reel
Communication et Synchronisation
Acadmie Navale
99
Le temps reel
Communication et Synchronisation
du bus de communication (Priorite elev e) bc dist : controle met eo a ` renvoyer sur Terre (P faible) ASI/MET : collecte des donnees intermediaires dautres taches de priorites
ASI/MET partage un ressource avec bc dist que prevu ASI/MET traite plus de donnes intermediaires par ASI/MET et les taches bc dist est bloque de priorites
Le temps reel
Communication et Synchronisation
Mutex
Exercice 3 : heritage de priorite
Soit : appele toutes les millisecondes ordonnanceur preemptif par priorite, temps dordonnancement et de changement de contexte n egligeables 1 mutex qui implemente lheritage de priorite ` le mutex en n dexecution chaque tache libere (pas avant), ` lexception de T1 qui le relache avant de terminer. a une unite Tache T4 T3 T2 T1 Ai 6 et 20 ms 10 et 23 ms 2 et 24 ms 0 et 26 ms Ci 5 ms 3 ms 5 ms 10 ms Pi 4 3 2 1
Completez le chronogramme dexecution suivant (T3 nutilise pas la le mutex). ressource et ne tente donc pas dacquerir
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
101
Le temps reel
Communication et Synchronisation
Mutex
Exercice 3 : heritage de priorite
rt_mutex_lock()
T4
0
T3
10
15
20
25
0
T2
10
15
20
25
0
T1
10
15
20
25
0
rt_mutex_lock()
Acadmie Navale
5
rt_mutex_lock()
10
15
20
25
102
Le temps reel
Communication et Synchronisation
Semaphore
Denition
par des taches, ` un compteur, pouvant soit un objet partage assimilable a etre disponible (compte 1) ou indisponible (0) a `1 un semaphore binaire est un semaphore dont le compteur est limite ` un mutex, une tache contrairement a autre que celle qui a acquis le semaphore peut le liberer
1 2 3
emente lacquisition dun semaphore decr son compteur la liberation dun semaphore incremente son compteur le semaphore si le compteur est a zero ne peut etre acquis et la tache bloque
Fonction Xenomai rt sem create() rt sem delete() rt sem p() rt sem v() rt sem broadcast() Fonction Posix sem init() sem destroy() sem wait() sem post() voir objet barrier Operation un semaphore creer supprimer un semaphore un semaphore acquerir liberer un semaphore debloquer toutes les taches en attente sur le semaphore
Acadmie Navale
103
Le temps reel
Communication et Synchronisation
Semaphore
Usage
` a ` une ressource coordination de lacces synchronisation entre taches
A1
sem_wait
sem_post
3
A1
sem_wait
sem_post
Tche
t 0
Acadmie Navale
50
100
150
Le temps reel
Communication et Synchronisation
Semaphore
Synchronisation simple de taches
la tache T2 a besoin que T1 ait fait son travail prealablement ` que T1 atteint le point de synchro. si P2 > P1 T2 redemarre des cas mono-CPU
Priorit
Tche
A1 sem_post sem_post
Tche
t 0 50 100 150
Acadmie Navale
105
Le temps reel
Communication et Synchronisation
Semaphore
Synchronisation simple de taches
la tache T2 a besoin que T1 ait fait son travail prealablement ` que T1 atteint le point de synchro. si P2 > P1 T2 redemarre des cas multi-CPU
Priorit
Tche 1
Tche 2
Attente de T1
A1
sem_post
t 0 50 100 150
Acadmie Navale
106
Le temps reel
Communication et Synchronisation
Semaphore
Synchronisation simple de taches
la tache T2 a besoin que T1 ait fait son travail prealablement ` que T1 atteint le point de synchro. si P2 > P1 T2 redemarre des cas multi-CPU
Priorit
Tche 1
Tche 2
Attente de T1
A1
sem_post
t 0 50 100 150
Acadmie Navale
107
Le temps reel
Communication et Synchronisation
Semaphore
Rendez-vous sans messages
point de synchronisation les 2 taches ont besoin que lautre ait ni certaines operations ` au point de synchronisation attend lautre la premiere cas mono-CPU
Priorit
Tche
A1 sem_post sem_wait
Tche
t 0
Acadmie Navale
50
100
150
108
Le temps reel
Communication et Synchronisation
Semaphore
Rendez-vous sans messages
point de synchronisation les 2 taches ont besoin que lautre ait ni certaines operations ` au point de synchronisation attend lautre la premiere cas multi-CPU
sem_post sem_wait bloque
Tche
A1 sem_post sem_wait
Tche
t 0 50 100 150
Acadmie Navale
109
Le temps reel
Communication et Synchronisation
Semaphore
` de synchronisation Barriere
dun nombre y de taches ` attente de larrivee sur une barriere des taches fonction de deblocage simultane en attente sur le semaphore : rt sem broadcast (ou lobjet barrier en POSIX) cas mono-CPU
Priorit
Smaphore=0 A2 sem_wait
sem_broadcast()
Tche
Tche
Tche
A1
sem_wait bloque
3
A1
sem_wait bloque
t 0
Acadmie Navale
50
100
150
110
Le temps reel
Communication et Synchronisation
File de messages
Denition
objet de communication asynchrone entre les taches ` la creation taille de la le denie a (nombre max. de messages contenus) si le pleine : impossible decrire de nouveaux messages tant lecture dans la le est non-bloquante, ou bloquante (tache bloquee quil ny a pas un message) ` un semaphore) synchronisation mais avec message (par rapport a
Fonction Xenomai rt queue create() rt queue delete() rt queue write() rt queue read() Fonction Posix mq open() mq close() mq send() mq receive() Operation une le creer supprimer une le envoyer un message lire un message
Acadmie Navale
111
Le temps reel
Communication et Synchronisation
File de messages
un mode message urgent et broadcast souvent disponible
File de message Ecriture B par tche Message B Message A Message A Message B Message urgent (LastIn First Out) Ecriture urgente C Message B Message B Message A Message A Message C Lecture de A par une tche
Acadmie Navale
112
Le temps reel
Communication et Synchronisation
File de messages
de reception Communication avec accuse
` lenvoyeur notication de reception du message a et : communication sure inter et synchronisation ` outil : le + semaphore binaire (ou une 2eme le si message de retour) cas mono-CPU
Priorit
A2 mq_sent sem_wait
Tche
A1
mq_receive
sem_post
Acadmie Navale
113
Le temps reel
Communication et Synchronisation
File de messages
de reception Communication avec accuse
` lenvoyeur notication de reception du message a et : communication sure inter et synchronisation ` outil : le + semaphore binaire (ou une 2eme le si message de retour) cas multi-CPU
Priorit
A2 mq_sent sem_wait
Tche
A1
mq_receive
sem_post
Acadmie Navale
114
Le temps reel
Communication et Synchronisation
Memoire partagee
Denition
par des taches une zone memoire (struct, tableau) partagee au demarrage allocation faite dans un tas memoire de taille xe reserv e allocation dynamique de memoire temporellement deterministe ` coherent ` la memoire utiliser un mutex pour un acces a (race condition) erable communication inter-taches : le de messages pref (evite le mutex)
Fonction Xenomai rt heap create() rt heap delete() rt heap alloc() rt heap free() Fonction Posix shm open() close() nmap() unmap() Operation une memoire creer partagee partagee supprimer une memoire allouer de la memoire liberer de la memoire
Acadmie Navale
115
Le temps reel
Communication et Synchronisation
Signaux
Denition
equivalant pour les taches aux interruptions pour lOS avec une fonction gestionnaire du signal interruption logicielle associee par un numero (1 a ` SIGRTMAX (64 sous linux) ) signaux identies
Tche { sigaction() Tche signal_handler() { } }
Acadmie Navale
116
Le temps reel
Communication et Synchronisation
Signaux
Implementation Linux
au signaux manipulent une structure sigaction les fonctions liees ` gerer sigaction contient la liste des signaux a (.sa mask) et un pointeur (.sa handler) sur un gestionnaire associe de masquer des signaux dans les gestionnaires de signaux possibilite ` utiliser avec parcimonie ! (cas durgence) signaux a
Fonction Xenomai Fonction Posix sigemptyset sigaddset() sigaction() (pthread )kill() Operation initialiser et vider un set de signaux ajouter un signal activer le nouveau gestionnaire ` une tache envoi dun signal a
Acadmie Navale
117
Le temps reel
Communication et Synchronisation
Acadmie Navale
118
Plan
1
` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai timers, INT) Annexe : API specique Xenomai (taches,
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
119
Preemption et latence
La preemption
Denition
dun OS a ` interrompre une tache capacite en faveur dune autre tache superieure) (de priorite la preemption est necessaire pour satisfaire une politique dordonnancement et initier un changement de contexte les processus sexecutant dans lespace utilisateur sont toujours preemptibles sous Linux OS multitache et multi-utilisateur
Acadmie Navale
120
Preemption et latence
La preemption
Illustration 1 :
taches sexecutant dans lespace utilisateur ordonnancement en Round-Robin de 2 taches ayant pour quantum 2 ticks dhorloge systeme ` (temps dexecution alloue) et choisi la lorsque le quantum expire, lordonnanceur est appele prochaine tache
Priorit Premption par lOS: tche non finie mais quantum expir
Espace utilisateur
Processus A
121
Preemption et latence
La preemption
Illustration 2 :
B reveill preemption dune tache A par une tache de plus haute priorite ee par une interruption au retour dun ISR, Linux appelle toujours lordonnanceur : si une tache B que A, B est execut ee au lieu de poursuivre existe de plus haute priorite avec A cas non-preemptif : B devrait attendre pour demarrer la n du process A ou son blocage sur une I/O, une ressource.
Priorit Premption par lOS: tche A non finie mais B a une priorit > Espace utilisateur Processus A Espace noyau ordonnanceur ISR (rveil de B) INT
Acadmie Navale
Processus B
Processus A
Preemption et latence
Acadmie Navale
123
Preemption et latence
Processus B Premption espace user B ready et priorit > A peut ici tre stopp ordonnanceur
temps
124
Preemption et latence
ISR
temps
125
Preemption et latence
perte de temps en reordonnancements inutiles ; perte de temps en changements de contexte dexecution (overhead system)
` la fois accede ` aux structures de donnees du noyau ; une seule tache noyau a pas de risques de concurrences (race conditions) sur ces structures
evolution vers un noyau preemptif : multitache dans lespace noyau denition de sections critiques (non-preemptibles, ees par spinlock (mutex) pour eviter les non-interruptibles) proteg concurrences
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
126
Preemption et latence
Acadmie Navale
127
Preemption et latence
Tche bloque
Tche prte
Tche en execution
Latence dinterruption
Gestionnaire dinterruption
Interruption (INT)
Acadmie Navale
128
Preemption et latence
sous 2.4 (O(n)) constant sous 2.6 (O(1)), proportionnel au nombre de taches
preemption inactive (section critique) eral, que sur un front de dans le cas gen lordonnanceur nest appele ` lhorloge systeme (1000Hz)
Acadmie Navale
129
Preemption et latence
Acadmie Navale
130
integration progressive des modications dans le noyau 2.6 par des patches
Acadmie Navale
131
Acadmie Navale
132
code non-preemptif
void prune_dcache(int count) { spin_lock(&dcache_lock); for (;;) { /* do some work*/ } spin_unlock(&dcache_lock); }
Acadmie Navale
Implementation
introduction dun compteur preempt count et la sortie dun spinlock incr/decremente lentree le compteur par preempt disable() et decr ement par prempt enable() increment e e en sortie de spinlock, si preempt count==0 alors preempt enable() appelle la fonction de reordonnancement la sortie dun ISR realise le meme test e a ` partir des noyaux 2.5.4 (CONFIG PREEMPT) integr
Acadmie Navale
134
Acadmie Navale
135
Linux 2.0
Linux 2.22.4
Code Premptible
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
Code Nonpremptible
136
Linux + co-noyau
Le concept
est inser e entre le hardware et Linux un micro-noyau temps reel
specique ordonnanceur temps reel pas de dependance aux sections critiques Linux
les interruptions pour ses routines le micro-kernel capture en priorite avant Linux qui rec temps reel, oit alors des interruptions virtuelles (Virtualisation des interruptions) secondaire (actif qd le co-noyau inactif) Linux est un OS de priorite ` le micro-noyau garantit des temps de commutation de contexte tres courts performant (latence < 20s) ecie on ben de tout lenvironnement Linux (Xwindows, reseau) qui peut communiquer avec le micro-noyau via des IPC speciques
Acadmie Navale
137
interception et substitution des fonctions Linux gerant les interruptions ; materielles au prot du micro-noyau temps reel par RTLinux (proprietaire) utilise et RTAI (libre) ; par FSMLAB, rachat par VxWorks en 2007 approche brevetee ` permet le partage de ressources materielles par plusieurs systemes dexploitation concurrents ; developpement conjoint avec Xenomai par Philip Gerum sur un travail par Karim Yaghmour en 2001 ; theorique propose ` cause du brevet logiciel) migration de RTAI en 2003 sous ADEOS (a
Acadmie Navale
138
Type Linux preempt Linux RT PREEMPT RTAI Xenomai preemption native preemption native co-noyau co-noyau e integr
Etat stable en devlpt. actif stable, dvlpt chaotique stable, dvlpt actif
Acadmie Navale
139
ADEOS
Un couche de virtualisation
disponible sous forme dun patch pour Linux permet la cohabitation de plusieurs domaines (OS complexe, nano-noyau,...) tous ces domaines voient la couche Adeos et sont en concurrence pour enements ` traiter des ev externes (INT) ou internes (appel systeme)
Acadmie Navale
140
ADEOS
enement ` Le pipe dev ou I-pipe
` une priorite statique pour capturer les INT chaque domaine a enements ` par priorite aux domaines a ` travers un tube ev dispatches virtuel ` linstallation des autres domaines root domain : le domaine necessaire a (via des modules kernels ou adjonction de code)
Acadmie Navale
141
Xenomai
Xenomai : un micro-noyau dans le domaine primaire ADEOS
reception prioritaire des INT, independamment des tentatives de masquage par les ISR et sections critiques de Linux latence dINT predictible presence de 2 domaines entre lesquels une tache temps reelle xenomai peut migrer : primaire (Xenomai) et secondaire (Linux) quand elle a ` besoin dun appel systeme Linux par Xenomai peut etre lINT capturee au choix remis dans le tuyau pour Linux
Acadmie Navale
142
Xenomai
permettant de programmer Xenomai est un noyau temps reel
entierement ` des taches temps reel dans lespace noyau xenomai ; (TR) dans lespace utilisateur des taches temps reel
143
Xenomai
Tache TR dans lespace utilisateur
Domaine Linux (noyau standard) ISR ordonnanceur Migration Domaine Xenomai (conoyau) ISR ordonnanceur TR Virtualisation dinterruptions Contrle masque IRQ Sources dinterruptions Application TR espace kernel Applications TR espace utilisateur
Acadmie Navale
144
Xenomai
Tache TR dans lespace utilisateur (details)
protection memoire pour la tache ee dans le domaine Xenomai (primaire) execut
ee par lordonnanceur TR de xenomai ; ger du noyau Linux, tache toujours prioritaire sur une tache aucune inference Linux non-TR ; au hardware) ; latence minimaliste (lie ` si la tache fait un appel systeme Linux : dans le domaine Linux (secondaire) tache migree de la tache la priorite TR ; le noyau Linux herite la tache TR reste ainsi en competition avec les taches du domaine Xenomai ; ` aux appels systemes ` tache TR a acces Linux ; ` Linux) ; (competition possible avec taches interne a latence superieure si la tache fait un appel API Xenomai : dans le domaine Xenomai (primaire) tache migree
Acadmie Navale
145
Xenomai
Tache TR dans lespace utilisateur
illustration de la migration entre domaines
Appel systme Linux
domaine Linux domaine Xenomai temps Appel API Xenomai Migration Execution de la tche Xenomai Bouclier dinterruption (optionel)
Acadmie Navale
146
Xenomai API
Caracteristiques
erique le noyau Xenomai fournit les services dun RTOS gen lAPI native est une API parmi dautres utilisant ces services skins disponibles (POSIX, VxWorks,..) en plus de lAPI Native syntaxe commune pour la programmation dans lespace noyau et utilisateur
Acadmie Navale
147
Xenomai API/Posix
Categories de services
gestion des taches
une tache en parametre ` creer avec une priorite rt task create() / pthread create() denir une thread comme periodique rt task set periodic() / pthread make periodic np() denir une thread comme periodique rt timer read() / clock gettime() un semaphore creer rt sem create() / sem init() un gestionnaire dinterruption (noyau) creer rt intr create() / pthread intr attach np()
synchronisation
gestion dinterruption
Acadmie Navale
148
` letude on se limite a de lAPI Native et Posix de Xenomai les autres API fournissent les memes services avec une syntaxe differente on presentera la programmation dans lespace noyau (module) et utilisateur (programmation classique) en labsence de programmation au niveau dun driver, on privilegiera la programmation dans lespace utilisateur (programmation plus classique, usage C++ possible, protection memoire)
Acadmie Navale
149
150
int init_module (void) { rt_timer_set_mode( TM_ONESHOT ); /*initialisation du timer ns*/ rt_task_create( &mytask, "rtiti_task",TASK_STKSZ,TASK_PRIO,TASK_MODE ); /*creatio return 0; }
lors de linsertion du module dans le noyau init module () : fonction appelee ; (initialisation variables, structures, taches et objets temps reel) lors du dechargement cleanup module () : fonction appelee du module es) (liberation des divers objets cre
` et Systemes ` Systemes temps reel embarques
Acadmie Navale
151
KDIR = /lib/modules/$(shell uname -r)/build PWD = $(shell pwd) EXTRA_CFLAGS = -I/usr/xenomai/include -I/usr/xenomai/include/posix -I/usr/include/ default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules clean: rm -f *.o *.ko *.mod.c
Acadmie Navale
152
void* mineTask (void* cookie) { struct timespec tp, rqtp; rqtp.tv_sec=SAMPLING_PERIOD; rqtp.tv_nsec=0; clock_gettime( CLOCK_REALTIME, &tp) ; tp.tv_sec=tp.tv_sec+1; pthread_make_periodic_np(pthread_self(),&tp, &rqtp); while(1) { ... } return NULL; } Acadmie Navale
` et Systemes ` Systemes temps reel embarques
153
int init_module (void) { struct sched_param par; par.sched_priority=99; printk("Exemple : init\n"); pthread_attr_init (&attr); pthread_attr_setschedpolicy(&attr,SCHED_RR); pthread_attr_setschedparam (&attr,&par); pthread_create( &m_thread, &attr,mineTask , NULL ); /*destruction de la t ache*/ return 0; }
void cleanup_module (void) { pthread_cancel( m_thread ); /*destruction de la t ache*/ printk("Exemple : exit\n"); } MODULE_LICENSE("GPL");
Acadmie Navale
154
Acadmie Navale
155
Acadmie Navale
156
void sampling_task (void *cookie) { int err; /* The task will undergo a 100 usc periodic timeline. */ err = rt_task_set_periodic(NULL,TM_NOW,TASK_PERIOD); ... for (;;) { err = rt_task_wait_period(); if (err) break; /* Work for the current period */ } }
Acadmie Navale
157
` la fois pour xenomai (TR dur) et Linux classique (TR mou) compilable a ` aux ordonnanceurs temps reel de Linux : SCHED FIFO, SCHED RR, acces (SCHED OTHER pour les non-TR)
APPLICATIONS = exemple XENO ?= /usr/xenomai XENOCONFIG=$(shell PATH=$(XENO):$(XENO)/bin:$(PATH) which xeno-config 2>/dev/null) CC=$(shell $(XENOCONFIG) --cc) CFLAGS=$(shell $(XENOCONFIG) --xeno-cflags) $(MY_CFLAGS) LDFLAGS=$(shell $(XENOCONFIG) --xeno-ldflags) $(MY_LDFLAGS) -lnative all:: $(APPLICATIONS) clean:: $(RM) $(APPLICATIONS) *.o
Acadmie Navale
158
/*periode en secondes*/
int main(int argc, char* argv[]) { struct sched_param par; par.sched_priority=99; pthread_attr_init (&attr); pthread_attr_setschedpolicy(&attr,SCHED_RR); pthread_attr_setschedparam (&attr,&par); /* Avoids memory swapping for this program */ mlockall(MCL_CURRENT|MCL_FUTURE); pthread_create( &m_thread, &attr,rst , NULL ); /*creation de la tache*/ pthread_join ( m_thread, NULL); /*attente fin tache rst*/ pthread_cancel( m_thread ); } /*destruction tache*/
Acadmie Navale
159
void* rst(void *arg) { int i=0; struct timespec tp, rqtp; rqtp.tv_sec=SAMPLING_PERIOD; rqtp.tv_nsec=0; clock_gettime ( CLOCK_REALTIME, &tp) ; tp.tv_sec=tp.tv_sec+1; pthread_make_periodic_np(pthread_self(),&tp, &rqtp); while (i<10) { pthread_wait_np(NULL); printf("1periode\n"); i++; } }
Acadmie Navale
160
Installation de Xenomai
Compilation/Conguration de Xenomai
Patch des source du noyau Linux
patch et source de la suite Xenomai disponible sous forme darchives (tar xf xenomai-xx.x.tbz) ancienne version : patch direct du kernel patch -p1 < ../xenomai/arch/i386/patches/[adeos-patch-for-your-kernel-version] version recentes : script interactif pour le patch sh xenomai/scripts/scripts/prepare-kernel.sh
Note
les services de gestion dinterruptions ne sont pas compil es par defaut
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
161
Installation de Xenomai
La suite xenomai
compiler dans le repertoire source de Xenomai : (cd xenomai-xx.x ; ./congure ;make ;make install)
utilitaires de test de xenomai (latency) et information sur les ags de compilation (xeno-cong) ` entetes et bibliotheques pour les programmes du domaine secondaire (userspace) et les differents skin (API Native, POSIX, VXWORKS) documentation
Acadmie Navale
162
Plan
1
` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai timers, INT) Annexe : API specique Xenomai (taches,
Acadmie Navale
` et Systemes ` Systemes temps reel embarques
163
rt task wait period () rt task set priority (RT TASK *task, int prio) rt task catch(void(*)(rt sigset t) handler) ...
API temps
rt timer set mode (RTIME nstick) rt timer tsc (void) rt timer spin (RTIME ns) rt timer ns2tsc (SRTIME ns)
Acadmie Navale
Demarre le timer. Argument TM ONE SHOT pour un timer aperiodique et une valeur en ns pour un timer periodique. Retourne la valeur courante du TSC Attente active (charge le CPU) Conversion ns vers nombre de ticks CPU
164
rt intr create (RT INTR *intr, const char *name, unsigned irq, rt isr t isr, rt iack t iack, int mode) rt intr create (RT INTR *intr, const char *name, unsigned irq, int mode) rt intr delete (RT INTR *intr) rt intr wait (RT INTR *intr, RTIME timeout) rt intr enable (RT INTR *intr) rt intr disable (RT INTR *intr)
un descripteur dINT associe a ` lISR isr Cree dans lespace kernel Creation dun descripteur dINTdans lespace user pour utilisatoin avec rt intr wait Destruction du descripteur dINT ` la prochaine INT Suspend la tache jusqua Demasque linterruption Masquer linterruption
Acadmie Navale
165