 Je vais parler de Xenomai. Xenomai c'est une autre façon de faire le temps réel avec Linux. Je suis un expert Linux de France. Ce n'est pas ce qu'il y a pour l'autre. Je n'ai pas des softwares. Les softwares sont spécialistes parce que j'ai fait la présentation et j'ai juste coupé le slide. Je suis un CEO pour Smile. Smile ECS, qui est une partie de la compagnie française spécialisée en service de service de softwares. Et nous sommes environ 100 personnes en train de travailler avec Linux, avec Linux et Yocto, etc. Et je suis un professeur en Paris et en Bordeaux pour l'université, avec Linux, Linux RT et AOSP2, parfois. Ok, donc nous avons plusieurs présentations en temps réel et en 30 ans. Je pense que ce slide n'est pas très important. C'est juste une introduction. Dans l'industrie, nous avons utilisé pour choisir des propriétés des systèmes opératifs, VixWorks, PISOS, VRTX, VALUEL1, Linux OS, etc. Nous avons des sources open source, RTOS, RTEMS, FreeRTOS, etc. Il y a beaucoup d'opératifs opératifs. Et, comme vous l'avez dit, Linux kernel a des patches pour travailler en temps réel. Il y a plusieurs présentations et il y a un projet qui s'appelle RTAI. RTAI est une source de Xenomai. Et avant, RTAI, il y avait RT Linux. C'est drôle parce que dans toute la présentation, vous pouvez lire RT Linux ou Linux RT, mais RT Linux était un produit réel développé par FSM Labs. C'était un produit d'opératifs opératifs qui a été fabriqué par FSM Labs et qui a été fabriqué par WinRiver. Et ça a disparu. C'était... Mais ce n'était pas d'opératifs opératifs. Bien, ce n'est pas très intéressant parce que nous perdons quelques minutes. Donc, si vous voulez mesurer le kernel latency, c'est ce que nous voulons faire avec Xenomai. Vous commencez un task en temps réel. Vous increvez le système load et vous comparez le déliné de mesures avec un théorique. Il y a beaucoup d'outils disponibles. Certaines outils sont disponibles par la communauté Préam30. C'est un package qui s'appelle RT Test en général. Il est disponible dans BillRoot, NIOcto et Sender Distours. Il y a un test qui crée un task en temps réel et un outil qui est un outil pour increver le système load avec un task en temps réel. Et nous pouvons utiliser FTRAS pour l'application réelle. Ok, vous savez, je suis juste comme un guitariste devant Django Reinhardt, vous savez. Il y a plusieurs manières pour augmenter la performance des kernels. La première est d'utiliser l'option de Préam30 qui est obsolète. Les options sont encore ici dans le kernel. Utilisez le package Préam30 et utilisez l'approche co-carnel avec RTAI et Xenomai. RTAI est un projet en Italie, encore disponible. Il y a des options de Préam30 qui sont disponibles pour le kernel 2.4. Ils sont encore disponibles dans la version 6 de le kernel. Donc, la plupart des temps, ils sont activés dans un standard canon avec la option desktop. Et Préam30, on le connait tous, Préam30, c'est adopté par le Linux Foundation en 2015. Donc, nous avons une option d'utiliser le kernel. Il y a beaucoup d'options. Il y a beaucoup de présentation, beaucoup plus d'options en Préam30 avec beaucoup d'options. Je vais juste parler de l'option de Préam30. Et le maximum d'options pour des portes simples comme le Raspberry Pi c'est moins que 100 microsegons. Et si vous faites le même avec Préam30, c'est environ 3 ou 5 milliseconds. Pour le temps, c'est très mal. Donc, tout le monde le connait. C'est un autre moyen de le faire. C'est plutôt de modifier le kernel Linux pour faire le temps réel. Vous avez dédicé le kernel réel très simple. En utilisant le même API comme le kernel dans ce qu'on appelle un autre domaine. Et dédicé pour les tasks réels. Donc, c'est un système réel pour le kernel Linux. Vous avez le kernel Linux en train de faire un task non-RT et le kernel Xenomai ou le kernel RTI pour le task réel. Il y a deux domaines. Le domaine est le nom de l'environnement Xenomai mais c'est exactement le même pour le RTI Linux. Il y avait plusieurs modèles qui étaient créés par FSM Labs. RTI avec la integration de l'userspace qui était la force de RTI Linux et Xenomai. Avec Xenomai, vous pouvez développer l'application de l'userspace. Et donc, le support de l'userspace est très important parce que pour l'industrie, si vous développez le kernel, vous devez donner la source code pour les utilisateurs. Et en utilisant l'userspace et l'HGPL c'est beaucoup mieux pour l'industrie. Donc, c'est un petit peu plus petit. On a un micro, ce que l'on appelle un micro kernel avec un task réel et le kernel Linux dans le domaine Linux. Il y a une virtualisation de l'ERQ & Ling. Donc, le kernel n'est pas possible pour le kernel pour masquer les interruptes. Et les interruptes réels ont plus de priorité que les interruptes Linux. Donc, on peut dire que Linux est un task ideal pour le kernel réel. Donc, c'était l'architecture RTI Linux longs il y a longtemps. C'est une petite picture. Avec hardware, le RTI Linux stack. Et donc, c'était le même principe. Vous avez le kernel Linux et le kernel Linux interrupter pour le kernel Linux. Et puis, le kernel RTI interrupter pour le kernel RTI. Et en ce temps, l'application était un module kernel. Donc, c'était un problème pour l'HGPL. Et si vous avez la plupart de l'industrie de l'userspace avec le GUI ou quelque chose comme ça. Ou vous voulez sauver le data ou envoyer le network. Et ce n'était pas possible pour faire tout dans le même espace. Donc, vous devez utiliser le CIFO en temps réel pour communiquer entre l'userspace et le kernel. C'était un peu compliqué. Mais c'est worké. Donc, Xenomai était créé par un développeur français en temps réel qui s'appelle Philippe Jérôme. C'était le premier développeur pour RTOS API d'émulation, sans aucun intérêt dans les latencies en temps réel itself. Donc, c'est ce qu'il s'appelle les skins. Donc, il a développé des skins pour VxWorks, VRTX, PSOS, etc. Et pour avoir un meilleur comportement en temps réel, il a été en contact avec le project RTI et donc, la première version de Xenomai avec RT a été disponible en 2004. Et puis, il a créé le project RTI d'un conflit avec le leader du project RT RTI project, regardant l'architecture, etc. Et depuis Xenomai 2 et Xenomai 3 qui est la dernière version, la version courante il y a deux choix pour l'architecture Vous pouvez utiliser un co-carnel qui s'appelle Cobalt qui est une utilisation d'architecture et il y a un single, je pense qu'il n'est pas très utilisé il y a un single co-carnel qui s'appelle Mercury il a des skins vous pouvez utiliser les skins mais c'est c'est pas très intéressant mais c'est là. Et aujourd'hui, il y a un pipeline pour l'architecture pour l'architecture qui a été créé en temps de collaboration RTI et maintenant, il y a une nouvelle version d'architecture qui a été créé au début, c'était un fork pour l'architecture et il s'appelle Doftail parce que Philippe a développé un nouveau projet qui s'appelle EVL et il a développé un nouveau système pour l'architecture pour l'architecture et le système était Doftail Donc Doftail est disponible pour l'architecture de 5.10 et l'architecture pour l'architecture mais c'est assez le même approche donc la version stable est 3.2.1 et l'architecture sera Xenomy 4 mais c'est currently available et ça marche bien. Donc c'est un exemple d'architecture donc vous avez l'application la plupart du temps, on met le kernel mais c'est ça vous avez l'application vous avez le libcobalt qui implique les skins, incluant l'opposite qui est très importante pour le développement vous avez le cobalt core et donc il y a un approche spécifique pour Xenomy qui est une surface délicatée kernel interface called RTDM Real Time Driver model qui pourrait être issue parce que si vous utilisez Xenomy vous devez adapter parce que le driver sera exécuté par Xenomy kernel c'est un model Linux mais ce n'est pas un driver Linux donc il y a spécifique calls etc donc c'est assez similaire mais c'est pas le même donc Xenomy on peut dire que Xenomy est la plus efficient extension de Real Time pour le kernel Linux oui mais c'est beaucoup plus difficile d'installer et parfois difficile d'utiliser le task Real Time en surface en utilisant l'LGPL il y a plusieurs skins c'est utilisé par des grandes entreprises comme Siemens Siemens est un contributaire très important Yocto et billboard integration qui est assez important on a beaucoup de customers en utilisant si vous avez besoin de Real Time mais si vous avez besoin d'Advanced Real Time parfois vous avez besoin de Xenomy c'est une petite communauté Philippe Jérôme est l'un des leaders de la communauté il y a beaucoup d'examples il y a beaucoup d'examples pour les drivers il y a beaucoup d'examples mais c'est un peu difficile et donc Cobalt est difficile d'utiliser parce qu'il y a un patch et le kernel mainline est mandatory donc vous devez adapter le patch il y a l'utilisation et le kernel installation il y a le patch kernel et c'est ok pour Xenomy vous devez adapter le kernel et vous devez installer les libraries et utiliser les libraries pour les applications qui sont pour le kernel c'est RTDM ce n'est pas un projet officiel pour le Linux foundation et il n'y a pas de distribution il y a un peu de distribution de Red Hat et de Collaborat il y a une nouvelle version d'Ubuntu, je pense que c'est 22 qui inclut le fream 30 de scratch mais pas pour Xenomy pour installer Xenomy vous devez avoir un kernel compatible donc si vous utilisez Dovetail vous devez avoir un kernel compatible vous devez utiliser le Xenomy source et il y a un script qui s'appelle PreparKernel pour installer tout vous configurez l'usage les libraries et pour Yocto ou Bilroot vous devez ajouter le layer et pour Bilroot vous devez activer les options ce n'est pas très simple mais parfois ça fonctionne le procédure test est très proche pour le fream 31 vous commencez un task dans le domaine RT et vous commencez un système dans le domaine Linux Xenomy vous devez la version lat en C mais vous devez la version lat en C et c'est une version de test ce n'est pas exactement le même parce que ça fonctionne dans le domaine Xenomy vous devez commencer la version lat en C avec une période défaut de 1 seconde et pour l'exemple vous devez commencer la version duale à l'aide de Xenomy qui est un test RT d'un package RT et le maximum diteur pour le Raspberry Pi c'est 30 microsecondes donc je vais essayer de vous montrer une démonstration très dangereuse je pense j'ai une liste de démonstration donc c'est la lat en C la version duale je vais mettre en full screen donc c'est le Raspberry Pi j'ai le console j'ai l'SSH de la console pour commencer le load c'est l'SSH je commence la lat en C donc la lat en C sans aucun load la lat en C worst c'est des microsecondes et maintenant je peux commencer la version duale si vous avez un projet réel vous devez le ranger donc vous pouvez voir 30 microsecondes ok donc en regardant les domaines et l'IPyp l'USG rentre dans les domaines prioritisés donc Xenomy rentre dans les domaines prioritaires Linux qui s'appelle Root Xenomy est le domaine de la priorité pour chaque événement NTRS exception le domaine est sous l'événement passez-le dans la pipeline et donc quand vous modifiez quand vous modifiez le kernel pour ça vous réplacez le IRQ IRQ & LOS par les functions IPY il y a un article sur ça parce que la technologie initiale était appelée ADEOS par des experts d'Android mais il n'était pas un expert d'Android qui s'appelle Karim Yagmour et il a été créé par Karim et Philippe Jérôme il s'appelle ADEOS après il s'appelle IPyp et maintenant il s'appelle IPyp et puis il s'appelle Doftail pour une autre technologie donc c'est l'interrupte d'un principle vous pouvez avoir un interrupte pour l'exemple l'interrupte de l'exemple c'est pour l'interrupte de l'exemple donc attaché pour l'exemple c'est ok, c'est enduré par l'interrupte si ce n'est pas possible il y a un virtuel IRQ envoyé au domaine de route et si il y a un problème avec l'endue de l'ERQ par le domaine de route l'ERQ est mis dans un buffer appelé ILOG et après quand le domaine est ok le domaine de route peut être installé et quand le domaine de route est installé vous pouvez endurer l'ERQ donc Doftail, comme je l'ai dit c'était un fork de IPyp il y avait des modifications d'avoir tous les interruptes comportés comme ennemis mais la partie la plus importante était la façon de maintenir Doftail avec un développement commun de kernel pas avoir un patch qui est difficile d'appliquer pour modifier donc le portage de Doftail est plus simple que le portage de IPyp et il est plus近 que le récent kernel il est disponible pour le domaine 3.2 mais il n'y a pas de portage pour la version précédente 3.1 ou 3.0 et donc pour patcher vous installez un kernel basé sur la mainline ou sur la mainline de BSP j'ai entendu j'ai lu des articles deux semaines avant d'une compagnie en Spain qui est la mainline de kernel pour la mainline de BSP d'IIMX8 et d'avoir le support de Doftail donc quelque part sur l'application l'application Xenomai est un programme Linux mais en utilisant les libraries Xenomai et l'application il y a deux domaines Linux pour le temps réel et Xenomai pour le temps réel et la plupart du temps sont manées par Linux et donc il y a des threads RT et des threads qui peuvent communiquer avec des protocoles spécifiques designés par Xenomai qui s'appelle XDDP donc vous avez la mainline vous avez le thread Linux ici en utilisant un driver un driver de kernel Linux et vous avez un autre thread basé sur RT en utilisant un driver spécifique et donc l'application Xenomai les drivers normales RTDM et le kernel Xenomai avec le driver RTDM et donc on peut communiquer bien sûr on ne peut pas utiliser la communication standard parce que vous devez garder le temps réel donc vous devez utiliser XDDP et XDDP le protocole socket sur le côté Xenomai XDDP protocole socket et sur le côté Linux il y a un descriptor avec un driver chard donc il y a plusieurs skins de Xenomai POSIX, PISOS, VXWORKS, MOKI RTDM pour le space kernel vous pouvez utiliser plusieurs skins en même temps donc POSIX est très important parce que vous pouvez développer l'application POSIX c'est très proche de l'application standard donc vous devez séparer les parts RTDM vous sélectionnez les skins, par exemple les POSIX j'utilise des skins de VXWORKS parce qu'il y a des compagnies avec beaucoup de codes VXWORKS et avant d'utiliser Linux vous devez tester leurs codes sans updates pour les POSIX donc c'est assez utile vous pouvez poursuivre l'application Linux avec un prefix et underscore pour l'exemple PISRED CREATE vous logez l'application M-Local je pense que c'est automatique et vous pouvez l'application Xenoconfig SCRIPT la compagnie de Xenomai qui génère les options et vous avez Xenoconfig-CC pour obtenir le CC pass les C-flags, les LD-flags en regardant les skins que vous utilisez par exemple pour POSIX, pour native et il y a un support pour CMake si vous utilisez le Xenomai kernel vous avez un directeur qui est Proc Xenomai vous pouvez obtenir toutes les informations sur le task seulement sur le task Xenomai un gros problème c'est la migration parce que par le code Xenomai vous appelez un système de lignes de lignes vous serez pour créer une migration ce qui est un problème pour le temps réel donc vous pouvez croire la migration avec un signal il y a un support pour Ftrace et les événements sont Cobalt Name Cobalt etc donc vous pouvez utiliser TraceCMD pour récourir les événements et les rapports avec Linux l'RTDM API c'est un driver c'est un module Linux mais il s'est rendu dans le Xenomai domain donc vous pouvez le charger avec Insmod modpro mais vous devez adapter le driver comme je l'ai dit avant vous devez adapter le driver pour l'API EVL est le futur de Xenomai c'est original 3Xenomal Core c'est basé sur Doftail il y a un petit foot print comme avant il est currently basé sur l'application il est basé sur l'EVR il n'y a pas de support maintenant mais il sera disponible dans le futur parce qu'ils portent l'EVR avec Xenomai 4 il donnera l'access pour l'application il y a il y a un démon très intéressant créé par les gens de Denx pour le Raspberry Pi 4 il y a des modifications dans Xenomai comme le new benchmark n'est pas latmus, mais mais vous pouvez utiliser l'acbench etc. vous pouvez essayer d'utiliser d'une sorte de solution pour établir le système il y a une petite démonstration Xenomai 4 en P4 il est basé sur Yocto ok c'est un kernel c'est un kernel assez réel pour l'EVR vous commencez latmus donc vous pourrez avoir des valeurs très intéressantes pour le jitter et puis vous pouvez commencer à l'acbench ou vous pouvez il y a des documentations sur le test Xenomai et Philippe Jérôme dit d'utiliser un DD pour écrire beaucoup de bytes et puis vous pouvez mesurer le jitter avec le bloc de 128 megabytes ok, donc il y aura une différence et le jitter est 10 microsequences et quand il est terminé vous pouvez le faire avec l'acbench et c'est assez la même valeur donc c'est très intéressant parce que sur un petit bord vous pouvez obtenir une latency de 10 microsequences d'acbench etc etc cette commande commence un groupe de 800 tasks mais c'est la même donc vous pouvez voir la maximum latency et ici comme usual vous avez une minimum latency et l'average ce n'est pas très intéressant pour un temps réel et la currente latency dans la dernière période donc il y avait la maximum latency mais dans l'average c'est ok je ne sais pas si j'ai le temps je peux voir 5 minutes ok, donc vous avez des questions ou je peux vous montrer un exemple d'une construction de ma application si vous voulez si vous avez une question c'est que c'est la première question d'une question d'une question j'ai juste vu que la meilleure latency est négative oui je pense que vous avez oublié de calibrer oui, oui, oui en fait il y a une entrée en proche pour calibrer parce qu'il y a une anticipation de la latency une valeur et donc vous devez tester une fois pour voir la latency et changer de valeur pour avoir des valeurs correctes pour les valeurs correctes ce n'est pas normal pour avoir une valeur négative si il y a d'autres questions ou je peux vous montrer un exemple d'une construction de ma application c'est et il y a une source code compagnie d'une application c'est un exemple c'est un exemple de un exemple très simple de ma application donc c'est la main part avec une option minus p2 d'Ajp to set the period donc c'est une application classique on utilise un spread square on le met au spread vous savez, c'est un typique c'est un il y a une heure et on utilise une heure nano-slip pour dormir entre les périodes donc j'utilise un Pocky pour compiler c'est un Yocto et nous avons accès à la config d'utilisation donc j'ai un script pour avoir accès à la config donc la config est offerte dans le BSP vous compilerez avec Mac mais je pense que c'était déjà fait donc j'ai mis en place donc vous pouvez voir la libraise que j'ai utilisé pour Xenomai, Libcobald etc et puis vous pouvez envoyer l'application et le Mac file c'est le Mac file pour la compilation basé sur Xenoconfig pour obtenir les flags les compilers cross les flags et les flags vous avez l'application et c'est tout vous envoyez l'application à l'application ok donc j'ai une question pour moi, j'ai une question pour vous vous savez Xenomai avant cette présentation oui bien sûr donc ce n'est pas un replacement de preamp 30, c'est un autre moyen d'utiliser un temps réel c'est beaucoup plus simple les résultats de preamp 30 c'est bien maintenant c'est beaucoup mieux, mais pour certains customers les résultats avec Xenomai sont mieux et donc ils veulent utiliser Xenomai en plus de preamp 30 mais c'est beaucoup plus difficile de maintenir mais avec Xenomai 4 je pense que c'est plus simple parce que l'utilisation de mainline kernels et pas les iPype spécifiques iPype ok pas de question merci et Pavel je voudrais vous demander en cas de preamp RT l'application est assez limitée dans ces courses que l'on peut faire pour rester en temps réel donc les interfaces sont disponibles pour l'application en Xenomai je n'ai pas compris votre question quelles interfaces sont disponibles pour l'application en Xenomai peut-être Xenomai peut-être Xenomai oui, bien sûr il y a un API réel API de Xenomai bien sûr, c'est basé sur UDP parce que TCP en réel c'est un peu difficile qui s'appelle RTNet et vous pouvez utiliser le standard bien sûr, vous pouvez utiliser l'interface standard vous pouvez développer vous pouvez avoir un chauffeur vous avez besoin d'un chauffeur pour votre bord et vous pouvez utiliser la networks de temps réel j'ai fait des conférences sur cela longtemps avec une version d'application en Xenomai avec un temps réel c'est possible, oui merci ok, merci