Les articles de Open Silicium N°15

Image promotionnelle
Temps Réel Dur avec Xenomai sur processeur ARM AT91
Article mis en avant

Temps Réel Dur avec Xenomai sur processeur ARM AT91

Cet article a pour but de montrer la mise en œuvre de Xenomai, solution de Temps Réel Dur sous Linux sur une carte cible ARM9 AT91. La mise en œuvre est décrite de façon détaillée montrant quels outils utiliser pour mesurer des temps de latence afin de savoir de façon précise si la carte cible peut remplir les conditions Temps Réel Dur imposées par un éventuel système à piloter par cette carte. La démarche mise en œuvre peut s’appliquer à toute autre carte cible ARM et de façon plus globale à toute carte cible exécutant Xenomai.

Merci pour le poisson ! Ceci ne vous a sans doute pas échappé, ce numéro d'Open Silicium arrive avec un peu de retard dans votre boite à lettres ou chez votre marchand de journaux. Ce délai plus important, ayant été nécessaire pour sa composition, découle d'un nombre important de facteurs et je tiens avant tout à m'en excuser.
Les plates-formes d'exécution industrielles sont souvent très chères et opaques, tant pour le matériel que pour le système d'exploitation. De ce fait, une vraie alternative s'ouvre au chercheur motivé : celle de créer une plate-forme d'expérimentation et d'enseignement complètement ouverte et abordable. Le prix à payer est un certain investissement en temps et des sensations fortes.
Le développement d'applications embarquées devient de plus en plus populaire et accessible. La conjonction de deux facteurs principaux semble expliquer cela : l'arrivée de plateformes de développement à bas coût comme l'Arduino ou autre BeagleBone et Raspberry Pi et l'utilisation massive de logiciels libres sur ces matériels. Nous vous proposons la (re-)découverte d'un logiciel libre destiné aux cibles enfouies qui vous permettra d'accélérer vos développements : Lepton.
Nous avons déjà évoqué les extensions temps-réel du noyau Linux dans les colonnes d'Open Silicium et en particulier Xenomai [1]. Dans cet article, nous allons découvrir comment mettre en place le composant RTnet [2] qui permet de disposer d'une API réseau déterministe. Dans un deuxième temps, nous verrons une application de RTnet avec l'implémentation de la pile réseau déterministe openPOWERLINK [3]. Les tests seront réalisés sur la carte BeagleBone Black [4] ainsi que sur une Armadeus APF6 [12].
Le positionnement par traitement de signaux émis par satellites - GNSS ou Global Navigation Satellite Service - est devenu tellement courant que nous ne pensons plus aux contraintes techniques de cette fascinante technologie. Basés sur une constellation de satellites embarquant chacun plusieurs horloges atomiques, les signaux datés précisément permettent par triangulation de positionner le récepteur. Une connaissance précise du protocole de communication permet d’envisager des applications bien plus intéressantes que le simple positionnement : nous allons ici nous efforcer, après avoir acquis les signaux radiofréquences au moyen d’un récepteur initialement conçu pour recevoir la télévision numérique terrestre (DVB-T), de remonter à l’information brute transmise par les satellites. Nous verrons que plusieurs boucles d’asservissement sont nécessaires pour retrouver la fréquence de la porteuse et les messages de navigation, et nous aborderons les subtilités de l’extraction du signal d’un satellite en particulier alors que tous les membres de la constellation émettent sur la même fréquence de porteuse (1575,42 MHz). L’obtention des bits du message de navigation démontre la validité de notre approche.
En utilisant Linux, FreeBSD ou les outils Gnu, nous évoluons dans un écosystème peuplé d'une myriade de logiciels libres. Leur cohabitation n'est pourtant pas toujours évidente et l'intégration de code propriétaire, par exemple pour des projets industriels, est possible, mais demande certaines précautions d'usage.
Les périphériques USB sont de plus en plus présents dans le monde industriel où ils ont supplanté les interfaces RS-232 et autres GPIB (IEEE-488). On peut expliquer cela par le côté universel du protocole et donc le faible coût du contrôleur. Dans cet article, nous allons décrire les méthodes de pilotage d'un périphérique USB sous Linux en nous focalisant sur la catégorie (ou classe) HID (Human Interface Device) très largement répandue en particulier dans les instruments de mesure.
Dans le cadre d'un projet modulable, je réalise certains plugins. Certains de ces plugins utilisent des périphériques série et il n'est pas toujours pratique de travailler directement avec le périphérique : l'incapacité de rejouer systématiquement certains jeux de données, la non-possession du matériel, etc. Afin de répondre à cette problématique, j'ai créé une librairie python qui permet de simuler un périphérique série.