Académique Documents
Professionnel Documents
Culture Documents
VX PDF
VX PDF
VxWorks
Frank Singhoff
Bureau C-203
Universit de Brest, France
LISyC/EA 3883
singhoff@univ-brest.fr
a
footprint ou empreinte mmoire.
UE systmes temps rel, Universit de Brest Page 3/87
Excutif : architecture et services (1)
Caractrisques de lexcutif :
Environnement
de dveloppement
Utilitaires
Agence Agence
tches temps
Noyau
Agence Agence
mmoire E/S
Application
Excutif (ex : VxWorks)
Noyau de lexcutif
Couche matrielle
Carte
Contrleur srie Processeur
Critres de performances :
Latence sur interruption.
Latence sur commutation de contexte/tche.
Latence sur premption.
Smaphore "shuffle" (temps coul entre la libration dun
smaphore et la ractivation dune tche bloque sur celui-ci).
Temps de rponse pour chaque service (appel systme, fonctions de
bibliothque).
etc.
UE systmes temps rel, Universit de Brest Page 7/87
Excutif : architecture et services (5)
. TCP/IP sur
Ethernet , liens
sries, etc
. TFTP, NFS
Environnement de
dveloppement Machine cible
GDB RGDB
rsh
OS temps rel
Disque NFS
25
21.42
19.7
20
Pourcentage
15
12.84
10.19
10
6.64 5.96
5
4.69
3.89
2.86 2.41 2.3 1.95
1.83 1.72 1.61
uc E
X
III
S
S
-L X
S9
+
T
S
Ch ux
s
ire
X
ks
sC
O
re
us
RT
O
sN
RT T
N
X
O
or
in
ta
nx
us
pS
ut
R
le
Q
w
ri
V
W
A
or
Ly
do
iR
do
vx
op
N
in
in
pr
W
W
n
tio
lu
So
Produits "open-source" :
Problmes :
Portabilit difficile car il existe beaucoup de diffrences entre les
UNIX.
Tout nest pas (et ne peut pas) tre normalis.
Divergence dans limplantation des services POSIX (ex : threads sur
Linux).
Architecture de la norme.
Exemple de systmes POSIX : Lynx/OS, VxWorks, Solaris, Linux,
QNX, etc .. (presque tous les systmes temps rel).
Nom Signification
_POSIX_PRIORITY_SCHEDULING Ordonnancement
priorit fixe
_POSIX_REALTIME_SIGNALS Signaux temps rel
_POSIX_ASYNCHRONOUS_IO E/S asynchrones
_POSIX_TIMERS Chien de garde
_POSIX_SEMAPHORES Smaphores
etc ...
Consquence : que veut dire "tre conforme POSIX 1003.1b" ... pas
grand chose puisque la partie obligatoire nest pas suffisante pour
construire des applications temps rel.
int a=100;
int a=100;
sleep(1);
printf("a = %d\n",a);
}
= gain de temps
= gain de "place" mmoire, de ressources
= gain de prdictiblit (cf. contraintes systmes embarqus
temps rel).
Exemple de bibliothques :
taskLib. Gestion des tches.
sockLib. Sockets BSD.
f tpLib. Client FTP.
Ethernet
Commandes du chargeur :
3. Chargement de lexcutif :
[VxWorks Boot]: @
->
UE systmes temps rel, Universit de Brest Page 28/87
Compilation croise (1)
La chane de compilation sur lhte (ex : Sun) est constitue de :
cpp68k. Prprocesseur.
cc68k. Compilateur C.
ld68k. Editeur de liens (dition incrmentale uniquement).
nm68k. Liste les symboles dun objet.
as68k. Assembleur 68000.
ar68k et ranlib68k. Outils de construction de bibliothques.
Les binaires produits par ces commandes ne sont pas excutables sur
Sun mais sur la cible (Motorola 68000 + VME).
helloWorld() {
int id=taskIdSelf();
printf("Nom = %s ; Id = %x\n",taskName(id),id);
}
Compilation sur lhte (pas ddition de liens) :
kermorvan$cc68k -g -c hello.c -DCPU=MC68030
Services offerts :
Chargement de code et de donnes. Edition des liens.
Mise au point (niveau assembleur).
Consultation et modification des ressources VxWorks
(ex : tches).
Gestion de symbole des modules.
Services classiques offerts par un shell : variables,
redirection E/S, appel de fonction, historique, etc.
stack: base 0x3a8460 end 0x3a5d50 size 9000 high 4092 margin 4908
Scnario dexcution :
-> ld < var.o
-> affiche()
var = 100
-> affiche()
var = 300
UE systmes temps rel, Universit de Brest Page 36/87
Le shell VxWorks (6)
Principales commandes du shell VxWorks :
sp, td, ts, tr, repeat. Oprations sur les tches : cration,
suppression, etc.
Ethernet
Sur lhte :
1. Lancement de gdb :
kermorvan$vxgdb&
2. Connexion la cible :
(vxgdb)target vxworks vxkermorvan
3. Lancement dune tche :
run helloWorld
4. Commandes vxgdb : break, list, step, next, display, printf, etc.
Ordonnancement et tches.
Synchronisation : les smaphores.
Communication : pipe et file de messages.
Manipulation du temps.
Gestion des interruptions.
Drivers et vxWorks.
a
Highest Priority First.
UE systmes temps rel, Universit de Brest Page 42/87
Ordonnancement (2)
pended ready delayed
suspended
a
Task Control Block
init() {
tid=taskSpawn("fils1",101,0,5000,
(FUNCPTR)coucou,0,0,0,0,0,0,0,0,0,0);
tid=taskSpawn("fils2",101,0,5000,
(FUNCPTR)coucou,0,0,0,0,0,0,0,0,0,0);
}
Excution :
-> ld < pere.o
-> sp init
task spawned: id = 0x3a59a0, name = fils1
task spawned: id = 0x3a59a1, name = fils2
Tache fils1
Tache fils2
permet dutiliser un
timeout infini.
semDelete(sem) Destruction du smaphore.
void tache() {
while(1) {
semTake(msm,WAIT_FOREVER);
/* utiliser la section critique */
semGive(msm);
}
}
void init() {
msm = semMCreate(SEM_INVERSION_SAFE | SEM_Q_PRIORITY);
tid = taskSpawn("mut1",101,0,5000,(FUNCPTR)tache,
0,0,0,0,0,0,0,0,0,0);
tid = taskSpawn("mut2",101,0,5000,(FUNCPTR)tache,
0,0,0,0,0,0,0,0,0,0);
}
UE systmes temps rel, Universit de Brest Page 50/87
Synchronisation : les smaphores (5)
Les smaphores compteur : smaphore
mmorisant le nombre doprations effectues.
init() {
imprimantes=semCCreate(0,NB_IMPRIMANTES);
}
init() {
int i;
section_critique=semMCreate(0);
for(i=0;i<NB_TACHES;i++) {
sempriv[i]=semCCreate(0,0);
taches[i]=FAIT_QQ_CHOSE;
taskSpawn(...);
}
}
UE systmes temps rel, Universit de Brest Page 54/87
Synchronisation : les smaphores (9)
/* Allouer les ressources pour la tache "id" */
void allouer(int id)
{
semTake(section_critique,WAIT_FOREVER);
if(ressources<0)
{
taches[id]=ATTENDRE;
}
else {
taches[id]=UTILISER;
ressources--;
semGive(sempriv[id]);
}
semGive(section_critique);
semTake(sempriv[id],WAIT_FOREVER);
}
semTake(section_critique,WAIT_FOREVER);
taches[id]=FAIRE_QQ_CHOSE;
ressources++;
for(i=0;i<NB_TACHES;i++)
if( (ressources>0) && (taches[i]==ATTENDRE) )
{
ressources--;
taches[i]=UTILISER;
semGive(sempriv[i]);
}
semGive(section_critique);
}
UE systmes temps rel, Universit de Brest Page 56/87
Communication (1)
Outils de communication offerts :
Tche A Tche B
void init() {
msg = msgQCreate(20,500,MSG_Q_FIFO);
tid=taskSpawn("cons",101,0,10000,
(FUNCPTR)consommateur, 0,0,0,0,0,0,0,0,0,0);
tid=taskSpawn("prod",101,0,10000,
(FUNCPTR)producteur, 0,0,0,0,0,0,0,0,0,0);
}
void producteur() {
char buff [100];
while(1) {
sprintf(buff,"Il est %d tics\n",tickGet());
msgQSend(msg,buff,sizeof(buff),
WAIT_FOREVER,MSG_PRI_NORMAL);
}
}
UE systmes temps rel, Universit de Brest Page 60/87
Communication (5)
void consommateur()
{
char buff [100];
while(1)
{
strcpy(buff,"");
msgQReceive(msg,(char *) buff,sizeof(buff),
WAIT_FOREVER);
printf("message = %s\n",buff);
}
}
Scnario dexcution :
-> sp init
message = Il est 32262 tics
message = Il est 33002 tics
...
trop_tard() {
go=-1;
}
...
wd=wdCreate();
wdStart(wd,echeance,(FUNCPTR)trop_tard,0);
while(go>0) {
printf("Je Bosse .....\n");
taskDelay(10);
}
printf("Debloquee par interruption : echeance ratee\n");
Scnario dexcution :
-> sp echeance
Je Bosse .....
Je Bosse .....
Debloquee par interruption : echeance ratee
UE systmes temps rel, Universit de Brest Page 65/87
Gestion des interruptions (1)
Prise en compte
interruption
Traitement
interruption
Tche x Tche x
Sauvegarde Restauration
contexte
contexte
Caractristiques :
Modification possible du vecteur dinterruption.
Une seule pile pour toutes les interruptions (attention aux interruptions imbriques).
Pas de co-gestion tches/interruptions : contexte interruption diffrent = services
de lexcutif pas tous disponibles dans une interruption (ex : oprations bloquantes,
E/S, etc).
Partie dpendante du BSP.
Appels systmes
Noyau
Table de drivers
create remove open close read write ioctl
1
2
3
4
Installation du driver :
int demoDrvMajor=-1;
STATUS demoDrv () {
demoDrvMajor = iosDrvInstall (demoOpen, (FUNCPTR)NULL, demoOpen,
demoClose, demoRead, demoWrite, demoIoctl);
}
Descripteur de priphrique :
typedef struct {
DEV_HDR devHdr;
char data[MAX_SIZE];
} demo_dev;
void read_file() {
char buff [100];
int nb=read(fd,&buff,20);
printf(" read ; size = %d ; text = %s\n",nb,buff);
}
(5) (4)
(1)
Majeur valeur
0
1
Table de descripteurs de fichiers 2
3 2 xxdev
4
5
(2) (3)
Table de drivers
(1)
Majeur valeur
0
1
2
Table des descripteurs de fichiers 3 2 xxdev
4
5
(2)
(3)
Table de drivers
Gnralits :
Notion de systmes embarqus temps rel.
Diffrences entre un excutif et un systme dexploitation.
Modularit, architecture hte/cible, portabilit, BSP.
Etat du march.
VxWorks :
Abtractions : tches, adressage virtuel unique, outils de
communication et de synchronisation.
Utilisation de lenvironnement de compilation et dexcution.
API de lexcutif (ordonnancement, outils de communication et de
synchronisation).
UE systmes temps rel, Universit de Brest Page 84/87
Sommaire
1. Gnralits sur les systmes embarqus temps rel.
2. Le systme VxWorks.
3. Rsum.
4. Rfrences.
[DEM 94] I. Demeure and J. Farhat. Systmes de processus lgers : concepts et exemples
. Technique et Science Informatiques, 13(6):765795, dcembre 1994.
[DEN 66] B. Dennis and E. C. Van Horn. Programming Semantics for Multiprogrammed
Computations . Communications of the ACM, 9(3):143155, March 1966.
[GAL 95] B. O. Gallmeister. POSIX 4 : Programming for the Real World . OReilly and
Associates, January 1995.
[GHO 94] K. Ghosh, B. Mukherjee, and K. Schwan. A survey of Real Time Operating
Systems . Technical Report, College of Computig. Georgia Institute of Technology.
Report GIT-CC-93/18, February 1994.
[J. 93] J. M. Rifflet. La programmation sous UNIX. Addison-Wesley, 3rd edition, 1993.
[RIV 97] Wind River. VxWorks : programmers guide. Wind River System, March 1997.
[TIM 00] M. Timmerman. RTOS Market survey : preliminary result . Dedicated System
Magazine, (1):68, January 2000.
[VAH 96] U. Vahalia. UNIX Internals : the new frontiers. Prentice Hall, 1996.