Au cœur de NI Linux Real-Time

Aperçu

Le module NI LabVIEW 2013 Real-Time supporte désormais le nouveau système d'exploitation NI Linux Real-Time. Ce système d'exploitation temps réel (OS RT) fonctionne sur le nouveau contrôleur NI cRIO-9068 et possède des caractéristiques capables de répondre aux exigences de vos applications embarquées. Cet article a pour objectif de vous présenter ces nouvelles fonctionnalités et d'aborder des sujets avancés qui vous aideront à améliorer vos applications pour obtenir de meilleures performances.

Contenu

Support de l'interpréteur de commande (Shell) Linux

Le système d'exploitation NI Linux Real-Time offre le support de l'interpréteur de commande Linux, ce qui permet à l'utilisateur d'accomplir des tâches administratives complexes pour faciliter la gestion des cibles temps réel. Un terminal client est indispensable pour accéder à l'interpréteur de commande. Si vous utilisez Windows 7 ou une version ultérieure, PuTTY est un client gratuit largement utilisé et disponible sur le site PuTTY: A Free Telnet/SSH Client.

Par ailleurs, il est indispensable de sélectionner l'option "Enable Secure Shell Server (sshd)" sur la cible temps réel sous l'OS NI Linux Real-Time. Vous pouvez utiliser soit NI Measurement & Automation Explorer (MAX), soit l'interface Surveillance et configuration Web NI (voir les Figures 1 et 2). Pour des raisons de sécurité, il est vivement recommandé de modifier le mot de passe par défaut sur le compte administrateur. Pour ce faire, il est possible d'utiliser l'interface Surveillance et configuration Web. Pour vous connecter à l'interpréteur de commande Linux via SSH, vous pouvez utiliser le nom d'utilisateur admin avec le mot de passe que vous avez configuré pour obtenir l'accès à la racine – le champ du mot de passe est vide s'il n'a pas été configuré. Il est possible d'ajouter d'autres utilisateurs par le biais de l'interface Surveillance et configuration Web. Ces utilisateurs pourront également se connecter via SSH, mais ne disposeront pas de l'accès à la racine.

Figure 1. L'option Enable Secure Shell Server (sshd) se trouve sur l'onglet de configuration du système pour la cible temps réel dans Measurement & Automation Explorer. Il est nécessaire de sélectionner cette option avant d'accéder à la cible temps réel exécutant NI Linux Real-Time.

Figure 2. L'option Enable Secure Shell Server (sshd) se trouve également via l'interface Surveillance et configuration Web pour la cible temps réel. Il est nécessaire de sélectionner cette option avant d'accéder à la cible temps réel exécutant NI Linux Real-Time.

Transfert de fichiers et chemins de fichiers

Depuis LabVIEW 2013, toutes les cibles NI temps réel supportent le transfert de fichiers WebDAV. WebDAV est une extension du protocole HTTP couramment employée dans l'industrie. Il est utilisé par des applications largement répandues telles que Dropbox, et il est facile de le sécuriser pour transférer des fichiers contenant des informations sensibles. WebDAV est le mécanisme de transfert de fichiers par défaut des cibles temps réel sous NI Linux Real-Time. Pour en savoir plus, rendez-vous sur la page Utiliser WebDAV pour transférer des fichiers sur votre cible temps réel.

Contrairement aux matériels temps réel basés sur VxWorks et Phar Lap, les cibles NI Linux Real-Time n'ont pas de serveur FTP installé par défaut. Si vous avez besoin d'un support FTP pour assurer la rétrocompatibilité des applications, il est possible d'installer un serveur FTP non sécurisé hérité via MAX, bien que cela soit fortement déconseillé. En revanche, les cibles NI Linux Real-Time supportent la fonctionnalité SFTP au travers de SSH. Cette option est recommandée dans le cas d'un serveur FTP non sécurisé.

Par ailleurs, NI Linux Real-Time introduit un certain nombre de différences importantes par rapport aux cibles temps réel existantes et à Windows. Pour éviter toute erreur de chemins de fichier lors de la migration du code ou lors de la gestion des enregistrements de données sur une cible qui supporte le nouveau système d'exploitation temps réel basé sur Linux, reportez-vous à ce document.

Accès au système par programmation

Le module LabVIEW Real-Time supporte le VI Commande système sur les cibles NI Linux Real-Time. Ce VI donne accès à la ligne de commande Linux, ce qui permet de gérer l'OS NI Linux Real-Time par programmation et d'interagir avec les autres programmes en cours d'exécution sur la cible directement depuis l'application LabVIEW Real-Time.

Outre le VI Commande système, la fonction Appeler une fonction d'une DLL est également supportée par les cibles NI Linux Real-Time. La fonction Appeler une fonction d'une DLL facilite l'intégration du code C/C++ avec l'application LabVIEW Real-Time et permet de créer des conteneurs LabVIEW pour n'importe quelles API C fournies par d'autres programmes installés et s'exécutant sur une cible NI Linux Real-Time.

Screenshot.PNG 

