TP Xenomai.pdf

19
7/21/2019 TP Xenomai.pdf http://slidepdf.com/reader/full/tp-xenomaipdf 1/19  : TP 1&2 Année Universitaire : 2012 –  2013 Realisé par nc dr nt  : Pr . I. LAGRAT Installation de Xenomai 2 6 0 sur Ubuntu LAGDEM Abed JAMEA Oussama LAHLAOI Mohamed

Transcript of TP Xenomai.pdf

Page 1: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 1/19

 

: TP 1&2

Année Universitaire : 2012 –  2013

Realisé par

nc dr nt

 : Pr . I. LAGRAT 

Installation de

Xenomai 2 6 0 sur Ubuntu

LAGDEM Abed

JAMEA Oussama

LAHLAOI Mohamed

Page 2: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 2/19

2

TP1:  

Page 3: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 3/19

3

la procédure de l’installation de Xenomai 

La premiére etape est télécharger Xenomai et Linux noyau

Ou :on peut utiliser ces commandes pour les télécharger :

(root) # wget http://download.gna.org/xenomai/stable/xenomai-2.6.0.tar.bz2 (root) # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.8.tar.bz2 

Page 4: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 4/19

4

Préparation des sources de Linux

Les sources de Xenomai 2.6.0 et de Linux 2.6.38.8 sont téléchargées dans le repertoire :

/home/lagdem/Downloads/

 Nous disposons donc des répertoires

 

/usr/src/xenomai-2.6.0 : contenant entre autres les sources des bibliothèques deXenomai (que nous compilerons en second lieu);

Page 5: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 5/19

5

 

/usr/src/linux-2.6.38.8-xenomai : les sources du noyau Linux modifié par le patch

Adeos/Xenomai.

Compilation du noyau

 Nous parons de la configuration du noyau Linux 2.6.38 telle qu’elle était fournie avecUbuntu, puis nous la modifierons pour ajuster certains paramètres à Xenomai.

Ici on a pas le fichier config-2.6.38-11-generic donc on tape les commandes pour le

telecharger : root # cd /boot

root # wget http://www.blaess.fr/christophe/files/article-2011-12-28/config-

2.6.38-11-generic 

Et on copie ce fichier par : root # cp /boot/config-2.6.38-11-generic ./.config

Page 6: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 6/19

6

Dans le menu de configuration, il faut réaliser quelques modifications, aprés

téléchargement et instalation du ncurces comme indiqué ci dessus

Page 7: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 7/19

7

téléchargement et instalation du ncurces 

Page 8: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 8/19

8

Et voila le menu de configuration, il faut réaliser quelques modifications. 

Ceci est juste un élément de confort afin de retrouver facilement le fichier .config du

noyau (dans /proc/config.gz). Je l’utilise systématiquement, sauf dans le cas d’un

système embarqué avec de fortes contraintes de taille mémoire.

Page 9: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 9/19

9

Page 10: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 10/19

10

Enfin on enregistrer les modifications quand on a effectuer :

Le fichier .config étant préparé, nous pouvons démarrer la compilation en utilisant la

méthode Debian / Ubuntu, en ajoutant l’option CONCURRENCY_LEVEL=5 avant make-

kpkg, lancer plusieurs tâches de compilation en parallèle. 

Page 11: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 11/19

11

La compilation crée dans le répertoire /usr/src les packages .deb correspondant au

nouveau kernel. Installons-les.

Et redémarrons sur le nouveau noyau.

[src]# /sbin/rebootAu moment du redémarrage, il est nécessaire de choisir dans le menu de Grub

« Previous Linux versions  » puis « Ubuntu, avec Linux 2.6.38.8-xenomai «

Page 12: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 12/19

12

nous pouvons vérifier que tout va bien :

ompilation des bibliothèques de Xenomai

Page 13: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 13/19

13

Page 14: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 14/19

14

Tests

Pour tester le bon fonctionnement de Xenomai, quelques outils de mesure sont livrés avecle système.

Page 15: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 15/19

15

TP2 :Les Bases de la Real-Time L inux

Objectifs

Ce qui suit sont les principaux objectifs de cet exercice:

- Pour apprendre comment Xenomai fonctionne et de construire une tâche temps réelXenomai.

Comment fonctionne RT Linux travail?

L'idée générale de la RT Linux, c'est que d'un petit noyau temps réel, s’exécute sous Linux,ce qui signifie que le noyau en temps réel a une priorité plus élevée que le noyau Linux. En

temps réel les tâches sont exécutées par le noyau temps-réel, et celle de Linux normales

sont autorisées à s'exécuter quand les tâches temps réel ne sont pas exécutés. Linux peut

