L’installation de la dernière version de Xenomai (2.6.0) sur une carte Pandaboard ne devrait en principe pas présenter de difficultés. En principe. Mais en pratique je crois être tombé dans tous les pièges possibles avant d’arriver à faire fonctionner correctement mon système. Je vous fais grâce de mes mésaventures, et voici donc un petit résumé des opérations à réaliser pour pouvoir disposer de temps-réel strict sur la carte Pandaboard.
Chaîne de compilation
J’ai habituellement un regard assez dubitatif sur les personnes qui accusent le compilateur de ne pas fournir le code attendu. Il a quand même fallu que je finisse par me poser la question lorsque le noyau modifié et les bibliothèques Xenomai étaient incompatibles et que j’étais obligé de modifier manuellement des Makefile pour forcer la compilation. En fait les options de compilation de Xenomai (notamment FASTSYNCH
) dépendent du type de processeur cible. Et ce dernier est déterminé en interrogeant le compilateur… Alors que dans le noyau Linux les options dépendent de la configuration choisie manuellement lors du make menuconfig
.
Mon tort avait été d’utiliser une chaîne de compilation Arm générique, que j’avais préparée pour une carte IGEPv2 comme je l’avais décrit dans cet article.
Pour que la compilation des bibliothèques et applications Xenomai se passe bien, il faut utiliser une toolchain adaptée au processeur de la Pandaboard. Ce dernier est basé sur un coeur Cortex A9. Voici la préparation de la toolchain avec la dernière version de Buildroot.
[~]$ cd Projets/Panda/ [Panda]$ wget http://buildroot.uclibc.org/downloads/buildroot-2011.08.tar.bz2 --2011-11-27 06:52:17-- http://buildroot.uclibc.org/downloads/buildroot-2011.08.tar.bz2 Résolution de buildroot.uclibc.org... 140.211.167.224 Connexion vers buildroot.uclibc.org|140.211.167.224|:80... connecté. requête HTTP transmise, en attente de la réponse... 200 OK Longueur: 1838467 (1,8M) [application/x-bzip2] Sauvegarde en : «buildroot-2011.08.tar.bz2.1» 100%[=======================================================================>] 1 838 467 64,7K/s ds 39s 2011-11-27 06:52:57 (45,9 KB/s) - «buildroot-2011.08.tar.bz2.1» sauvegardé [1838467/1838467] [Panda]$ tar xjf buildroot-2011.08.tar.bz2 [Panda]$ cd buildroot-2011.08/ [buildroot-2011.08]$ wget https://www.blaess.fr/christophe/files/article-2011-11-27/config-buildroot-2011.08-Pandaboard --2011-11-27 06:53:48-- https://www.blaess.fr/christophe/files/article-2011-11-27/config-buildroot-2011.08-Pandaboard Résolution de www.blaess.fr... 217.16.3.18 Connexion vers www.blaess.fr|217.16.3.18|:80... connecté. requête HTTP transmise, en attente de la réponse... 200 OK Longueur: 18679 (18K) [text/plain] Sauvegarde en : «config-buildroot-2011.08-Pandaboard» 100%[=======================================================================>] 18 679 31,1K/s ds 0,6s 2011-11-27 06:53:49 (31,1 KB/s) - «config-buildroot-2011.08-Pandaboard» sauvegardé [18679/18679] [buildroot-2011.08]$ mv config-buildroot-2011.08-Pandaboard .config [buildroot-2011.08]$ make menuconfig
Éditez l’option « Host dir » du menu « Build options » pour choisir le chemin absolu d’installation de la toolchain. Par défaut le chemin est /home/cpb/cross-panda
ce qui correspond à l’installation dans mon répertoire personnel. Pensez donc à l’adapter à votre environnement. Puis lancez la compilation avec
[buildroot-2011.08]$ make
La durée de cette étape varie très nettement suivant la puissance du processeur, l’activité du système et la vitesse du réseau. Disons qu’elle se mesure en dizaines de minutes. Elle nous fournira seulement la chaîne de compilation, je n’ai rien sélectionné d’autre dans la configuration de Buildroot (mais rien ne vous en empêche). La compilation se terminera ainsi :
[...] for dir in ; do for lang in $(cd $dir; ls .|grep -v man); do grep -qx $lang /home/cpb/Projets/Panda/buildroot-2011.08/output/build/locales.nopurge || rm -rf $dir/$lang; done; done rm -f /home/cpb/Projets/Panda/buildroot-2011.08/output/build/.fakeroot* [buildroot-2011.08]$
Compilation du noyau Linux
Pour savoir quel noyau Linux utiliser, il nous faut d’abord télécharger la version désirée de Xenomai et regarder quels patches sont disponibles.
[~]$ cd ~/Projets/Panda/ [Panda]$ wget http://download.gna.org/xenomai/stable/xenomai-2.6.0.tar.bz2 --2011-11-27 07:23:30-- http://download.gna.org/xenomai/stable/xenomai-2.6.0.tar.bz2 Résolution de download.gna.org... 78.40.125.79 Connexion vers download.gna.org|78.40.125.79|:80... connecté. requête HTTP transmise, en attente de la réponse... 200 OK Longueur: 21068430 (20M) [application/x-bzip2] Sauvegarde en : «xenomai-2.6.0.tar.bz2» 100%[=========================================================================>] 21 068 430 54,5K/s ds 3m 45s 2011-11-27 07:27:16 (91,5 KB/s) - «xenomai-2.6.0.tar.bz2» sauvegardé [21068430/21068430] [Panda]$ tar xjf xenomai-2.6.0.tar.bz2 [Panda]$ ls xenomai-2.6.0/ksrc/arch/arm/patches/ adeos-ipipe-2.6.35.9-arm-1.18-03.patch adeos-ipipe-2.6.37.6-arm-1.18-03.patch adeos-ipipe-2.6.38.8-arm-1.18-04.patch mxc README [Panda]$
La version 2.6.0 de Xenomai propose donc un patch pour le noyau Linux 2.6.38.8. Nous allons donc télécharger ce dernier.
[Panda]$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.8.tar.bz2 --2011-11-27 07:34:33-- http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.8.tar.bz2 Résolution de www.kernel.org... 149.20.4.69 Connexion vers www.kernel.org|149.20.4.69|:80... connecté. requête HTTP transmise, en attente de la réponse... 200 OK Longueur: 74811146 (71M) [application/x-bzip2] Sauvegarde en : «linux-2.6.38.8.tar.bz2» 100%[=========================================================================>] 74 811 146 1,41M/s ds 88s 2011-11-27 07:36:01 (831 KB/s) - «linux-2.6.38.8.tar.bz2» sauvegardé [74811146/74811146] [Panda]$ tar xjf linux-2.6.38.8.tar.bz2 [Panda]$
Ce noyau pose un souci pour la Pandaboard en ce qui concerne l’initialisation du limitateur de courant. La conséquence est que la carte risque de s’éteindre automatiquement dès que l’on exécute une opération qui réclame une augmentation de la consommation électrique (communication sur port série, etc.) Heureusement il existe un patch pour la série des Linux 2.6.38 permettant de corriger ce problème. J’ai passé quelques heures à modifier la configuration du noyau avant de le découvrir… Appliquons ce patch.
[Panda]$ cd linux-2.6.38.8/ [linux-2.6.38.8]$ wget https://www.blaess.fr/christophe/files/article-2011-11-27/pandaboard-current-2.6.38.patch --2011-11-27 07:46:56-- https://www.blaess.fr/christophe/files/article-2011-11-27/pandaboard-current-2.6.38.patch Résolution de www.blaess.fr... 217.16.3.18 Connexion vers www.blaess.fr|217.16.3.18|:80... connecté. requête HTTP transmise, en attente de la réponse... 200 OK Longueur: 1745 (1,7K) [text/plain] Sauvegarde en : «pandaboard-current-2.6.38.patch» 100%[==========================================================================>] 1 745 --.-K/s ds 0s 2011-11-27 07:46:56 (32,2 MB/s) - «pandaboard-current-2.6.38.patch» sauvegardé [1745/1745] [linux-2.6.38.8]$ patch -p1 < pandaboard-current-2.6.38.patch patching file arch/arm/mach-omap2/board-omap4panda.c [linux-2.6.38.8]$ cd .. [Panda]$
Avant de compiler le noyau, il convient de le modifier pour y incorporer les ajouts de Xenomai (notamment ipipe, le pipeline d’interruption bas-niveau).
[Panda]$ cd xenomai-2.6.0/ [xenomai-2.6.0]$ scripts/prepare-kernel.sh --linux=../linux-2.6.38.8 --adeos=ksrc/arch/arm/patches/adeos-ipipe-2.6.38.8-arm-1.18-04.patch --arch=arm patching file arch/arm/Kconfig patching file arch/arm/boot/compressed/head.S patching file arch/arm/common/gic.c patching file arch/arm/common/it8152.c patching file arch/arm/common/timer-sp.c [...] patching file mm/mmu_context.c patching file mm/mprotect.c patching file mm/vmalloc.c [xenomai-2.6.0]$ cd .. [Panda]$
Puis compilons enfin notre noyau Linux modifié. Pour cela j’ai préparé rapidement un fichier de configuration qui pourrait être nettement amélioré. J’en profite également pour renommer le répertoire afin de pouvoir éventuellement disposer d’une version 2.6.38.8 sans Xenomai pour comparaison.
[Panda]$ mv linux-2.6.38.8 linux-2.6.38.8-xenomai [Panda]$ cd linux-2.6.38.8-xenomai/ [linux-2.6.38.8-xenomai]$ wget https://www.blaess.fr/christophe/files/article-2011-11-27/config-linux-2.6.38.8-xenomai --2011-11-27 08:00:43-- https://www.blaess.fr/christophe/files/article-2011-11-27/config-linux-2.6.38.8-xenomai Résolution de www.blaess.fr... 217.16.3.18 Connexion vers www.blaess.fr|217.16.3.18|:80... connecté. requête HTTP transmise, en attente de la réponse... 200 OK Longueur: 66509 (65K) [text/plain] Sauvegarde en : «config-linux-2.6.38.8-xenomai» 100%[==========================================================================>] 66 509 260K/s ds 0,2s 2011-11-27 08:00:43 (260 KB/s) - «config-linux-2.6.38.8-xenomai» sauvegardé [66509/66509] [linux-2.6.38.8-xenomai]$ mv config-linux-2.6.38.8-xenomai .config [linux-2.6.38.8-xenomai]$ make ARCH=arm menuconfig
En vous promenant dans le menu de configuration, vous apercevrez un nouveau sous-menu « Realtime Subsystem » correspondant à la configuration de Xenomai notamment de ses « skins » qui permettent de reproduire l’interface de programmation de différents systèmes temps-réel (RTAI, VxWorks, pSos+, etc.). Nous pouvons à présent lancer la compilation du noyau.
[linux-2.6.38.8-xenomai]$ make ARCH=arm CROSS_COMPILE=~/cross-panda/usr/bin/arm-linux- uImage modules CHK include/linux/version.h UPD include/linux/version.h CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h [...] CC fs/nls/nls_iso8859-15.mod.o LD [M] fs/nls/nls_iso8859-15.ko CC fs/nls/nls_utf8.mod.o LD [M] fs/nls/nls_utf8.ko CC net/bluetooth/l2cap.mod.o LD [M] net/bluetooth/l2cap.ko IHEX firmware/kaweth/new_code.bin IHEX firmware/kaweth/trigger_code.bin IHEX firmware/kaweth/new_code_fix.bin IHEX firmware/kaweth/trigger_code_fix.bin [linux-2.6.38.8-xenomai]$
Installation du noyau modifie
Pour l’installation, j’insère la carte micro-SD de la Pandaboard dans un connecteur sur mon poste de travail, où le système de fichiers principal se trouve monté en /media/root
et la partition de démarrage (contenant le bootloader) sur /media/boot
. Sur ma carte se trouve un système de fichiers minimal avec une configuration de Busybox et Dropbear comme décrit dans cet article et celui-ci.
Attention, si vous avez déjà installé une toolchain en suivant mes premiers articles sur la Pandaboard, il faut absolument installer les nouvelles bibliothèques sinon vous ne pourrez pas utiliser celles de Xenomai (et resterez bloqués comme moi pendant plusieurs heures à jouer à tort sur sa configuration). Il faut donc les copier ainsi :
[linux-2.6.38.8-xenomai]$ rm -rf /media/root/lib/* [linux-2.6.38.8-xenomai]$ cp -Rdp ~/cross-panda/usr/arm-linux/sysroot/lib /media/root/ [linux-2.6.38.8-xenomai]$
On peut installer le noyau et ses modules ainsi :
[linux-2.6.38.8-xenomai]$ cp arch/arm/boot/uImage /media/boot/ [linux-2.6.38.8-xenomai]$ make ARCH=arm INSTALL_MOD_PATH=/media/root/ modules_install INSTALL drivers/hid/hid-gaff.ko INSTALL drivers/hid/hid-samsung.ko INSTALL drivers/hid/hid-sjoy.ko [...] INSTALL /media/root//lib/firmware/kaweth/trigger_code.bin INSTALL /media/root//lib/firmware/kaweth/new_code_fix.bin INSTALL /media/root//lib/firmware/kaweth/trigger_code_fix.bin DEPMOD 2.6.38.8-xenomai-cpb [linux-2.6.38.8-xenomai]$ umount /media/*oot [linux-2.6.38.8-xenomai]$
Après avoir démarré la Pandaboard, et s’être connecté par SSHs, nous observons deux nouvelles entrées dans /proc
.
[Panda]# ls /proc/ipipe/ Linux Xenomai version [Pandaboard]# ls /proc/xenomai/ acct apc heap irq lock sched stat timer version affinity faults interfaces latency registry schedclasses timebases timerstat [Pandaboard]#
La première correspond à Adeos (renommé ipipe
pour interrupt pipeline) et la seconde au domaine de Xenomai, dans lequel seront ordonnancées les futures tâches temps-réel.
Bibliothèques de Xenomai
Les bibliothèques de Xenomai doivent être compilées et installées pour que les tâches de l’espace utilisateur puissent accéder aux fonctionnalités temps-réel. Certaines options de configuration ont changé depuis les dernières versions de Xenomai (notamment l’option --enable-smp
dont je cherchais en vain la présence dans la configuration du kernel).
Pour compiler ces bibliothèques nous utiliserons les manipulations suivantes. Attention, dans la ligne « ./configure
« , précisez le chemin dans lequel les bibliothèques et exécutables de Xenomai seront installés sur votre poste de développement (en modifiant donc le chemin qui est prévu pour mon répertoire).
[Panda]$ cd xenomai-2.6.0/ [xenomai-2.6.0]$ PATH=$PATH:~/cross-panda/usr/bin/ [xenomai-2.6.0]$ ./configure --prefix=/home/cpb/Projets/Panda/xenomai --host=arm-linux CFLAGS='-march=armv7-a' LDFLAGS='-march=armv7-a' --enable-smp configure: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used checking build system type... i686-pc-linux-gnu checking host system type... arm-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking for arm-linux-gcc... arm-linux-gcc checking whether the C compiler works... yes [...] config.status: executing depfiles commands config.status: executing libtool commands [xenomai-2.6.0]$ make Making all in src make[1]: entrant dans le répertoire « /home/cpb/Projets/Panda/xenomai-2.6.0/src » Making all in include [...] make[1]: entrant dans le répertoire « /home/cpb/Projets/Panda/xenomai-2.6.0 » make[1]: Rien à faire pour « all-am ». make[1]: quittant le répertoire « /home/cpb/Projets/Panda/xenomai-2.6.0 » [xenomai-2.6.0]$ make install [...] make[2]: Rien à faire pour « install-data-am ». make[2]: quittant le répertoire « /home/cpb/Projets/Panda/xenomai-2.6.0 » make[1]: quittant le répertoire « /home/cpb/Projets/Panda/xenomai-2.6.0 » [xenomai-2.6.0]$ cd .. [Panda]$
Transférons les exécutables et les bibliothèques en utilisant scp
(s’il n’est pas installé sur votre Pandaboard, faites une copie directe avec la carte micro-SD).
[Panda]$ cd xenomai [xenomai]$ ls bin include lib sbin share [xenomai]$ scp -r bin/ lib/ sbin/ root@192.168.3.152:/usr/ root@192.168.3.152's password: xeno-test-run-wrapper 100% 181 0.2KB/s 00:00 xeno-test-run 100% 17KB 17.3KB/s 00:00 insn_read 100% 14KB 14.1KB/s 00:00 [...] analogy_config 100% 9300 9.1KB/s 00:00 rtcanconfig 100% 8493 8.3KB/s 00:00 rtps 100% 22KB 22.2KB/s 00:00 [xenomai]$
Test de Xenomai
Après s’être connecté sur Xenomai, nous pouvons lancer les tests se trouvant installés dans le répertoire /usr/bin
. Il y en a plusieurs que je vous laisse découvrir, voyons juste le résultat d’un outil que j’aime bien : cyclictest
qui mesure la variabilité des timers. Il en existe une version utilisant l’API système Linux classique (que l’on trouve dans le projet Linux-rt) et un portage utilisant l’API de Xenomai. Voyons un exemple où nous déclenchons un timer toutes les 100 micro-secondes et observons le jitter.
[Panda]# cd /usr/bin [Panda]# ./cyclictest -i 100 0.47 0.17 0.09 1/50 11834 T: 0 (11809) P:99 I: 100 C: 2372138 Min: 0 Act: 4 Avg: 0 Max: 17
En outre, l’utilitaire latency
donne des résultats comparables.
[Panda]# ./latency -p 100 == Sampling period: 100 us == Test mode: periodic user-mode task == All results in microseconds warming up... RTT| 00:00:01 (periodic user-mode task, 100 us period, priority 99) RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst RTD| 0.652| 0.837| 9.404| 0| 0| 0.652| 9.404 RTD| 0.498| 0.857| 8.105| 0| 0| 0.498| 9.404 [...] RTT| 04:28:07 (periodic user-mode task, 100 us period, priority 99) RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst RTD| 0.460| 0.869| 9.210| 0| 0| -0.116| 17.025 RTD| 0.478| 0.869| 8.599| 0| 0| -0.116| 17.025 RTD| 0.511| 0.869| 8.744| 0| 0| -0.116| 17.025 RTD| 0.494| 0.873| 9.376| 0| 0| -0.116| 17.025 RTD| 0.499| 0.871| 9.029| 0| 0| -0.116| 17.025 RTD| 0.523| 0.869| 8.698| 0| 0| -0.116| 17.025
Au bout de quatre heure et demi de travail, la variation maximale observée est de 17 micro-secondes, ce qui est excellent pour une Pandaboard. A titre d’exemple, avec un noyau Linux 3.0 standard, j’ai observé un retard maximal de plus de 500 micro-secondes (avec un timer cadencé à la milli-seconde), et un décalage maximal de 58 micro-secondes avec un noyau 3.0 auquel le patch Linux-rt a été appliqué.
Bonjour,
la version 2.6.0 est sensée simplifier la configuration sur ARM en allant chercher les options du compilateur. Je serais intéressé par une description plus détaillé des problèmes que vous avez eu avec les FASTSYNCH et l’option –enable-smp (qui est toujours présente, et même obligatoire si vous compilez le kernel pour omap4 avec CONFIG_SMP, normalement).
D’avance merci.
Cordialement.
Bonjour Gilles,
Et tout d’abord merci pour votre travail sur Xenomai en général et sur l’architecture Arm en particulier.
Je trouve que la configuration pour 2.6.0 est effectivement plus simple qu’auparavant, mais j’étais habitué à utiliser Xenomai sur des cartes Igep v2 (Cortex A8 sans smp), et la force de l’inertie m’a entraîné à tenter d’utiliser les mêmes options et outils qu’avec la version 2.5.6.
Ainsi je n’employais précédemment pas l’option
--enable-smp
que j’ai mis un moment à découvrir. Ensuite j’ai pensé qu’elle avait disparu comme--enable-arm-eabi
ou--enable-arm-mach
.En outre mon cross-compiler (issu de Buildroot) était prévu pour Arm-Generic et s’affichait donc comme un Arm v5 !
$ touch a.c
$ /cross-arm-linux/usr/bin/arm-linux-gcc -dM -E a.c
[…]
#define __ARM_ARCH_5T__ 1
[…]
$
Avec un cross-compiler correctement ajusté pour la Pandaboard, j’obtiens :
$ /cross-panda-linux/usr/bin/arm-linux-gcc -dM -E a.c
[…?]
#define __ARM_ARCH_7A__ 1
[…]
$
Et cette fois l’option
CONFIG_XENO_FASTSYNCH
est correctement renseignée.Merci encore,
Cordialement.
Normalement, les armv5 supportent aussi les fastsynch, mais pas en SMP, c’est donc la configuration armv5 + smp qui devait poser problème.
Il devrait être possible d’utiliser n’importe quelle toolchain pourvu qu’on force la bonne version d’architecture en passant -march=armv7-a dans les CFLAGS.
Le cortex a8 est lui aussi un armv7, donc il nécessite les mêmes flags que le cortex a9.
À noter aussi que les omap3 et 4 ont une FPU, pour en profiter, il faut compiler avec -mfpu=vfp -mfloat-abi=softfp, chose que faisait la version précédente de xenomai et que 2.6.0 ne fait plus.
Enfin, 17us est un peu optimiste comme latence. En chargeant un peu la panda, on arrive plutôt dans les environs de 50us. xenomai 2.6.0 fournit le script « dohell » qui génère une charge importante en utilisant plusieurs moyens (cf dohell –help), ainsi que le script xeno-test qui se charge de lancer latency et dohell.
Oui les 17 micro-secondes étaient obtenues dans des conditions de charge faible. Avec
dohell
en parallèle j’ai obtenu une latence de 44 microsecondes (de mémoire).Bonjour,
J’ai suivi ce tutoriel, qui est au passage très bien mené, tout fonctionne correctement, j’obtiens les mêmes resultats.
Mais le souci c’est que lors de la commande ‘make’ de la partie « Bibliothèques de Xenomai » après l’exécution de ‘./configure –prefix=/home/cpb/Projets/Panda/xenomai –host=arm-linux CFLAGS=’-march=armv7-a’ LDFLAGS=’-march=armv7-a’ –enable-smp’ en remplaçant le répertoire avec celui que j’utilise, j’obtiens des erreurs que je n’arrive pas à comprendre.
J’obtiens :
root@flutronic-desktop:/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0# sudo make
Making all in src
make[1]: Entering directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src’
Making all in include
make[2]: Entering directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src/include’
make all-am
make[3]: Entering directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src/include’
make[3]: Leaving directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src/include’
make[2]: Leaving directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src/include’
Making all in skins
make[2]: Entering directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src/skins’
Making all in common
make[3]: Entering directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src/skins/common’
/bin/bash ../../../libtool –tag=CC –mode=compile gcc -DHAVE_CONFIG_H -I. -I../../../src/include -O2 -D_GNU_SOURCE -D_REENTRANT -Wall -Werror-implicit-function-declaration -pipe -D__XENO__ -D__IN_XENO__ -Wstrict-prototypes -I../../../include -march=armv7-a -MT libxenomai_la-rt_print.lo -MD -MP -MF .deps/libxenomai_la-rt_print.Tpo -c -o libxenomai_la-rt_print.lo `test -f ‘rt_print.c’ || echo ‘./’`rt_print.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../../src/include -O2 -D_GNU_SOURCE -D_REENTRANT -Wall -Werror-implicit-function-declaration -pipe -D__XENO__ -D__IN_XENO__ -Wstrict-prototypes -I../../../include -march=armv7-a -MT libxenomai_la-rt_print.lo -MD -MP -MF .deps/libxenomai_la-rt_print.Tpo -c rt_print.c -fPIC -DPIC -o .libs/libxenomai_la-rt_print.o
{standard input}: Assembler messages:
{standard input}:313: Error: thumb conditional instruction should be in IT block — `strexeq r0,r1,[r3]’
{standard input}:573: Error: thumb conditional instruction should be in IT block — `strexeq r0,r1,[r3]’
make[3]: *** [libxenomai_la-rt_print.lo] Error 1
make[3]: Leaving directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src/skins/common’
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src/skins’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/flutronic/Documents/flutronic/timer_xenomai/xenomai/xenomai-2.6.0/src’
make: *** [all-recursive] Error 1
J’ai recommencé plusieurs fois chaque étape pensant que j’avais commis une erreur dans l’exécution des commandes mais rien y fait.
Pourriez-vous me dire pourquoi ces erreurs apparaissent et comment pourrais-je y remédier ?
En vous remerciant,
Christian