Figure 3. Le VI Commande système et la fonction Appeler une fonction d'une DLL sont supportés par les cibles NI Linux Real-Time. Depuis l'application LabVIEW Real-Time, il est possible d'interagir de façon transparente aussi bien avec l'OS NI  inux Real-Time qu'avec d'autres programmes.

Accès à l'écosystème Linux

Les cibles sous NI Linux Real-Time peuvent grandement profiter du vaste écosystème d'IP disponible pour Linux. Pour installer, gérer et utiliser cet écosystème, vous pouvez vous appuyer sur OPKG, le gestionnaire de paquets offert par NI Linux Real-Time. Pour en savoir plus, rendez-vous sur OPKG Package Manager

En plus de faciliter l'intégration du code C/C++ avec le VI Commande système et la fonction Appeler une fonction d'une DLL, les cibles NI Linux Real-Time vous permettent d'utiliser du code provenant de l'écosystème Linux, de réutiliser du code développé en interne et de développer, déployer et déboguer du code C/C++ avec un outil basé sur Eclipse. Pour en savoir plus sur les outils de développement C/C++ pour NI Linux Real-Time, Édition Eclipse, consultez les options logicielles pour la conception de systèmes embarqués C/C++.

Performances temps réel avancées

Le nouveau NI Linux Real-Time utilise un ordonnanceur temps réel semblable à celui qui se trouve sur les cibles temps réel actuelles pour gérer l'ordonnancement du code critique en terme de temps, et un ordonnanceur complètement équitable (CFS) pour gérer l'ordonnancement de tout le code non critique. Actuellement, les cibles temps réel dotées de systèmes d'exploitation temps réel dédiés s'appuient exclusivement sur un ordonnanceur temps réel pour gérer à la fois les tâches critiques et les tâches système moins prioritaires. Le CFS dans NI Linux Real-Time offre des performances améliorées puisque les tâches moins prioritaires sont plus efficacement ordonnancées. Pour en savoir plus sur le CFS, consultez Exploration de l'ordonnanceur complètement équitable (CFS) Linux 2.6.

Outre les améliorations apportées à l'ordonnanceur, il est également important de noter les changements apportés au niveau du support multicœur sous NI Linux Real-Time, puisque tous les matériels embarqués NI qui supportent ce nouvel OS RT sont multicœurs. Il est particulièrement important de suivre les bonnes pratiques de programmation et d'éviter d'exécuter une boucle temps-critique sur un cœur en utilisant 100 % de son temps processeur. En effet, pour un système multicœur, NI Linux Real-Time a besoin de temps processeur sur chaque cœur afin d'effectuer des opérations de maintenance, sans quoi les performances du système peuvent être sévèrement affectées. Pour éviter cette dégradation des performances, assurez-vous que les boucles critiques allouées au microprocesseur se mettent au repos environ 10 millisecondes toutes les 10 secondes de fonctionnement pour permettre le traitement du temps système.

Il est également important de noter que la dégradation des performances peut se produire aussi bien au niveau des tâches critiques qu'au niveau des tâches système sur les systèmes multicœurs dotés de NI Linux Real-Time si des tâches interdépendantes devant s'exécuter en série sont autorisées à s'exécuter en parallèle sur les cœurs du processeur. Ceci s'explique par l'incapacité des tâches série à communiquer quand elles s'exécutent simultanément sur différents cœurs. Pour éviter une telle dégradation des performances, suivez les bonnes pratiques de programmation LabVIEW Real-Time, qui consistent à partager le code critique et les tâches systèmes entre différents cœurs de processeurs. Ceci est possible en paramétrant un cœur de processeur uniquement pour la gestion des fonctions critiques et en l'autorisant à être utilisé par n'importe quelle structure Séquence cadencée ou boucle cadencée, comme l'illustre la Figure 4. Pour en savoir plus sur les bonnes pratiques de programmation LabVIEW Real-Time permettant d'optimiser les systèmes multicœurs, consultez la page Configurer les paramètres d'une structure cadencée.

Figure 4. Il existe deux méthodes pour définir le processeur par la structure boucle cadencée dans LabVIEW Real-Time : (1) définir le processeur en double-cliquant sur la structure boucle cadencée pour faire apparaître la boîte de dialogue de configuration ou (2) ou câbler directement une valeur au nœud placé à gauche de la structure. 

Comme cela est recommandé dans le cadre de toutes les mises à jour système, il est préférable de valider à nouveau son application après la migration vers une cible basée NI Linux Real-Time car des améliorations ou des dégradations des performances peuvent survenir au niveau des fonctions individuelles, et peuvent potentiellement affecter la capacité de l'application à satisfaire toutes les exigences système. Les allocations de mémoire sur les cibles temps réel basées Linux peuvent notamment avoir un impact significatif sur le jitter.

Répondre aux exigences en s'appuyant sur un environnement de développement familier

Le support LabVIEW pour le nouveau NI Linux Real-Time offre de nombreux avantages pour répondre aisément et rapidement aux exigences actuelles d'une application embarquée tout en s'appuyant sur l'environnement de développement LabVIEW familier.

Joignez-vous aux discussions sur la communauté NI Linux Real-Time

Linux est la marque déposée de Linus Torvalds aux États-Unis et dans d'autres pays.