être considéré comme la tâche d'inactivité de l'ordonnanceur temps réel. Comme le noyau

temps réel a une priorité plus élevée, un processus normal de Linux est préempté quand une

tâche temps réel devient prêt à fonctionner et la tâche temps réel est exécutéimmédiatement.

Création d'une tâche 

Lorsque vous créez une tâche temps réel Xenomai, la structure RT_TASK est utilisé

comme descripteur de référer pour cette tâche.

 

Une structure de données RT_TASK est utilisé pour contenir toutes les informationssur une tâche:

o la fonction à exécuter par la tâche temps réel,

o argument,

o la taille de la pile alloué pour ses variables,

o sa priorité,

o si elle utilise des calculs en virgule flottante,

o et un «gestionnaire de signal" qui sera appelée lorsque la tâche devient actif. 

  La tâche est créée en appelant 

int rt_task_create (RT_TASK *task, const char *name, int stack_size,int priority, int mode)

Page 16: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 16/19

16

Bonjour tout le monde

Le code C « ex01.c » illustre la création et le début d'une tâche demo qui écrit un message.

#include <stdio.h> #include <signal.h> 

#include <unistd.h> 

#include <sys/mman.h> 

#include <native/task.h> 

#include <native/timer.h> 

#include <rtdk.h> 

RT_TASK demo_task; 

void demo(void arg) 

 

RT_TASK curtask; 

RT_TASK_INFO curtaskinfo; // hello world 

rt_printf("Hello World!\n"); 

// inquire current task 

curtask=rt_task_self(); 

rt_task_inquire(curtask,&curtaskinfo); 

// print task name 

rt_printf("Task name : %s \n", curtaskinfo.name); 

int main(int argc, char argv*+) 

 

char str*10+ ; 

// Perform auto-init of rt_print buffers if the task doesn't do so 

rt_print_auto_init(1); 

// Lock memory : avoid memory swapping for this program 

mlockall(MCL_CURRENT|MCL_FUTURE); 

rt_printf("start task\n"); 

Arguments: &task, 

name, 

stack size (0=default), 

priority, 

mode (FPU, start suspended, ...) 

sprintf(str,"hello"); 

rt_task_create(&demo_task, str, 0, 50, 0); 

Arguments: &task, 

task function, 

function argument 

rt_task_start(&demo_task, &demo, 0); 

Page 17: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 17/19

17

Pour créer le programme ci-dessus, on tape la commande : gedit ex01.c

Page 18: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 18/19

18

La bibliothèque rdtk impression temps réel

Notez que dans le code ci-dessus, nous avons utilisé rt_ printf () au lieu de la commande printf (). Nous n'avons pas

utilisé printf (), car il utilise les appels système Linux et par conséquent ralentit terriblement le thread temps réel.

Au lieu de cela, nous utilisons rt_printf à partir de la bibliothèque impression temps réel rdtk. elle est intégrée dans

la partie espace utilisateur Xenomai, mais elle ne dépend pas des services Xenomai. Elle utilise uniquement l’API

POSIX. Le librtprint API ressemble beaucoup à printf: 

  rt_vfprintf  

  rt_vprintf  

  rt_fprintf  

  rt_printf  

Pour démarrer le thread de sortie non-RT il faut appeler le code suivant au début d'un programme Xenomai: 

rt_print_auto_ init (1);

Cette auto-init initialise le buffer de rt_print et de démarrer le thread de sortie non-RT. 

Compiler un programme de Xenomai

Pour compiler le programme ci-dessus, il faut d'abord obtenir les CFLAGS et LDFLAGS en exécutant

> xeno-config --xeno-cflags

et > xeno-config --xeno-ldflags

Pour définir ces flags, utilisez

> export CFLAGS=`xeno-config --xeno-cflags`

et > export LDFLAGS=`xeno-config --xeno-ldflags`

Enfin, compiler le programme ex01.c avec la bibliothèque native implémentant l’API Xenomai et la

 bibliothèque 'rtdk' print library

> gcc $CFLAGS $LDFLAGS -lnative -lrtdk ex01.c -o ex01

Par défaut 'ex01' est lié avec les bibliothèques dynamiques dans /usr/xenomai/lib. Nous devons d'abord

indiquer à Linux où les trouver à l’aide de la variable d'environnement LD_LIBRARY_PATH : 

> export LD_LIBRARY_PATH=/usr/xenomai/lib

Puis exécuter le programme: 

>. / Ex01

Page 19: TP Xenomai.pdf

7/21/2019 TP Xenomai.pdf

http://slidepdf.com/reader/full/tp-xenomaipdf 19/19