La dernière fois, j'ai expliqué la procédure pour construire un noyau pour introduire Xenomai. Cette fois, nous allons construire Xenomai lui-même afin de pouvoir utiliser les fonctions de Xenomai sur le Raspberry Pi. Si Xenomai peut être introduit dans un micro-ordinateur, des opérations nécessitant des performances en temps réel telles que le fonctionnement du robot seront possibles.
C'est une continuation de la dernière fois, donc si vous ne l'avez pas encore vu, je vous recommande de le lire en premier.
https://qiita.com/TordanHatiman/items/697aaa520914e159de2b
Les spécifications, etc. sont les mêmes que dans la partie 1, elles sont donc omises.
--Le contenu du travail
Travaillez dans l'environnement de compilation croisée dans lequel vous avez construit le noyau pour Xenomai comme auparavant. Xenomai lui-même se trouve également dans le même répertoire de travail. (Le répertoire de travail précédent était kernel_cnst)
Travaillons maintenant. Commencez par créer les bibliothèques Xenomai. Puisqu'il s'agit d'un environnement de compilation croisée, transmettez le chemin d'accès au compilateur croisé. (Identique à ce que j'ai fait la dernière fois)
linux_user@TN-201709Fxxxx:~$ cd ~/kernel_cnst
linux_user@TN-201709Fxxxx:~$ cd ./Xenomai3.x/
linux_user@TN-201709Fxxxx:~$ export CROSS_COMPILE=../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
Ensuite, construisez Xenomai, mais créez un répertoire pour stocker les fichiers construits afin de déplacer les fichiers construits vers RPi.
linux_user@TN-201709Fxxxx:~$ mkdir ~/kernel_cnst/target
linux_user@TN-201709Fxxxx:~$ ./scripts/bootstrap
linux_user@TN-201709Fxxxx:~$ ./configure CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -mfpu=neon -ffast-math" --enable-smp --with-core=cobalt
linux_user@TN-201709Fxxxx:~$ make -j4 install DESTDIR=~/kernel_cnst/target/
Si la construction réussit, la compilation est terminée. Compressez les fichiers comme avant et apportez-les à RPi. (SSH peut également être transféré, mais il n'est pas recommandé pour des raisons de sécurité)
linux_user@TN-201709Fxxxx:~$ cd ~/kernel_cnst
linux_user@TN-201709Fxxxx:~$ tar -zcvf xenomai_tools.tgz ./target
Amenez-le dans un endroit approprié et décongelez-le -------- Travailler avec RPi à partir d'ici --------
linux_user@TN-201709Fxxxx:~$ cd ~/workspace(C'est un endroit pour décompresser, donc ça peut être n'importe où)
linux_user@TN-201709Fxxxx:~$ tar -zxvf ./target.tgz
Après la décompression, installez le fichier que vous avez importé dans RPi
linux_user@TN-201709Fxxxx:~$ sudo cp -rd ./target/dev/* /dev/
linux_user@TN-201709Fxxxx:~$ sudo cp -rd ./target/usr/* /usr/
À ce stade également, assurez-vous de faire une sauvegarde de / dev / et / usr / avant l'installation </ font> Ceci termine l'introduction de Xenomai lui-même.
Lorsque le travail d'installation de Xenomai est terminé sans aucune erreur, exécutez ce qui suit
linux_user@TN-201709Fxxxx:~$ sudo /usr/xenomai/bin/latency
Si cela fonctionne normalement, la latence sera mesurée comme suit.
== Sampling period: 1000 us
== Test mode: periodic user-mode task
== All results in microseconds
warming up...
RTT| 00:00:01 (periodic user-mode task, 1000 us period, priority 99)
RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst
RTD| 12.239| 12.693| 19.427| 0| 0| 12.239| 19.427
RTD| 12.291| 12.720| 16.926| 0| 0| 12.239| 19.427
RTD| 12.290| 12.701| 17.447| 0| 0| 12.239| 19.427
RTD| 12.238| 12.709| 14.634| 0| 0| 12.238| 19.427
Exposant: https://lemariva.com/blog/2018/07/raspberry-pi-xenomai-patching-tutorial-for-kernel-4-14-y (J'ai oublié de prendre ce journal cette fois, alors j'ai fait référence à ce qui précède.)
De cette façon, Xenomai a des performances en temps réel qui peuvent traiter même les opérations d'application en unités de 1 ms. Le code de contrôle de fonctionnement de l'application qui utilise les fonctions Xenomai en langage C est également publié sur le net, vous pouvez donc le vérifier.
J'ai en fait mesuré la latence de Xenomai, mais il fonctionne certainement à 1 ms ± 0,1 ms au plus tard pour les programmes qui s'exécutent à des cycles de 1 ms, et la plupart répondent en 1 ms, donc les micro-ordinateurs basés sur Linux fonctionnent en temps réel. Je pense que c'est la meilleure façon d'y parvenir. (Les données de mesure ne peuvent pas être affichées en raison de diverses circonstances .....)
Puisqu'il n'y a presque pas de matériel japonais pour présenter Xenomai, c'est assez difficile à moins que vous ne soyez habitué à lire et à comprendre des documents étrangers. Si vous êtes coincé en essayant de faire de même, n'hésitez pas à demander. (Je répondrai autant que possible)
J'écrirai sur le patch dans un autre article. Je suis désolé pour ceux qui veulent le voir par écrit, mais attendez d'ici là ...
À plus tard!
Recommended Posts