Brevet FR3042617A1 — publié le 20170421

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 3042617 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 des moyens de traitement de données configurés pour mettre 20 en oeuvre un système d'exploitation, et des moyens de stockage de données, 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, dont une interface de programmation pour la gestion d'échanges de données entre applications ; 30 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 et un module de stockage de données sur les moyens de stockage de données, 3042617 3 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 d'acquisition de données du noyau, et une bibliothèque permettant à ladite interface de programmation 5 pour la gestion d'échanges de données entre applications d'accéder audit module de stockage de données du noyau. Selon d'autres caractéristiques avantageuses et non limitatives : - le système d'exploitation comprend également un environnement 10 d'exécution pour la mise en oeuvre d'une machine virtuelle ; - 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® ; 15 - l'équipement comprend en outre des moyens d'interface réseau filaire ; - lesdits moyens d'interface réseau filaire sont conformes à un standard choisi parmi Ethernet, CAN et ARINC ; - ledit système d'exploitation mobile est modifié de sorte que le noyau contienne en outre au moins un pilote des moyens d'interface réseau filaire, 20 et que le framework applicatif contienne une interface de programmation d'accès audit pilote des moyens d'interface réseau filaire ; - ledit noyau est un noyau Linux ; - ledit système d'exploitation mobile est Android®. 25 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 équipement selon le premier aspect de l'invention connectés via lesdits moyens d'interface réseau filaire. Selon un troisième aspect, l'invention propose un aéronef 30 comprenant un système de contrôle de vol selon le deuxième aspect. PRESENTATION DES FIGURES 3042617 4 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 5 dessins annexés dans lesquels : - 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; 10 - la figure 2b est un schéma d'un mode de réalisation architecture de système d'exploitation d'un équipement selon l'invention. DESCRIPTION DETAILLEE 15 Architecture 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 20 un système de combat individuel, etc. 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 25 la présente invention n'est pas limitée à ce mode de réalisation. 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ù l'équipement 1 est une tablette tactile, elle peut être utilisée pour monitorer 30 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 3042617 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 5 embarqués (la terminologie « enfoui » est utilisée pour illustrer le fait que le 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 10 particulier une mémoire morte de l'équipement 1, en vue d'une exécution 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 15 réalisation d'un circuit intégré de type ASIC (« Application-Specific 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 20 ARINC 429. Il s'agit d'une norme qui décrit à la fois une architecture, une 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 N- 25 1 liaisons seraient défaillantes le système fonctionnerait. 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 »). 30 Système d'exploitation mobile 3042617 6 Comme expliqué, les moyens de traitement de données 11 de 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 5 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. 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 10 dans un contexte temps réel. Pourtant, au vu de la criticité des opérations de l'équipement 1, on 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 15 d'exploitation embarqués industriels. En effet, un système d'exploitation mobile reste un système 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 20 particulièrement adapté pour le développement et l'utilisation d'applications. On verra plus loin comment le modifier de sorte à respecter les contraintes 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. 25 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 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 30 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 3042617 7 allégé). Des exemples des modules essentiels sont visibles sur la figure 2a : 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 5 stockage de données 12 « Flash Memory Driver », un ou plusieurs pilotes des systèmes sonores (haut-parleurs/microphone) « Audio Drivers », un 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 10 processus ont besoin de communiquer ensemble, de partager des données, ce qui est permis par le Binder). 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, 15 « hardware abstraction layer »). Ces bibliothèques sont dites natives. Elles sont écrites en C/C++ dans le cas d'Android. Elles fournissent les 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 20 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 « 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 25 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 » (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. 30 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 3042617 8 accéder aux pilotes du noyau K. Le framework permet aux développeurs de 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 5 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 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 10 programmation pour la gestion d'échanges des fenêtres « Window Manager », une interface de programmation pour la gestion des ressources (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 15 l'accès à la téléphonie « Telephony Manager », une interface de programmation pour l'accès au GPS « Location Manager », etc. 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. 20 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 « Core Service » de bibliothèques de base, et une couche « Cocoa » de Framework. 25 Modification du système d'exploitation mobile 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é. 30 Par système d'exploitation mobile, on entend un système d'exploitation du type de celui décrit, présentant au moins : 3042617 9 - le noyau K contenant une pluralité de pilotes pour le contrôle des fonctions matérielles d'un terminal mobile ; - l'ensemble de bibliothèques L ; - le framework applicatif AF contenant une pluralité d'interfaces de 5 programmation utilisant lesdites bibliothèques L pour accéder aux pilotes du noyau K, dont une interface de programmation pour la gestion d'échanges de données entre applications (typiquement le « Content Provider »). 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 module d'acquisition de données, l'ensemble de bibliothèques L contenant en outre une bibliothèque permettant à l'interface de programmation pour la gestion d'échanges de données entre 15 applications d'accéder audit module d'acquisition de données du noyau K. Similairement, le noyau K contienne en outre au moins 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 20 de stockage de données du noyau K. Ce « Content Provider » est une API permettant de centraliser des 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 25 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 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 30 bibliothèque de base de données), des bibliothèques permettant l'utilisation desdits pilotes d'acquisition et/ou stockage. 3042617 10 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é. 5 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 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 10 d'interface réseau filaire 13. 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 ajouter des pilotes ARINC, Ethernet, ADFX, CAN, etc. de sorte à gérer les moyens d'interface filaire 13. Ces liaisons sont 15 intégrés dans le framework applicatif AF de sorte que les liaisons fixes 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 20 de ces liaisons en temps réel comme il pouvait le faire pour le téléphone auparavant, garantissant la réactivité réseau de l'équipement 1 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 25 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 communications via une connexion filaire) pour un système embarqué dans des domaines critiques tels que l'aéronautique. 30 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 3042617 11 simplifie largement le développement, le test et le déploiement de nouveaux composants logiciels. Système de vol et aéronef 5 Selon un deuxième aspect, l'invention concerne un système de 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 10 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. 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. 15 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 de stockage de données (12), 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), dont 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 d'acquisition de données et un module de stockage de données sur les moyens de stockage de données (12), 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), et 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). 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 3042617 13 d'un langage de programmation pour l'exécution sur ladite machine virtuelle d'applications basées sur ledit framework applicatif (AF). 4. Equipement selon la revendication 3, dans lequel ledit 5 langage de programmation est Java®. 5. Equipement selon l'une des revendications 1 à 4, comprenant en outre des moyens d'interface réseau filaire (13). 10 6. Equipement selon la revendication 5, dans lequel lesdits moyens d'interface réseau filaire (13) sont conformes à un standard choisi parmi Ethernet, CAN et ARINC. 7. Equipement selon l'une des revendications 5 et 6, dans 15 lequel ledit système d'exploitation mobile est 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). 20 8. Equipement selon l'une des revendications 1 à 6, dans lequel ledit noyau (K) est un noyau Linux. 9. Equipement selon la revendication 7, dans lequel ledit 25 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 à 8 connectés via lesdits moyens d'interface réseau filaire 30 (13). 11. Aéronef comprenant un système de contrôle de vol selon la revendication 9.