Java/Linux, un couple réconcilié pour l’embarqué

Le 01/03/2003 à 0:00 par La rédaction

Dans la communauté Linux, le langage Java n'a jamais été très populaire. Pourtant les choses évoluent. Grâce à la performance des nouvelles générations de machines virtuelles et à un travail d'adaptation aux plates-formes matérielles, le couple Java/Linux apporte des avantages significatifs dans les applications enfouies.

Dans le secteur des applications embarquées, on ne peut plus faire abstraction du système d'exploitation Linux. Il est désormais reconnu qu'il s'agit d'un environnement fiable, robuste, modulaire, bien adapté aux contraintes des développements pour l'embarqué. D'autant plus qu'il est désormais apte à répondre à des exigences temps réel, soit par l'adjonction d'un second noyau (solutions RTLinux de FSMlabs ou RTAI), soit en rendant directement le noyau Linux préemptif, comme le propose MontaVista (Electronique n° 123, p. 59). Comme, parallèlement, un nombre toujours plus élevé de fabricants de cartes proposent le support de Linux dès la sortie de leurs nouveaux produits, cette solution devient de plus en plus populaire.

Au-delà, la particularité principale de Linux est qu'il fait partie de la communauté Open Source, c'est-à-dire que son code est du domaine public, accessible par tout un chacun. En conséquence, les développements autour de ce système d'exploitation sont innombrables, au grand bénéfice des développeurs d'applications pour l'embarqué qui trouvent facilement des pilotes, des utilitaires, des applicatifs… Cette situation permet aussi au système de bénéficier constamment des améliorations de la communauté des développeurs, tout en restant sous le contrôle de ses promoteurs, notamment Linus Torvald lui-même, pour l'approbation des nouvelles versions du noyau Linux de base. Ces perfectionnements sont ensuite partagés avec les fournisseurs de technologie Linux embarqué à travers cette communauté Open Source. Enfin, le code source pouvant être copié à volonté (il suit en cela les règles de la licence GPL), utiliser Linux permet de réaliser de substantielles économies pour des projets en volume puisqu'il n'y a pas de royalties à payer comme c'est le cas avec les OS traditionnels (qu'ils soient temps réel ou non). Ce qui ne signifie pas pour autant, contrairement à une idée reçue, qu'il s'agit d'un système d'exploitation gratuit, surtout pour le cas des applications embarquées. En effet, dans ce domaine, en passant par le biais d'un fournisseur d'une solution Linux professionnelle, les utilisateurs bénéficient instantanément des nombreux développements consentis par la société en termes d'adaptation du noyau Linux sur les multiples configurations matérielles rencontrées (cartes, processeurs, périphériques…). Sans compter la fourniture d'outils de compilation, de débogage, d'analyse, spécialement adaptés aux contraintes spécifiques des systèmes enfouis. Linux est donc un environnement vivant, qui bénéficie à l'heure actuelle d'un dynamisme très fort dans le monde de l'embarqué : les prévisions, selon le cabinet d'étude américain VDC, montrent que les outils et services autour de Linux dépasseront les 300 M$ pour le marché de l'embarqué en 2005.

Interface graphique et communication : les atouts de Java

Autre élément très important : la combinaison d'un OS Linux embarqué avec Java apporte un niveau d'efficacité important pour le développement d'interfaces graphiques, utilisables notamment sur des écrans LCD fréquemment rencontrés dans les applications embarquées. De nombreuses études offrent aujourd'hui ce type d'interface graphique sur un vaste échantillon de plates-formes embarquées dans l'automobile, les systèmes de communications, les appareils électroniques grand public… Ces interfaces graphiques déployées sur les plates-formes embarquées sont soit de type « bitmap/icône », soit de type « fenêtres ». Ici, contrairement aux applications Linux pour serveurs ou postes de travail qui utilisent l'interface X-Windows, Linux embarqué offre une gestion directe des graphiques.

