"Linux est-il un système d’exploitation viable pour un projet embarqué ?"

[TRIBUNE par Mark Patrick, MOUSER] La plupart des développeurs apprécient que leur conception embarquée puisse nécessiter un système d’exploitation. Cela dit, il est parfois difficile de définir avec certitude le point de basculement au-delà duquel un système d’exploitation est vraiment nécessaire. Une fois atteint, vient alors la question de choisir le meilleur OS. Une décision qui peut sembler encore plus complexe à prendre. Eclairages de Mark Patrick, directeur marketing technique EMEA du distributeur Mouser. ...

De prime abord, il faut toujours examiner les raisons pour lesquelles une conception embarquée pourrait dicter l’utilisation d’un OS. Si la conception repose sur un simple microcontrôleur, comme par exemple un capteur de température connecté et alimenté par une pile, la question ne se pose même pas. Dans un tel cas, un système d’exploitation se bornerait juste à faire fonctionner le dispositif en fournissant un grand nombre de fonctionnalités supplémentaires qui ne seraient jamais utilisées, et ce en supposant que le microcontrôleur dipose d'assez de ressources supplémentaires pour exécuter un OS...
 
Mais peut-être est-il bon de préciser dans le contexte de cette tribune qu’un OS est une plate-forme logicielle qui ressemble à Android, Linux ou Microsoft Windows et qui possède un noyau. Nous ne parlons pas ici des approches qui s’appuie sur l’intégration d’un simple ordonnanceur ou d’une architecture logicielle basique bien que populaire comme le « round robin » au sein de l’application.
 
Pour la plupart des conceptions, la réflexion portant sur l’usage d’un système d’exploitation démarre lorsqu’une grande partie du design exige le recours à des protocoles et piles réseau populaires et doit héberger plus d’une application de base. Dans ce dernier cas, il y a un besoin de prendre en charge threads et processus, ce qu’un système d’exploitation est apte à fournir. Le design peut également avoir besoin d’accéder à un système de gestion de fichiers pour stocker des données et les traiter. Si la conception nécessite en outre du middleware pour assurer la communication ou la sécurité, alors il y a probablement probablement besoin d’un système d’exploitation. Un autre avantage lié à l’utilisation d’un système d’exploitation peut être la gestion de l’alimentation. Enfin, un OS dispose généralement de ressources pour aider à planifier des tâches régulières ou peu fréquentes qui sont indépendantes des applications de base.
 
Lorsqu’il s’agit de choisir le bon système d’exploitation, la liste des candidats possibles est longue. Néanmoins, un récent sondage sur ce sujet effectué auprès des développeurs de systèmes embarqués montrent que les distributions Linux open source arrivent en tête de liste. Pour expliquer leur choix, les répondants ont cité comme raisons principales la disponibilité du code source complet, le fait de ne pas avoir à payer de redevances, et l’accès à une grande communauté d’utilisateurs expérimentés. Ce résultat n’est pas une grande surprise, étant donné que, dans le monde des systèmes informatiques d’entreprise, Linux est aussi très apprécié pour les mêmes raisons, mais il montre aussi à quel point Linux peut s’adapter.
 
Capable de fonctionner aussi bien sur des calculateurs embarqués monocartes (SBC) que sur des serveurs de grandes entreprises, Linux est reconnu pour ses capacités multithreads avancées, son extrême stabilité, sa fiabilité réseau et sa prise en charge par des  milliers de programmeurs bénévoles et professionnels. En raison de sa très large diffusion, la plupart des développeurs et des ingénieurs savent également déjà comment l’utiliser et comment gérer des réseaux qui s’appuient sur Linux.
 
Il n’existe pas de distribution Linux spécifique pour une utilisation dans des systèmes embarqués. Généralement, les fonctionnalités incluses, comme c’est le cas par exemple pour l’image Stretch Debian utilisée avec le calculateur monocarte BeagleBone Black, sont limitées uniquement par la taille de la carte microSD utilisée. Cette image particulière dispose en sus de certains outils de développement à l’instar d’une instance locale de l’environnement de développement intégré Cloud9, d’un éditeur de flot visuel Node-Red, ainsi que des langages tels que Python et GCC. Un grand nombre d’autres cartes similaires utilisent aussi Linux, et leur nombre continuent d’augmenter au fur et à mesure que les développeurs, qu’ils soient des makers ou des développeurs professionnels, adoptent ces SBC comme des plates-formes pratiques pour prototyper une conception.
 
Pour certaines applications, notamment celles considérées comme temps réel, il est toutefois nécessaire de garantir des temps de réponse prédictibles qui peuvent dépasser les propres capacités de Linux. Ce comportement déterministe et totalement préemptif, cependant, peut être assuré par des noyaux temps réel qui ont été développés en ce sens, comme par exemple Real-Time Linux.
 
Dans ces conditions, Linux est-il un système d’exploitation viable pour une utilisation dans des applications embarquées bâties sur des microprocesseurs ? Oui, absolument, et de nombreuses raisons soutiennent cette assertion. Certains d’entre elles découlent de considérations techniques liées à la conception et à l’implémentation de l’application, tandis que d’autres ont à voir avec le support et la maintenance du design tout au long du cycle de vie. Avec une telle adoption généralisée, les développeurs de systèmes embarqués peuvent être rassurés sachant qu’il existe une vaste communauté de professionnels expérimentés des logiciels qui soutient et promeut ce système d’exploitation extrêmement robuste et évolutif. Le fait que Linux n’exige pas le paiement de redevances contribue aussi au processus de budgétisation et accroît son attractivité. Avec la pris en charge de multiples langages de programmation, pilotes et bibliothèques, il n’est pas étonnant que Linux ait pris ses marques en tant que système d’exploitation de choix pour les systèmes embarqués.