FR 3042619 A1 20170421 FR 1559957 A 20151019 1 DOMAINE TECHNIQUE GENERAL La présente invention concerne les systèmes d'exploitation, et en particulier un équipement informatique équipé d'un système d'exploitation. ETAT DE L'ART Un système d'exploitation (en anglais « Operating System », i.e. OS) est un logiciel qui dirige l'utilisation des capacités d'un ordinateur par des applications (« software ») sur un matériel donné (« hardware »). Certains systèmes d'exploitation ont été adaptés pour un fonctionnement plus spécifique sur des systèmes embarqués, et notamment dans des équipements « critiques » tels que des équipements aéronautiques, des robots industriels, etc. Dans un architecture embarquée, un « firmware » (en français « logiciel interne ») intègre un ensemble de fonctions et de structures de données nécessaires pour mettre en oeuvre les fonctionnalités des applications. Le firmware comprend le système d'exploitation embarqué et un BSP (« Board Support Package »), c'est à dire un logiciel bas niveau de support de cartes-mères, qui permet à l'aide de drivers spécifique du matériel de supporter le système d'exploitation. Dans la mesure où comme expliqué les équipements sont considérés critiques, il apparait essentiel que le système d'exploitation fournisse des résultats corrects dans un délai déterminé. En effet, un retard de réponse d'un calculateur de vol par exemple pourrait avoir des conséquences désastreuses sur la trajectoire d'un avion. Pour cela sont apparus des systèmes d'exploitation temps-réel destinés à être embarqués sur ces équipements critiques. Dans ces systèmes d'exploitation, l'accent est mis sur la durée nécessaire pour effectuer chaque opération et répondre aux demandes rapidement en vue de satisfaire aux contraintes de temps du système dans 3042619 2 lequel il est utilisé. Ces OS doivent être prévisibles, optimaux en termes d'ordonnancement, et rapides. Ils autorisent en outre un contact direct entre les logiciels applicatifs et les périphériques. Dans certains cas, les ressources sont réservées à 5 l'avance, évitant ainsi les ralentissements que provoqueraient les réservations à la volée, et garantissant que les ressources sont continuellement disponibles. De tels systèmes d'exploitation embarqués sont conçus pour utiliser au mieux un matériel précis qui est entièrement sous leur contrôle. Ces OS 10 apportent satisfaction, mais s'avèrent peu modulaires et trop spécifiques (difficulté à leur développer des applications), et coûteux. Il serait souhaitable de disposer de nouveaux OS qui respectent les exigences attendues y compris pour les équipements les plus critiques, tout en étant universels. 15 PRESENTATION DE L'INVENTION Selon un premier aspect, la présente invention concerne un équipement comprenant des moyens de traitement de données configurés 20 pour mettre en oeuvre un système d'exploitation, et des moyens d'interface réseau filaire, le boitier étant caractérisé en ce que ledit système d'exploitation est un système d'exploitation mobile présentant : - un noyau contenant une pluralité de pilotes pour le contrôle des fonctions matérielles d'un terminal mobile ; 25 - un ensemble de bibliothèques ; - un framework applicatif contenant une pluralité d'interfaces de programmation utilisant lesdites bibliothèques pour accéder aux pilotes du noyau ; ledit système d'exploitation mobile étant modifié de sorte que le noyau 30 contienne en outre au moins un pilote des moyens d'interface réseau filaire, et que le framework applicatif contienne une interface de programmation d'accès audit pilote des moyens d'interface réseau filaire. 3042619 3 Selon d'autres caractéristiques avantageuses et non limitatives : - le système d'exploitation comprend également un environnement d'exécution pour la mise en oeuvre d'une machine virtuelle ; 5 - ledit environnement d'exécution comprend un ensemble de bibliothèques d'un langage de programmation pour l'exécution sur ladite machine virtuelle d'applications basées sur ledit framework applicatif ; - ledit langage de programmation est Java®. - lesdits moyens d'interface réseau filaire sont conformes à un standard 10 choisi parmi Ethernet, CAN et ARINC ; - le framework applicatif contient une interface de programmation pour la gestion d'échanges de données entre applications, ledit système d'exploitation mobile étant modifié de sorte que le noyau contienne en outre au moins un module d'acquisition de données, l'ensemble de bibliothèques 15 contenant en outre une bibliothèque permettant à ladite interface de programmation pour la gestion d'échanges de données entre applications d'accéder audit module d'acquisition de données du noyau ; - le framework applicatif contient une interface de programmation pour la gestion d'échanges de données entre applications, ledit système 20 d'exploitation mobile étant modifié de sorte que le noyau contienne en outre au moins un module de stockage de données, l'ensemble de bibliothèques contenant en outre une bibliothèque permettant à ladite interface de programmation pour la gestion d'échanges de données entre applications d'accéder audit module de stockage de données du noyau ; 25 - ledit noyau (K) est un noyau Linux ; - ledit système d'exploitation mobile est Android®. Selon un deuxième aspect, l'invention concerne un système de contrôle de vol d'un aéronef, comprenant au moins un calculateur et un 30 équipement selon le premier aspect de l'invention connectés via lesdits moyens d'interface réseau filaire. 3042619 4 Selon un troisième aspect, l'invention propose un aéronef comprenant un système de contrôle de vol selon le deuxième aspect. PRESENTATION DES FIGURES 5 D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre d'un mode de réalisation préférentiel. Cette description sera donnée en référence aux dessins annexés dans lesquels : 10 - la figure 1 représente un système de contrôle de vol comprenant un équipement selon l'invention ; - la figure 2a est un schéma d'un exemple d'une architecture de système d'exploitation mobile connue; - la figure 2b est un schéma d'un mode de réalisation architecture de 15 système d'exploitation d'un équipement selon l'invention. DESCRIPTION DETAILLEE Architecture 20 En référence à la figure 1, est proposé un équipement 1, en particulier un équipement 1 d'un véhicule tel qu'aéronef 21, un équipement de sécurité tel qu'un système de planification et de restitution de mission ou un système de combat individuel, etc. 25 Comme représenté, l'équipement 1 est par exemple un terminal mobile tel qu'une tablette tactile relié par une liaison fixe, i.e. filaire (qui sera explicitée plus loin) par opposition à liaison mobile (Bluetooth, Wifi, 3/4G, etc.) à d'autres composants du véhicule tel qu'un calculateur de vol 2, mais la présente invention n'est pas limitée à ce mode de réalisation. 30 L'équipement 1 peut par la même liaison filaire être connecté à des capteurs (par exemple une centrale inertielle), des moyens de commande (par exemple un manche à balai) et/ou des actionneurs. Dans l'exemple où 3042619 5 l'équipement 1 est une tablette tactile, elle peut être utilisée pour monitorer le fonctionnement du véhicule, permettre de saisir des commandes, etc. L'équipement 1 comprend des moyens de traitement de données 11 (un processeur, un microcontrôleur, etc.), des moyens de stockage de 5 données 12 (une mémoire, typiquement une mémoire flash et/ou une mémoire morte), et des moyens d'interface filaire 13 pour ladite liaison fixe. L'équipement 1 est en particulier un « système embarqué », c'est-à-dire qu'il est destiné à recevoir un ou plusieurs composants logiciels embarqués (la terminologie « enfoui » est utilisée pour illustrer le fait que le 10 composant logiciel est inaccessible par un utilisateur), et notamment un système d'exploitation OS qui sera décrit plus loin. L'embarquement consiste en général en l'écriture du code du composant logiciel dans des moyens de stockage de données 12 (en particulier une mémoire morte de l'équipement 1, en vue d'une exécution 15 par les moyens de traitement de données 11 de l'équipement 1. Dans le cas où le composant logiciel est mis en oeuvre par un circuit logique de type FPGA, l'embarquement consiste en une reconfiguration adéquate du circuit logique (faisant partie des moyens de traitement de données 11), ou à la réalisation d'un circuit intégré de type ASIC (« Application-Specific 20 Integrated Circuit ») conforme à la configuration du FPGA et son intégration dans les moyens de traitement de données 11. Les moyens d'interface filaire 13 correspondent typiquement à une carte réseau acceptant un bus informatique, en particulier au standard ARINC 429. Il s'agit d'une norme qui décrit à la fois une architecture, une 25 interface électrique et un protocole pour véhiculer des données numériques. Il est basé sur une liaison « simplex », c'est-à-dire une liaison unidirectionnelle 1-to-N, qui va être triplée ou quadruplée (de sorte à obtenir des architectures « triplex » ou « quadruplex »). Ainsi, quand bien même N1 liaisons seraient défaillantes le système fonctionnerait. 30 Alternativement, le standard CAN (« Controller Area Network ») peut être utilisé, ou encore le standard Ethernet (notamment pour une architecture AFDX « Avionics Full DupleX switched ethernet »). 3042619 6 Système d'exploitation mobile Comme expliqué, les moyens de traitement de données 11 de 5 l'équipement 1 sont configurés pour mettre en oeuvre un système d'exploitation OS. Le présent OS est spécifique en ce qu'il basé sur un système d'exploitation mobile tel que Android® ou iOS®. L'exemple d'Android, dont la figure 2a représente un exemple d'architecture, sera utilisé par la suite. 10 Par « basé sur » on entend que le présent OS est dérivé du système d'exploitation mobile tel qu'on peut le trouver sur des terminaux mobiles du commerce, mais avec des fonctionnalités supplémentaires pour l'utiliser dans un contexte temps réel. Pourtant, au vu de la criticité des opérations de l'équipement 1, on 15 peut s'interroger sur la pertinence d'utiliser un système d'exploitation mobile, mais de façon surprenante un système d'exploitation mobile s'avère modifiable de sorte à être parfaitement adapté au mode des systèmes d'exploitation embarqués industriels. En effet, un système d'exploitation mobile reste un système 20 d'exploitation embarqué qui a été conçu pour tirer au maximum partie des ressources limitées d'un terminal mobile, sait gérer dans une certaine mesure le temps réel (en particulier pour la téléphonie), et est particulièrement adapté pour le développement et l'utilisation d'applications. On verra plus loin comment le modifier de sorte à respecter les contraintes 25 d'une utilisation embarquée critique telle que pour l'aéronautique. En référence à la figure 2a, un système d'application mobile présente une pluralité de couches successives. La première couche est un noyau K (pour « Kernel »), en particulier noyau Linux « allégé » si l'OS est Android, contenant une pluralité de pilotes 30 pour le contrôle des fonctions matérielles d'un terminal mobile. Couche de plus bas niveau, le noyau est composé de modules de base fournissant au reste de l'OS une interface pour utiliser le matériel. Codé en C dans le cas 3042619 7 du noyau Linux, il est limité aux modules essentiels à un terminal mobile (le noyau Linux de base est « modulaire », c'est-à-dire que des modules peuvent être ajoutés ou retirés, ce qui permet d'avoir comme ici un noyau allégé). Des exemples des modules essentiels sont visibles sur la figure 2a : 5 un pilote d'écran « Display Driver », un pilote de clavier « Keypad Driver », un pilote d'appareil photo « Camera Driver », un pilote de moyens d'interface sans-fil (Wifi, 3/4G) « Wifi Driver », un pilote des moyens de stockage de données 12 « Flash Memory Driver », un ou plusieurs pilotes des systèmes sonores (haut-parleurs/microphone) « Audio Drivers », un 10 pilote de la batterie « Power Management », et un module de communication interprocessus (IPC) « Binder IPC Driver » (dans Android chaque application est lancée dans un processus différent. Ces différents processus ont besoin de communiquer ensemble, de partager des données, ce qui est permis par le Binder). 15 Sur le noyau K, une couche de bibliothèques L (pour « Librairies ») est la première couche logique décorrélée du matériel. Elle est éventuellement séparée du noyau K par une interface d'abstraction (HAL, « hardware abstraction layer »). Ces bibliothèques sont dites natives. Elles sont écrites en C/C++ dans le cas d'Android. Elles fournissent les 20 fonctionnalités de bas niveau de l'OS et sont utilisées par un certain nombre de composants comme l'on verra plus loin. On citera par exemple la bibliothèque « Media Framework » qui permet le support des standards audio/vidéo/images, « WebKit » qui est moteur de rendu, sur lequel on peut développer un navigateur web, ou 25 « SQLite » qui propose un moteur de base de données relationnelle accessible par le langage SQL. Au-dessus des bibliothèques L on peut un environnement d'exécution R (pour Runtime), qui contient dans le cas d'Android une machine virtuelle (appelée « Dalvik ») et des bibliothèques dites « coeur » 30 (Core Librairies), i.e. un ensemble de bibliothèques d'un langage de programmation pour l'exécution sur ladite machine virtuelle d'applications, typiquement Java. 3042619 8 Encore au-dessus on trouve un framework applicatif (AF, parfois appelé en français « structure logicielle ») contenant une pluralité d'interfaces de programmation (API) utilisant lesdites bibliothèques L pour accéder aux pilotes du noyau K. Le framework permet aux développeurs de 5 créer des applications riches grâce aux APIs. Ces APIs s'organisent en un certain nombre de services appelés « Manager », et on trouve par exemple une interface de programmation pour la gestion d'activité « Activity Manager » (elle gère le cycle de vie des applications et maintient une pile de navigation permettant d'aller d'une 10 application à une autre et de revenir à la précédente quand la dernière application ouverte est fermée », une interface de programmation pour le chargement des paquets « Package Manager », une interface de programmation pour la gestion d'échanges des fenêtres « Window Manager », une interface de programmation pour la gestion des ressources 15 (i.e. les contenus tout ce qui n'est pas du code) « Resouce Manage », une interface de programmation pour la gestion d'échanges de données entre applications « Content Provider », une interface de programmation pour l'accès à la téléphonie « Telephony Manager », une interface de programmation pour l'accès au GPS « Location Manager », etc. 20 Tout au sommet on trouve les applications A intégrées à l'OS (applications de base tel que le navigateur). Par-dessus l'homme du métier pourra rajouter des applications utilisant la machine virtuelle. D'autres OS mobiles partagent la même architecture, par exemple iOS présente une couche « Core OS » avec le noyau d'OSX, une couche 25 « Core Service » de bibliothèques de base, et une couche « Cocoa » de Framework. Modification du système d'exploitation mobile 30 Le présent système d'exploitation OS est une modification d'un tel système d'exploitation mobile, qui lui permet facilement et efficacement de présenter le niveau de garanties attendu d'un OS embarqué. 3042619 9 Par système d'exploitation mobile, on entend un système d'exploitation du type de celui décrit, présentant au moins : - le noyau K contenant une pluralité de pilotes pour le contrôle des fonctions matérielles d'un terminal mobile ; 5 - l'ensemble de bibliothèques L ; - le framework applicatif AF contenant une pluralité d'interfaces de programmation utilisant lesdites bibliothèques L pour accéder aux pilotes du noyau K. 10 En référence à la figure 2, le présent système d'exploitation OS se distingue du système d'exploitation mobile initial en ce que le noyau K contient en outre au moins un pilote des moyens d'interface réseau filaire 13, le framework applicatif AF contenant une interface de programmation d'accès audit pilote des moyens d'interface réseau filaire 13. 15 En d'autres termes, à coté et en cohérence avec les pilotes de moyens d'interface réseau sans fil (en particulier le « Wifi Driver ») évoqué précédemment, on vient ajouté des pilotes ARINC, Ethernet, ADFX, CAN, etc. de sorte à gérer les moyens d'interface filaire 13. Ces liaisons sont intégrés dans le framework applicatif AF de sorte que les liaisons fixes 20 soient visibles au même titre que les liaisons mobiles (et gérées identiquement), et ce de façon transparente pour les applications. Plus précisément, la sélection automatique de la meilleure connexion prend en compte les liaisons fixes et l'OS route automatiquement les données issues de ces liaisons en temps réel comme il pouvait le faire pour le téléphone 25 auparavant, garantissant la réactivité réseau de l'équipement 1. Par ailleurs, de façon préférée ledit système d'exploitation mobile est également modifié de sorte que le noyau K contienne en outre au moins un module d'acquisition de données, l'ensemble de bibliothèques L contenant 30 en outre une bibliothèque permettant à une interface de programmation pour la gestion d'échanges de données entre applications (que contient typiquement comme expliqué le framework applicatif AF d'un système 3042619 10 d'exploitation mobile, i.e. le « Content Provider ») d'accéder audit module d'acquisition de données du noyau K. Similairement, de façon préférée ledit système d'exploitation mobile est également modifié de sorte que le noyau K contienne en outre au moins 5 un module de stockage de données, l'ensemble de bibliothèques L contenant en outre une bibliothèque permettant à ladite interface de programmation pour la gestion d'échanges de données entre applications d'accéder audit module de stockage de données du noyau K. Ce « Content Provider » est une API permettant de centraliser des 10 contenus, en particulier en répondant à la requête d'une application demandant des données d'une autre application. Il se comporte comme une petite base de données, et pour cela il utilise principalement la bibliothèque SQLite (ou une autre bibliothèque de base de données relationnelles). Ainsi, le présent OS propose d'une part d'intégrer au noyau K des 15 pilotes de modules d'acquisition de données/de stockage de données (par exemple sur le moyen de stockage de données 12 ou une mémoire dédiée), et d'autre part d'intégrer aux bibliothèques L, à côté de SQLite (ou une autre bibliothèque de base de données), des bibliothèques permettant l'utilisation desdits pilotes d'acquisition et/ou stockage. 20 Cela permet au Content Provider d'utiliser les données reçues ou stockées sur les moyens de stockage de données de façon toujours transparente pour les applications qui le requièrent. Cela garantit les performances opérationnelles, y compris les aspects sécurité. 25 Dans le cas d'un OS basé sur Android tel que représenté, les applications développées en Java pourront être exécutées en temps réel sur la machine virtuelle de l'environnement d'exécution R, et présenter un fonctionnement temps réel et des performances garanties sur les fonctionnalités requises (acquisition/stockage de données et 30 communications via une connexion filaire) pour un système embarqué dans des domaines critiques tels que l'aéronautique. 3042619 11 La possibilité de développer facilement et rapidement n'importe quelle application (grâce au framework applicatif AF) qui a fait le succès des systèmes d'exploitations mobiles tels qu'Android reste présente, ce qui simplifie largement le développement, le test et le déploiement de nouveaux 5 composants logiciels. Système de vol et aéronef Selon un deuxième aspect, l'invention concerne un système de 10 contrôle de vol (par exemple de type FCS, « Flight Control System ») d'un aéronef 21, comprenant au moins un calculateur 2 et un équipement 1 selon le premier aspect connectés via lesdits moyens d'interface réseau filaire 13. On note que le calculateur 2 peut lui-même être un équipement selon le premier aspect recevant le système d'exploitation OS tel que décrit. 15 Selon un troisième aspect est proposé l'aéronef 21 comprenant un système de contrôle de vol selon le deuxième aspect. REVENDICATIONS1. Equipement (1) comprenant des moyens de traitement de données (11) configurés pour mettre en oeuvre un système d'exploitation (OS), et des moyens d'interface réseau filaire (13), le boitier (1) étant caractérisé en ce que ledit système d'exploitation (OS) est un système d'exploitation mobile présentant : - un noyau (K) contenant une pluralité de pilotes pour le contrôle des fonctions matérielles d'un terminal mobile ; - un ensemble de bibliothèques (L) ; - un framework applicatif (AF) contenant une pluralité d'interfaces de programmation utilisant lesdites bibliothèques (L) pour accéder aux pilotes du noyau (K) ; ledit système d'exploitation mobile étant modifié de sorte que le noyau (K) contienne en outre au moins un pilote des moyens d'interface réseau filaire (13), et que le framework applicatif (AF) contienne une interface de programmation d'accès audit pilote des moyens d'interface réseau filaire (13). 2. Equipement selon la revendication 1, dans lequel le système d'exploitation (OS) comprend également un environnement d'exécution (R) pour la mise en oeuvre d'une machine virtuelle. 3. Equipement selon la revendication 2, dans lequel ledit environnement d'exécution (R) comprend un ensemble de bibliothèques d'un langage de programmation pour l'exécution sur ladite machine virtuelle d'applications basées sur ledit framework applicatif (AF). 30 4. Equipement selon la revendication 3, dans lequel ledit langage de programmation est Java®. 3042619 13 5. Equipement selon l'une des revendications 1 à 4, dans lequel lesdits moyens d'interface réseau filaire (13) sont conformes à un standard choisi parmi Ethernet, CAN et ARINC. 5 6. Equipement selon l'une des revendications 1 à 5, dans lequel le framework applicatif (AF) contient une interface de programmation pour la gestion d'échanges de données entre applications, ledit système d'exploitation mobile étant modifié de sorte que le noyau (K) contienne en 10 outre au moins un module d'acquisition de données, l'ensemble de bibliothèques (L) contenant en outre une bibliothèque permettant à ladite interface de programmation pour la gestion d'échanges de données entre applications d'accéder audit module d'acquisition de données du noyau (K). 15 7. Equipement selon l'une des revendications 1 à 6, dans lequel le framework applicatif (AF) contient une interface de programmation pour la gestion d'échanges de données entre applications, ledit système d'exploitation mobile étant modifié de sorte que le noyau (K) contienne en outre au moins un module de stockage de données, l'ensemble de 20 bibliothèques (L) contenant en outre une bibliothèque permettant à ladite interface de programmation pour la gestion d'échanges de données entre applications d'accéder audit module de stockage de données du noyau (K). 8. Equipement selon l'une des revendications 1 à 7, dans 25 lequel ledit noyau (K) est un noyau Linux. 9. Equipement selon la revendication 8, dans lequel ledit système d'exploitation mobile est Android®. 10. Système de contrôle de vol d'un aéronef, comprenant au moins un calculateur (2) et un équipement (1) selon l'une des revendications 1 à 9 connectés via lesdits moyens d'interface réseau filaire (13). 3042619 14 11. Aéronef comprenant un système de contrôle de vol selon la revendication 10.