La distribution Linux de MontaVista, par exemple, inclut la solution Open Source « MicroWindows » orientée vers les API Win 32, conçus pour fonctionner sur de nombreuses plates-formes. Mais pour les applications enfouies, la distribution Linux embarquée de MontaVista comprend aussi les bibliothèques Hard Hat Graphics et Qt/Embedded. La première, développée à partir de Tiny X, la version embarquée Open Source de X Windows, est utilisée pour les applications centralisées avec déport d'écrans, comme par exemple dans l'automobile ou le contrôle commande de machine. Elle utilise la boîte à outils et les bibliothèques GTK+. La seconde, qui n'est pas Open Source, est plutôt destinée à des systèmes autonomes, sans besoin de connectivité. Ces bibliothèques de fonctions graphiques préprogrammées tournent directement sur le « frame buffer » Linux, fournissant une interface de bas niveau très proche du matériel. Les développeurs d'applications embarqués sous Linux ont l'habitude d'utiliser des fonctions graphiques et de générer le code C ou C++ correspondant. Or, avec Java, la situation est différente. En effet, ce langage utilise pour les systèmes embarqués le standard de classes graphiques AWT (Abstract windowing toolkit) fourni dans l'environnement J2ME (Java 2 platform micro edition). Ces classes, outre leur richesse d'objets graphiques, offrent l'avantage d'être complètement indépendantes de la plate-forme utilisée. Le travail de MontaVista avec IBM a donc été d'encapsuler les couches graphiques Qt/Embedded et les librairies GTK+ pour les utiliser sous forme de classes graphiques AWT, de manière transparente pour l'utilisateur ; en fait, les API des classes AWT sont exposées par le biais de la couche SWT, (Simple widget toolkit), qui traduit les fonctionnalités graphiques sous-jacentes en appels standard AWT. Quant à la solution MicroWindows, elle dépend de la librairie FLTK (Fast light toolkit) qui n'a pas la possibilité de supporter la richesse de toutes les fonctionnalités des API AWT. Pour l'utiliser dans le cadre d'un développement Java, les utilisateurs doivent rajouter leurs propres objets graphiques. Autre fonctionnalité importante des systèmes embarqués d'aujourd'hui, leurs interfaces de communication. C'est une des tâches de base d'un portage de Linux que de rendre les pilotes disponibles pour les liaisons série RS-232 et l'Ethernet si ces composants sont présents sur la carte. La communication est alors basée soit sur la pile TCP/IP fournie par Linux, qui autorise l'accès à Internet et aux interfaces socket afin de mettre en œuvre des sessions de communication de programme à programme, soit sur de simples interfaces de type série.

Gestion du graphique avec Java

Dans les applications embarquées, la possibilité de gérer de manière simple des applications graphiques est un des avantages de Java. Ici, les classes de bibliothèques graphiques AWT sont encapsulées dans des librairies traditionnelles Qt/Embedded ou GTK+ utilisées dans des applications embarquées sous le noyau Linux de MontaVista. La gestion des classes graphiques AWT est ainsi transparente pour l'utilisateur.

Les composants ou les bus spécialisés pour la communication, qui sont directement liés à ces interfaces série, sont alors manipulés à travers des classes fournies comme des extensions aux librairies de classes Java ; ces extensions incluent des systèmes qui interfacent des bus automobiles comme CAN, Most ou IEEE J-1850. La gestion des interfaces série est importante car, dans les processus de développement certains composants sont accessibles par le biais de ces liaisons série, ou bien certains périphériques sont pilotés par des protocoles spécialisés à travers la ligne série. Pour cette raison, la solution Java/Linux de MontaVista inclut des outils spécialisés, développés en partenariat avec IBM, afin que les programmes écrits sur les plates-formes de développement puissent être directement embarqués vers les systèmes de production.

Les différents types d'interfaces qui utilisent la technologie Java et un OS Linux embarqué sont maintenant disponibles sur un grand nombre de cibles. Le développeur peut alors configurer la machine virtuelle et les composants de la bibliothèque Java ainsi que le Linux embarqué selon ses besoins. Il est donc dorénavant possible, avec le couple Java/Linux, de réutiliser du code amélioré sur un nombre étendu d'architectures, qui vont de systèmes autonomes très embarqués à des plates-formes complexes dotées d'interfaces graphiques de haut niveau. La combinaison de ces deux technologies, par la modularité qu'elle offre, procure donc aux ingénieurs un nouveau choix pour le déploiement d'un projet grâce aux efforts d'intégration réalisés sur de nombreuses architectures matérielles.

(*) Un thread est un processus « léger », correspondant à l'exécution d'un petit programme ou d'une routine d'un programme plus gros, indépendamment de celui-ci. Un thread résulte de la décomposition d'un processus en plusieurs entités indépendantes.

Copy link
Powered by Social Snap