FR3045879A1 - AVIONIC EXECUTION PLATFORM AND DEVELOPMENT PLATFORM FOR INDEPENDENT CERTIFICATION OF SOFTWARE COMPONENTS - Google Patents

AVIONIC EXECUTION PLATFORM AND DEVELOPMENT PLATFORM FOR INDEPENDENT CERTIFICATION OF SOFTWARE COMPONENTS Download PDF

Info

Publication number
FR3045879A1
FR3045879A1 FR1502650A FR1502650A FR3045879A1 FR 3045879 A1 FR3045879 A1 FR 3045879A1 FR 1502650 A FR1502650 A FR 1502650A FR 1502650 A FR1502650 A FR 1502650A FR 3045879 A1 FR3045879 A1 FR 3045879A1
Authority
FR
France
Prior art keywords
software
processing block
application
computer program
binary code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1502650A
Other languages
French (fr)
Other versions
FR3045879B1 (en
Inventor
Martin Rayrole
Franck Aime
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales SA
Original Assignee
Thales SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thales SA filed Critical Thales SA
Priority to FR1502650A priority Critical patent/FR3045879B1/en
Publication of FR3045879A1 publication Critical patent/FR3045879A1/en
Application granted granted Critical
Publication of FR3045879B1 publication Critical patent/FR3045879B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Abstract

Ce logiciel (50) hébergé sur une plateforme d'exécution cible (4) comporte : au moins un bloc de traitement (51), fournissant une fonctionnalité spécifique, le ou chaque bloc de traitement constituant un composant du logiciel applicatif pouvant être certifié de manière indépendante des autres composants ; un noyau applicatif (56) assurant une orchestration de l'appel de ou de chaque bloc de traitement (51) et/ou des services du système d'exploitation (48) de la plateforme d'exécution cible (4) ; un conteneur logiciel (58), qui, sur requête du noyau applicatif, exécute un code binaire (85) présent en mémoire (42) et associé au bloc de traitement (51), l'exécution du code binaire étant réalisée de manière cloisonnée, le code source exécuté ne pouvant pas échanger de données avec un autre code binaire d'un autre bloc de traitement du logiciel applicatif ou un service du système d'exploitation sans passer par le noyau applicatif, le logiciel applicatif une fois certifié pouvant être mis à jour en modifiant le code binaire correspondant à un bloc de traitement dès lors que ledit code source a été certifié.This software (50) hosted on a target execution platform (4) comprises: at least one processing block (51), providing a specific functionality, the or each processing block constituting a component of the application software that can be certified in a manner independent of other components; an application core (56) orchestrating the call of or of each processing block (51) and / or operating system services (48) of the target execution platform (4); a software container (58), which, on request from the application kernel, executes a binary code (85) present in memory (42) and associated with the processing block (51), the execution of the binary code being performed in a partitioned manner, the executed source code being unable to exchange data with another binary code of another processing block of the application software or an operating system service without going through the application kernel, the application software once certified can be set to day by modifying the binary code corresponding to a processing block when said source code has been certified.

Description

PLATEFORME D’EXECUTION AVIONIQUE ET PLATEFORME DE DEVELOPPEMENT PERMETTANT LA CERTIFICATION INDEPENDANTE DE COMPOSANTS LOGICIELS L’invention a pour domaine celui des logiciels avioniques, c’est-à-dire les logiciels applicatifs propres à être exécutés sur une plateforme d’exécution cible du type avionique.PLANE OF EXECUTION AVIONIC AND DEVELOPMENT PLATFORM FOR THE INDEPENDENT CERTIFICATION OF SOFTWARE COMPONENTS The field of the invention is that of avionics software, that is to say software applications capable of being executed on a target execution platform of the type avionics.

La modification d’une partie d’un logiciel avionique nécessite de procéder à une nouvelle certification de l’ensemble de ce logiciel.The modification of a part of avionics software requires a new certification of all this software.

Il faut en effet s’assurer que la partie modifiée ne vient pas interférer avec ou perturber le bon fonctionnement du reste du logiciel qui n’a pas été modifié.It must indeed ensure that the modified part does not interfere with or disrupt the smooth operation of the rest of the software that has not been modified.

Or, la certification d’un logiciel avionique est une procédure longue et coûteuse. Il est parfois même nécessaire de réaliser des essais en vol pour vérifier le fonctionnement correct du logiciel.However, the certification of avionics software is a long and expensive procedure. It is sometimes even necessary to perform flight tests to verify the correct operation of the software.

De ce fait, l’ajout d’une fonctionnalité dans un logiciel avionique existant ne peut se faire qu’à l’occasion de la mise à disposition d’une nouvelle version certifiée du logiciel.As a result, the addition of a functionality in an existing avionics software can only be done when a new certified version of the software is made available.

Par ailleurs, les logiciels avioniques sont des logiciels complexes, qui sont développés par plusieurs équipes travaillant en parallèle sur la base de spécifications. Il se peut alors qu’une fonctionnalité secondaire ne soit pas disponible au moment où il est nécessaire de procéder à la certification d’une version du logiciel afin de pouvoir équiper des aéronefs prêts à être livrés. Il faut alors attendre la prochaine version du logiciel qui sera certifiée pour proposer cette fonctionnalité secondaire.In addition, avionics software is complex software, which is developed by several teams working in parallel on the basis of specifications. It may be that a secondary feature is not available when it is necessary to certify a version of the software in order to equip aircraft ready for delivery. We must wait for the next version of the software that will be certified to offer this secondary feature.

Enfin, la version d’un logiciel exécutée à bord d’un avion peut dépendre d’un choix du client. Celui-ci peut souhaiter, au cours de l’exploitation de l’avion, mettre à jour le logiciel embarqué en achetant de nouvelles fonctionnalités ou en faisant évoluer une fonctionnalité existante. Il s’agit donc de certifier toutes les versions sous lesquelles le logiciel est susceptible d’être vendu.Finally, the version of a software executed on board an aircraft may depend on a choice of the client. The latter may wish, during the operation of the aircraft, update the embedded software by purchasing new features or by changing an existing feature. It is therefore a question of certifying all the versions under which the software is likely to be sold.

Il y a donc, de manière générale, un besoin pour faciliter la certification d’un logiciel avionique. L’invention a donc pour objet de répondre à ce besoin. L’invention a pour objet un logiciel applicatif hébergé sur une plateforme d’exécution cible du type avionique, caractérisé en ce qu’il comporte les composants suivants : - au moins un bloc de traitement , fournissant une fonctionnalité spécifique au logiciel applicatif, le ou chaque bloc de traitement constituant un composant du logiciel applicatif pouvant être certifié de manière indépendante des autres composants du logiciel ; - un noyau applicatif assurant une orchestration de l’appel de ou de chaque bloc de traitement et/ou des services du système d’exploitation de la plateforme d’exécution cible ; - un conteneur logiciel, qui, sur requête du noyau applicatif, exécute un code binaire présent en mémoire de la plateforme d’exécution cible et associé au bloc de traitement, l’exécution du code binaire étant réalisée de manière cloisonnée spatialement et temporellement, le code source exécuté ne pouvant pas échanger de données avec un autre code binaire d’un autre bloc de traitement du logiciel applicatif ou un service du système d’exploitation sans passer par le noyau applicatif, le logiciel applicatif une fois certifié pouvant être mis à jour en modifiant le code binaire correspondant à un bloc de traitement dès lors que ledit code source a été certifié.There is therefore, in general, a need to facilitate certification of avionics software. The invention therefore aims to meet this need. The subject of the invention is an application software hosted on a target execution platform of the avionic type, characterized in that it comprises the following components: at least one processing block, providing a specific functionality to the application software, the each processing block constituting a component of the application software that can be certified independently of the other components of the software; an application core orchestrating the call of or of each processing block and / or operating system services of the target execution platform; a software container, which, at the request of the application kernel, executes a binary code present in the memory of the target execution platform and associated with the processing block, the execution of the binary code being carried out in a spatially and temporally partitioned manner, the executed source code unable to exchange data with another binary code of another application software processing block or an operating system service without going through the application kernel, the once-certified application software being updatable by modifying the binary code corresponding to a processing block once said source code has been certified.

Suivant d’autres aspects avantageux de l’invention, le logiciel comprend une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles : le noyau applicatif est développé sur la base de spécifications décrivant la version la plus complète du ou de chaque bloc de traitement qu’il est envisagé de développer. le code binaire associé à un bloc de traitement est exécuté en utilisant un ensemble d’exécution défini à partir de la version la plus complète envisagée pour ledit bloc de traitement. l’ensemble de paramètres maximaux comporte :Un paramètre temporel général correspondant au WCET ; Une liste de variables globales relatives aux données d’entrée et aux données de sortie dudit bloc de traitement ; Une liste de variables locales dudit bloc de traitement ; Une taille en octet du code binaire dudit bloc de traitement ; Une taille en octet des variables globales ; Une taille en octet des variables locales. une valeur par défaut est attribuée à une variable globale de l’ensemble de paramètres maximaux d’exécution que le code binaire associé au bloc de traitement considéré et présent dans la mémoire de la plateforme d’exécution cible au moment de l’exécution du logiciel applicatif n’est pas capable de traiter. le noyau applicatif est un automate d’état, chaque état dudit automate correspond à une procédure logicielle qui lance et contrôle une exécution d’une suite ordonnée d’appels à des blocs de traitement du logiciel applicatif et/ou à des services du système d’exploitation de la plateforme d’exécution cible, et chaque transition d’un état dudit automate vers un autre état dudit automate dépendant de valeurs retournées à l’issue de leur exécution, par les blocs de traitement du logiciel applicatif et les services du système d’exploitation appelés. le noyau applicatif calcule un statut de contexte de l’aéronef à partir de différentes données externes, la transition d’un état initial vers un état final dudit automate dépendant en outre du statut de contexte courant de l’aéronef calculé. L’invention a également pour objet une plateforme d'exécution cible du type avionique, comportant une couche matérielle et une couche logicielle, la couche matérielle comprenant une mémoire et un processeur, la couche logicielle comprenant un système d’exploitation avionique et un logiciel applicatif, caractérisée en ce que ledit -logiciel applicatif est conforme au logiciel précédent. L’invention a également pour objet une plateforme de développement, comportant une couche matérielle et une couche logicielle, la couche matérielle comprenant une mémoire et un processeur, la couche logicielle comprenant un système d’exploitation et un logiciel de compilation, caractérisée en ce que la mémoire comporte un code source d’un bloc de traitement d’un logiciel applicatif conforme au logiciel précédent, et le logiciel de compilation est propre à générer un code binaire à partir du code source, le code binaire étant propre à être chargé dans la mémoire d’une plateforme d’exécution cible du type avionique sur laquelle est exécuté ledit logiciel applicatif.According to other advantageous aspects of the invention, the software comprises one or more of the following characteristics, taken separately or in any technically possible combination: the application core is developed on the basis of specifications describing the most complete version of the each block of treatment that it is planned to develop. the binary code associated with a processing block is executed using an execution set defined from the most complete version envisaged for said processing block. the set of maximum parameters comprises: A general temporal parameter corresponding to the WCET; A list of global variables relating to the input data and the output data of said processing block; A list of local variables of said processing block; A byte size of the binary code of said processing block; An octet size of the global variables; A byte size of the local variables. a default value is assigned to a global variable of the set of maximum execution parameters that the binary code associated with the processing block considered and present in the memory of the target execution platform at the time of execution of the software application is not able to process. the application core is a state machine, each state of said automaton corresponds to a software procedure that initiates and controls an execution of an ordered sequence of calls to processing blocks of the application software and / or services of the application system. operation of the target execution platform, and each transition of a state of said automaton to another state of said automaton depending on values returned at the end of their execution, by the processing blocks of the application software and the services of the system called exploitation. the application core calculates a context status of the aircraft from different external data, the transition from an initial state to a final state of said automaton also dependent on the current context status of the calculated aircraft. The invention also relates to a target execution platform of the avionics type, comprising a hardware layer and a software layer, the hardware layer comprising a memory and a processor, the software layer comprising an avionics operating system and an application software. characterized in that said application software is in accordance with the preceding software. The invention also relates to a development platform, comprising a hardware layer and a software layer, the hardware layer comprising a memory and a processor, the software layer comprising an operating system and a compilation software, characterized in that the memory comprises a source code of a processing block of an application software according to the preceding software, and the compilation software is able to generate a binary code from the source code, the binary code being able to be loaded into the memory of a target execution platform of the avionics type on which said application software is executed.

De préférence, la mémoire de la plateforme de développement comporte un ensemble de paramètres maximaux d’exécution pour un bloc de traitement dudit logiciel applicatif. L’invention sera mieux comprise à la lecture de la description qui va suivre d’un mode de réalisation particulier, donné uniquement à titre d’exemple illustratif et non limitatif, la description étant faite en se référant aux dessins annexés, sur lesquels : - la figure 1 est une représentation schématique du système électronique mis en oeuvre selon l’invention ; - la figure 2 est une représentation schématique d’un fichier source d’un bloc de traitement du logiciel selon l’invention ; - la figure 3 est une représentation schématique d’un fichier intermédiaire d’un bloc de traitement du logiciel selon l’invention ; et, - la figure 4 est une représentation schématique du procédé d’utilisation du système de la figure 1.Preferably, the memory of the development platform comprises a set of maximum execution parameters for a processing block of said application software. The invention will be better understood on reading the following description of a particular embodiment, given solely by way of illustrative and nonlimiting example, the description being made with reference to the appended drawings, in which: Figure 1 is a schematic representation of the electronic system implemented according to the invention; FIG. 2 is a schematic representation of a source file of a processing block of the software according to the invention; FIG. 3 is a schematic representation of an intermediate file of a processing block of the software according to the invention; and, - Figure 4 is a schematic representation of the method of use of the system of Figure 1.

PRESENTATION GENERALEGENERAL PRESENTATION

De manière générale, les fonctionnalités d’un logiciel applicatif sont réparties entre une pluralité de blocs de traitement indépendants les uns des autres et un noyau applicatif commun.In general, the functionalities of an application software are distributed between a plurality of independent processing blocks and a common application kernel.

On peut alors ajouter aux différents blocs de traitement constituant un logiciel applicatif existant, hébergé sur une plateforme d’exécution cible, un ou plusieurs blocs de traitement supplémentaire(s), correspondant à une nouvelle fonctionnalité ou une fonctionnalité plus riche, dont on souhaite munir le logiciel applicatif.It is then possible to add to the different processing blocks constituting an existing application software, hosted on a target execution platform, one or more additional processing blocks (s), corresponding to a new functionality or a richer functionality, which it is desired to provide. the application software.

Le logiciel applicatif possède une structure spécifique garantissant que, les blocs de traitement supplémentaires ayant été certifiés à part, à la suite de la modification du logiciel applicatif par l’ajout des blocs de traitement supplémentaires, il n’est pas nécessaire de certifier à nouveau les blocs de traitement non modifiés, c’est-à-dire les blocs qui étaient déjà présents dans le logiciel applicatifs.The application software has a specific structure ensuring that additional processing blocks that have been separately certified, following the modification of the application software by adding the additional processing blocks, do not need to be certified again. the unmodified processing blocks, that is blocks that were already present in the application software.

Il n’y a donc qu’à certifier indépendamment chaque bloc de traitement et le noyau applicatif.There is therefore only to independently certify each processing block and the application core.

Ceci peut permettre de réduire drastiquement les temps et les coûts de certification et, par conséquent, de faciliter l’introduction de nouvelles fonctionnalités tout au long de la vie et de l’utilisation d’un logiciel applicatif.This can drastically reduce the time and cost of certification and, therefore, facilitate the introduction of new features throughout the life and use of application software.

En effet, lors de la certification du logiciel applicatif modifié, les crédits de certification des blocs de traitement non modifiés pourront être réutilisés tels quels.Indeed, during the certification of the modified application software, the certification credits of unmodified processing blocks can be reused as is.

Par exemple, l’invention pourrait être utilisée pour un logiciel applicatif d’aide au pilotage, qui a déjà acquis la démonstration de conformité aux exigences principales de performances spécifiées par le standard RTCA DO-325 pour le contrôle de la stabilité ou de la trajectoire d’un aéronef. Si l’on souhaite que ce logiciel acquière la conformité à des exigences principales de performances supplémentaires spécifiées par le standard RTCA DO-309 pour l’indication et les alertes d’impact avec le terrain d’un aéronef, il suffit de lui ajouter un ou plusieurs blocs de traitement supplémentaires développés pour réaliser cette fonctionnalité. Ces blocs de traitement ayant été certifiés en tant que tel, il n’est pas besoin de certifier l’ensemble du logiciel applicatif mis à jour.For example, the invention could be used for piloting application software, which has already acquired the demonstration of conformity to the main performance requirements specified by the RTCA DO-325 standard for stability or trajectory control. of an aircraft. If it is desired that this software acquires compliance with the additional performance requirements specified by the RTCA DO-309 standard for indication and impact alerts with the terrain of an aircraft, it is sufficient to add a or more additional processing blocks developed to achieve this functionality. Since these processing blocks have been certified as such, there is no need to certify all of the updated application software.

Plus précisément, en se référant à la figure 1, le logiciel applicatif 50 selon l’invention comporte un noyau applicatif 56, un conteneur logiciel 58 et une pluralité de blocs de traitement 51 à 53.More specifically, with reference to FIG. 1, the application software 50 according to the invention comprises an application core 56, a software container 58 and a plurality of processing blocks 51 to 53.

Bloc de traitementTreatment block

Chaque bloc de traitement permet, lors de son exécution, de réaliser une fonctionnalité définie.Each processing block allows, during its execution, to realize a defined functionality.

Les blocs de traitement qu’il est possible d’intégrer au logiciel applicatif sont prédéfinis conformément à des spécifications. Ainsi, le logiciel applicatif comporte N blocs de traitement. Sur la figure 1, N est égale à trois et les blocs de traitement sont référencés 51, 52 et 53.The processing blocks that can be integrated into the application software are predefined according to specifications. Thus, the application software comprises N processing blocks. In FIG. 1, N is equal to three and the processing blocks are referenced 51, 52 and 53.

Un bloc de traitement est un composant du logiciel applicatif pouvant être certifié de manière indépendante des autres composants du logiciel, c’est-à-dire des autres blocs de traitement, du noyau applicatif ou du conteneur logiciel.A processing block is a component of the application software that can be certified independently of the other components of the software, i.e. other processing blocks, application kernel or software container.

Sur la plateforme d’exécution cible, un bloc de traitement se présente sous la forme d’un code binaire stocké dans la mémoire de cette plateforme et propre à être exécuté par le processeur de cette plateforme.On the target execution platform, a processing block is in the form of a binary code stored in the memory of this platform and capable of being executed by the processor of this platform.

Pour l’obtention de ce code binaire, un code source du bloc de traitement est compilé, au moyen d’un logiciel de compilation exécuté sur une plateforme de développement, distincte de la plateforme d’exécution cible.To obtain this binary code, a source code of the processing block is compiled, by means of a compilation software run on a development platform, separate from the target execution platform.

Le logiciel de compilation utilisé est spécifique, notamment de la plateforme d’exécution cible sur laquelle le code binaire obtenu sera appelé à être exécuté.The compilation software used is specific, including the target execution platform on which the resulting binary code will be executed.

Le code binaire d’un bloc de traitement est ensuite téléchargé, par des moyens adaptés, depuis la plateforme de développement vers la plateforme d’exécution cible.The binary code of a processing block is then downloaded, by suitable means, from the development platform to the target execution platform.

Sur la plateforme d’exécution cible, le code binaire téléchargé est stocké dans un fichier de configuration présent dans la mémoire de cette plateforme.On the target execution platform, the downloaded binary code is stored in a configuration file present in the memory of this platform.

Le fichier de configuration comporte donc l’ensemble des codes binaires des blocs de traitement actifs. Les versions de chacun de ces blocs de traitement actifs, la version du conteneur logiciel, et la version du noyau applicatif, définissent la version du logiciel applicatif hébergé sur la plateforme d’exécution cible.The configuration file therefore comprises all the binary codes of the active processing blocks. The versions of each of these active processing blocks, the version of the software container, and the version of the application kernel, define the version of the application software hosted on the target execution platform.

Lors de l’exécution du logiciel applicatif, le code binaire d’un bloc de traitement appelé est exécuté.During the execution of the application software, the binary code of a called processing block is executed.

Plus précisément, le code binaire est exécuté à l’intérieur du conteneur logiciel.More precisely, the binary code is executed inside the software container.

Le conteneur logiciel assure un cloisonnement spatial et temporel de l’exécution du code binaire considéré. Ce cloisonnement logiciel a lieu à l’intérieur de la partition allouée par le système d’exploitation au logiciel applicatif, partition qui assure un partitionnement spatial et temporel des différents logiciels exécutés sur la plateforme d’exécution cible.The software container provides a spatial and temporal partitioning of the execution of the binary code considered. This software partitioning takes place inside the partition allocated by the operating system to the application software, a partition that ensures a spatial and temporal partitioning of the different software running on the target execution platform.

Afin d’assurer ce cloisonnement, un bloc de traitement exécuté ne peut pas échanger de données avec un autre bloc de traitement du logiciel applicatif ou un service du système d’exploitation, sans passer par les mécanismes de communication du noyau applicatif.In order to ensure this partitioning, a processing block executed can not exchange data with another processing block of the application software or an operating system service, without going through the communication mechanisms of the application core.

La manière dont un code binaire est exécuté à l’intérieur du conteneur logiciel du logiciel applicatif sera décrite en détail ci-après.The manner in which a binary code is executed within the software container of the application software will be described in detail hereinafter.

Un bloc de traitement ne comporte aucun appel direct à un service du système d’exploitation de la plateforme d’exécution cible. C’est le noyau applicatif qui constitue la seule interface entre tout bloc de traitement et le système d’exploitation.A processing block has no direct call to an operating system service of the target execution platform. The application core is the only interface between any processing block and the operating system.

Un bloc de traitement, lorsqu’il est exécuté, réalise un traitement sur des données d’entrée, de manière à délivrer en sortie des données de sortie.A processing block, when executed, performs processing on input data, so as to output output data.

Novau applicatifNovau application

Le noyau applicatif, 56 sur la figure 1, constitue le composant logiciel principal du logiciel applicatif selon l’invention.The application core 56 in FIG. 1 constitutes the main software component of the application software according to the invention.

De manière générale, le noyau applicatif assure l’orchestration des appels aux différents blocs de traitement et/ou aux services du système d’exploitation de la plateforme cible.In general, the application kernel orchestrates calls to the different processing blocks and / or services of the operating system of the target platform.

Plus précisément, le noyau applicatif assure notamment l’initialisation et l’arrêt du logiciel applicatif, le système d’exploitation démarrant le logiciel applicatif.More precisely, the application kernel notably ensures the initialization and the stopping of the application software, the operating system starting the application software.

Lors de l’initialisation du logiciel applicatif, le noyau applicatif accède à un fichier de configuration indiquant la liste des blocs de traitement actifs constituant la version du logiciel applicatif hébergé sur la plateforme d’exécution cible.During the initialization of the application software, the application kernel accesses a configuration file indicating the list of active processing blocks constituting the version of the application software hosted on the target execution platform.

De concert avec le conteneur logiciel, le noyau applicatif charge le code binaire correspondant à chaque bloc de traitement depuis le fichier de configuration vers la mémoire volatile de la plateforme d’exécution cible, en vue de l’exécution de ces codes binaires par le processeur de cette plateforme.In conjunction with the software container, the application kernel loads the binary code corresponding to each processing block from the configuration file to the volatile memory of the target execution platform, for execution of these binary codes by the processor of this platform.

Lors de cette initialisation, le conteneur logiciel vérifie que la mémoire volatile utilisée pour mémoriser les codes binaires ne dépasse pas la taille mémoire prévue à cet effet et indiquée dans un fichier de paramétrage du logiciel applicatif.During this initialization, the software container verifies that the volatile memory used to store the binary codes does not exceed the memory size provided for this purpose and indicated in a parameter file of the application software.

Le noyau applicatif peut avantageusement être mis en oeuvre sous la forme d’un automate d’état. Chaque état de cet automate correspond à une procédure logicielle qui lance et contrôle l’exécution d’une suite ordonnée d’appels à des blocs de traitement et à des services du système d’exploitation.The application core may advantageously be implemented in the form of a state machine. Each state of this controller corresponds to a software procedure that initiates and controls the execution of an ordered sequence of calls to processing blocks and services of the operating system.

La transition d’un état de l’automate vers un autre état de l’automate dépend des valeurs retournées par les blocs de traitement et les services du système d’exploitation de la suite d’appels en cours d’exécution.The transition from one state of the controller to another state of the controller depends on the values returned by the processing blocks and the operating system services of the call suite being executed.

Avantageusement, le noyau applicatif calcule un statut de contexte de l’aéronef à partir de différentes données externes à la partition dans laquelle le logiciel applicatif est exécuté. La transition d’un état de l’automate vers un autre état de l’automate dépend alors également du statut de contexte courant de l’aéronef ainsi calculé.Advantageously, the application kernel calculates a context status of the aircraft from different data external to the partition in which the application software is executed. The transition from a state of the automaton to another state of the automaton also depends on the current context status of the aircraft thus calculated.

Lors de l’exécution d’une suite ordonnée d’appels, le noyau applicatif détermine le prochain bloc de traitement à appeler.When executing an ordered sequence of calls, the application kernel determines the next processing block to call.

De concert avec le conteneur logiciel, le noyau applicatif prépare les données d’entrée à transmettre à ce bloc de traitement et il lance l’exécution de ce bloc de traitement sur ces données d’entrée. A l’issue de l’exécution de ce bloc de traitement, le noyau applicatif récupère les données de sortie.In concert with the software container, the application kernel prepares the input data to be transmitted to this processing block and starts the execution of this processing block on these input data. At the end of the execution of this processing block, the application kernel retrieves the output data.

De manière similaire, le noyau applicatif appelle les services du système d’exploitation, notamment les services pour les échanges de données avec d’autres partitions de la plateforme d’exécution cible ou avec une interface d’entrée/sortie de la plateforme d’exécution cible, interface au moyen de laquelle la plateforme est connectée à d’autres systèmes de l’aéronef, en particulier des capteurs et des systèmes de contrôle/commande.Similarly, the application kernel calls the services of the operating system, including services for data exchange with other partitions of the target execution platform or with an input / output interface of the platform. target execution, the interface by which the platform is connected to other aircraft systems, in particular sensors and control / command systems.

Comme indiqué ci-dessus, le noyau applicatif fournit l’ensemble des données d’entrée à un bloc de traitement lorsqu’il est appelé pour être exécuté et récupère les données de sortie résultant de l’exécution de ce bloc de traitement.As noted above, the application core provides all of the input data to a process block when it is called to execute and retrieves the output data resulting from the execution of this process block.

Le noyau applicatif permet la mise à jour du logiciel par l’ajout, la modification ou le retrait de ce bloc de traitement, sans nécessiter une recertification du noyau applicatif. Il faut pour cela anticiper l’ensemble des évolutions possibles de ce bloc de traitement.The application kernel allows software update by adding, modifying or removing this processing block, without requiring recertification of the application kernel. This requires anticipating all the possible evolutions of this processing block.

En revanche, il est à noter que si un bloc de traitement évolue d’une manière qui n’avait pas été prévue à l’avance, il faudra adapter le noyau fonctionnel et le certifier à nouveau. Cependant, les autres blocs de traitement inchangés n’auront pas à être certifiés à nouveau.On the other hand, it should be noted that if a processing block evolves in a way that was not planned in advance, it will be necessary to adapt the functional core and certify it again. However, the other unchanged processing blocks will not have to be certified again.

Le noyau applicatif est développé sur la base des spécifications décrivant le logiciel applicatif et l’ensemble des blocs de traitement qu’il est envisagé, à terme, de développer. De plus, pour chaque bloc de traitement, le noyau applicatif est développé pour pouvoir accueillir la version la plus complète qu’il est prévu de développer pour ce bloc de traitement.The application core is developed on the basis of the specifications describing the application software and the set of processing blocks that it is intended, ultimately, to develop. In addition, for each processing block, the application core is developed to accommodate the most complete version that is planned to develop for this block of treatment.

Cette version la plus complète envisagée d’un bloc de traitement permet de définir un ensemble des paramètres maximaux d’exécution : - Un paramètre temporel général correspondant au WCET, pour « Worst-Case Execution Time » en anglais, prévu pour le code binaire de la version la plus complète ; - Une liste de variables globales relatives aux données d’entrée et de sortie de la version la plus complète ; - Une taille maximale en octet du code binaire de cette version la plus complète ; - Une taille en octet des variables globales de la version la plus complète; - Une taille maximale en octet des variables locales de la version la plus complète.This most complete version of a processing block is used to define a set of maximum execution parameters: - A general temporal parameter corresponding to WCET, for "Worst-Case Execution Time" in English, provided for the binary code of the most complete version; - A list of global variables related to the input and output data of the most complete version; - A maximum byte size of the binary code of this most complete version; - Byte size of the global variables of the most complete version; - A maximum byte size of the local variables of the most complete version.

Ainsi, si la version d’un bloc de traitement implantée dans le logiciel applicatif comporte certaines limitations par rapport à la version de ce bloc de traitement la plus complète envisagée, le noyau applicatif transmet quand même l’ensemble des données d’entrée que ce bloc de traitement est susceptible de prendre en compte dans ses évolutions futures, c’est-à-dire l’ensemble des données d’entrée de la version la plus complète de ce bloc de traitement.Thus, if the version of a processing block implanted in the application software has certain limitations with respect to the version of this most complete processing block envisaged, the application core still transmits all the input data that it processing block is likely to take into account in its future evolutions, that is to say all the input data of the most complete version of this processing block.

De manière similaire, si la version d’un bloc de traitement n’est pas actuellement en mesure de déterminer l’ensemble des données de sortie que ce bloc de traitement est susceptible de calculer dans ses évolutions futures, il retourne pourtant l’ensemble des données de sortie de la version la plus complète de ce bloc de traitement.Similarly, if the version of a processing block is not currently able to determine all the output data that this processing block is likely to calculate in its future evolutions, it nevertheless returns all the output data from the most complete version of this processing block.

Les données de d’entrée ou de sortie qui ne peuvent pas être utilisées ou calculées par la version du bloc de traitement mise en œuvre par le logiciel applicatif prennent une valeur par défaut, prédéterminée.The input or output data that can not be used or calculated by the version of the processing block implemented by the application software takes a default value, predetermined.

Dans le pire cas, si le logiciel applicatif comporte une limitation fonctionnelle, c’est-à-dire si un bloc de traitement particulier n’est pas implanté dans la version du logiciel hébergé sur la plateforme d’exécution cible, ce bloc de traitement est remplacé par un bloc « bouchon » inactif. Pour un tel bloc « bouchon », toutes les données d’entrée et de sortie prennent des valeurs par défaut.In the worst case, if the application software has a functional limitation, that is to say if a particular processing block is not implemented in the version of the software hosted on the target execution platform, this processing block is replaced by an inactive "plug" block. For such a "plug" block, all input and output data take default values.

La requête d’initialisation d’un bloc de traitement comporte les paramètres maximaux assurant que les ressources matérielles nécessaires à l’exécution de ce bloc de traitement soient affectées en cohérence avec la version la plus complète de ce bloc de traitement, notamment le pire cas d’exécution estimé WCET pour le code binaire de la version la plus complète. De cette manière toutes les versions de ce bloc de traitement, du bloc « bouchon » à la version la plus complète, en passant par les versions intermédiaires, peuvent être exécutées sans perturber l’exécution des autres blocs de traitement.The request for initialization of a processing block includes the maximum parameters ensuring that the hardware resources necessary for the execution of this processing block are assigned in coherence with the most complete version of this processing block, in particular the worst case WCET estimated execution for the binary code of the most complete version. In this way, all versions of this process block, from the "plug" block to the most complete version, via the intermediate versions, can be executed without disrupting the execution of the other processing blocks.

De la sorte, une fois le logiciel applicatif certifié, toute nouvelle version certifiée d’un bloc de traitement peut être téléchargée sur la plateforme d’exécution cible pour mettre à jour ce logiciel applicatif, sans avoir besoin de certifier à nouveau l’ensemble du logiciel applicatif mis à jour.In this way, once the application software is certified, any new certified version of a processing block can be downloaded to the target execution platform to update this application software, without having to re-certify the entire application package. updated application software.

PRESENTATION DETAILLEEDETAILED PRESENTATION

DispositifDevice

Comme représenté sur la figure 1, le système électronique 1 comprend une plateforme de développement 2 non embarquée. La plateforme 2 est, par exemple, un ordinateur.As shown in FIG. 1, the electronic system 1 comprises an offboard development platform 2. Platform 2 is, for example, a computer.

Le système électronique 1 comprend une plateforme d’exécution cible 4, embarquée à bord d’un aéronef, de préférence du type « Avionique Modulaire Intégrée ».The electronic system 1 comprises a target execution platform 4, embedded in an aircraft, preferably of the "Integrated Modular Avionics" type.

La plateforme 4 et la plateforme 2 sont reliées par une liaison 6 de transmission de données. La liaison 6 est de préférence une liaison filaire sécurisée, par exemple conforme à la norme ARINC 664 P7. En variante, la liaison 6 est une liaison non filaire, par exemple une liaison radioélectrique conforme à la norme IEEE 802.11.Platform 4 and platform 2 are connected by a data link 6. The link 6 is preferably a secure wired link, for example compliant with the ARINC 664 P7 standard. In a variant, the link 6 is a non-wired link, for example a radio link in accordance with the IEEE 802.11 standard.

La plateforme 2 comporte une couche matérielle 26 et une couche logicielle 27.The platform 2 comprises a hardware layer 26 and a software layer 27.

La couche matérielle 26 comporte des moyens de calcul, tels qu’un processeur 20, et des moyens de mémorisation, tels qu’une mémoire 22. Elle comporte en outre une interface d’entrée/sortie, telle qu’une carte 24 de transmission de données sur la liaison 6.The material layer 26 comprises calculation means, such as a processor 20, and storage means, such as a memory 22. It furthermore comprises an input / output interface, such as a transmission card 24. link data 6.

La plateforme 4 comporte une couche matérielle 46 et une couche logicielle 47.Platform 4 comprises a hardware layer 46 and a software layer 47.

La couche matérielle 46 comporte des moyens de calcul, tels qu’un processeur 40, et des moyens de mémorisation, tels qu’une mémoire 42.The hardware layer 46 comprises calculation means, such as a processor 40, and storage means, such as a memory 42.

La mémoire 42 comprend un espace de stockage volatil 42A, par exemple du type mémoire vive, et un espace de stockage non volatil 42B, par exemple une mémoire flash.The memory 42 comprises a volatile storage space 42A, for example of the RAM type, and a nonvolatile storage space 42B, for example a flash memory.

La couche matérielle 46 comporte en outre une interface d’entrée/sortie, telle qu’une carte 44 de transmission de données sur la liaison 6.The hardware layer 46 further comprises an input / output interface, such as a card 44 for transmitting data on the link 6.

Les composants de la couche matérielle 46 n’évoluent pas au cours de l’utilisation de la plateforme 4 et des mises à jour du logiciel applicatif selon l’invention.The components of the hardware layer 46 do not evolve during the use of the platform 4 and updates of the application software according to the invention.

La couche logicielle 47 comporte une couche logicielle bas niveau et une couche logicielle d’application.The software layer 47 comprises a low level software layer and an application software layer.

La couche logicielle bas niveau comporte un système d’exploitation 48 permettant de virtualiser la couche matérielle 46. Elle forme une interface entre la couche logicielle d’application et la couche matérielle 46. Ce système d’exploitation 48 est un système d'exploitation avionique temps réel.The low-level software layer includes an operating system 48 for virtualizing the hardware layer 46. It forms an interface between the application software layer and the hardware layer 46. This operating system 48 is an avionics operating system real time.

La couche logicielle d’application comporte une pluralité de logiciels, en particulier un logiciel de téléchargement 30 et un logiciel applicatif 50 selon l’invention.The application software layer comprises a plurality of software packages, in particular a download software 30 and an application software 50 according to the invention.

Avantageusement, le système d’exploitation 48 de la plateforme 4 assure un partitionnement spatial et temporel de la couche logicielle d’application. Une partition correspond au domaine sur lequel un logiciel peut être exécuté. Il s’agit à la fois d’un domaine spatial, en termes de zones de la mémoire 42 adressables par un logiciel, et d’un domaine temporel, en termes d’intervalles de temps pendant lequel un logiciel est exécuté par le processeur 40. De préférence, le partitionnement spatial et temporel est conforme au standard ARINC 653.Advantageously, the operating system 48 of the platform 4 provides spatial and temporal partitioning of the application software layer. A partition is the domain on which software can be run. It is both a space domain, in terms of software addressable areas of the memory 42, and a time domain, in terms of time slots during which software is executed by the processor 40 Preferably, spatial and temporal partitioning is in accordance with the ARINC 653 standard.

En particulier, le logiciel de téléchargement 30 est exécuté sur une première partition dédiée 31, et le logiciel applicatif 50 est exécuté sur une seconde partition 32, distincte de la première.In particular, the downloading software 30 is executed on a first dedicated partition 31, and the application software 50 is executed on a second partition 32, distinct from the first.

Le logiciel de téléchargement 30 comporte une pluralité d’instructions stockées dans la mémoire 42 et aptes à être exécutées par le processeur 40.The downloading software 30 comprises a plurality of instructions stored in the memory 42 and able to be executed by the processor 40.

Le logiciel de téléchargement 30, lorsqu’il est exécuté, est propre à télécharger, depuis la plateforme de développement 2, des données, notamment un ou plusieurs fichiers intermédiaires associés à des blocs de traitement du logiciel applicatif 50.The download software 30, when executed, is adapted to download, from the development platform 2, data, including one or more intermediate files associated with processing blocks of the application software 50.

Le logiciel applicatif 50 comporte un noyau applicatif 56 et un conteneur logiciel 58, ainsi qu’une pluralité de bocs de traitement. Sur la figure 1, trois blocs de traitement 51, 52 et 53 sont représentés. Le noyau applicatif 56, le conteneur logiciel 58 et les blocs de traitement 51, 52 et 53 sont associés à la même partition 32.The application software 50 comprises an application core 56 and a software container 58, as well as a plurality of processing blocks. In Figure 1, three processing blocks 51, 52 and 53 are shown. The application core 56, the software container 58 and the processing blocks 51, 52 and 53 are associated with the same partition 32.

En revenant sur la description de la plateforme d’exécution 2, la couche logicielle 27 comporte une couche logicielle bas niveau et une couche logicielle d’application.Returning to the description of the execution platform 2, the software layer 27 comprises a low level software layer and an application software layer.

La couche logicielle bas niveau comporte un système d’exploitation 28 permettant de virtualiser la couche matérielle 26. Il forme une interface entre la couche logicielle d’application et la couche matérielle 26. Ce système d’exploitation est un système d’exploitation grand public.The low level software layer includes an operating system 28 for virtualizing the hardware layer 26. It forms an interface between the application software layer and the hardware layer 26. This operating system is a general operating system .

La couche logicielle d’application comporte un logiciel 14 de compilation. Le logiciel 14 est propre, lorsqu’il est exécuté, à précompiler puis à compiler un code source de manière à générer un code binaire exécutable sur la plateforme 4. Le logiciel 14 permet ainsi d’obtenir le code binaire 85 du bloc de traitement 51 à partir du code source 61 ; le code binaire 86 du bloc de traitement 52 à partir du code source 62 ; et le code binaire 87 du bloc de traitement 53 à partir du code source 63.The application software layer comprises a compilation software 14. The software 14 is clean, when it is executed, to precompile and then to compile a source code so as to generate an executable binary code on the platform 4. The software 14 thus makes it possible to obtain the binary code 85 of the processing block 51 from the source code 61; the binary code 86 of the processing block 52 from the source code 62; and the binary code 87 of the processing block 53 from the source code 63.

La couche logicielle d’application comporte un logiciel 10 de génération de code propre à générer un fichier intermédiaire à partir du code source d’un bloc de traitement. Pour cela, le logiciel 10 fait notamment appel au logiciel 14 de compilation pour générer à partir du code source un code binaire, qu’il intègre ensuite dans le fichier intermédiaire. Le logiciel 10 permet ainsi de générer un fichier intermédiaire 81 pour le bloc applicatif 51 à partir du code source 61 ; à générer un fichier intermédiaire 82 pour le bloc applicatif 52 à partir du code source 62 ; et à générer un fichier intermédiaire 83 pour le bloc applicatif 53 à partir du code source 63.The application software layer includes code generation software 10 for generating an intermediate file from the source code of a processing block. For this purpose, the software 10 uses the compilation software 14 to generate from the source code a binary code, which it then integrates into the intermediate file. The software 10 thus makes it possible to generate an intermediate file 81 for the application block 51 from the source code 61; generating an intermediate file 82 for the application block 52 from the source code 62; and generating an intermediate file 83 for the application block 53 from the source code 63.

La couche logicielle d’application de la plateforme 2 comporte un logiciel 16 de téléchargement permettant, en coopération avec le logiciel 30 de téléchargement exécuté sur la plateforme 4 de transférer un fichier intermédiaire de la mémoire 22 de la plateforme 2 vers la mémoire 42 de la plateforme 4.The application software layer of the platform 2 comprises a software download 16 allowing, in cooperation with the download software 30 executed on the platform 4 to transfer an intermediate file from the memory 22 of the platform 2 to the memory 42 of the platform 4.

Ainsi, la mémoire 22 stocke, pour chaque bloc de traitement 51, 52, 53 un fichier intermédiaire 81, 82, 83 prêt à être téléchargé sur la plateforme 4 lors d’une mise à jour du logiciel applicatif 50.Thus, the memory 22 stores, for each processing block 51, 52, 53 an intermediate file 81, 82, 83 ready to be downloaded on the platform 4 during an update of the application software 50.

Plus précisément, comme représenté sur la figure 2, pour, par exemple, le premier bloc de traitement 51, le code source 61 comprend une liste de variables globales 72, une liste de variables locales 73 et une suite d’instructions 74.More specifically, as shown in FIG. 2, for, for example, the first processing block 51, the source code 61 comprises a list of global variables 72, a list of local variables 73 and a sequence of instructions 74.

Les variables globales 72 sont des variables visibles et accessibles au noyau applicatif 56. Elles comportent les variables d’entrée et de sortie du bloc de traitement 51.The global variables 72 are visible variables accessible to the application kernel 56. They include the input and output variables of the processing block 51.

Les variables locales 73 ne sont en revanche visibles qu’à l’intérieur du code source considéré. Ce sont des variables intermédiaires utilisées lors de l’exécution du code binaire correspondant.Local variables 73 are however visible only within the source code considered. These are intermediate variables used when executing the corresponding binary code.

La suite d’instruction 74 décrit la fonctionnalité réalisée par le bloc de traitement 52 dans un langage de programmation.The instruction suite 74 describes the functionality performed by the processing block 52 in a programming language.

Comme représenté sur la figure 3, pour le cas, par exemple, du premier bloc de traitement 51, le fichier intermédiaire 81 comporte un en-tête 71 et le code binaire 85 résultant de la compilation par le logiciel 14 du code source 61.As shown in FIG. 3, for the case, for example, of the first processing block 51, the intermediate file 81 comprises a header 71 and the binary code 85 resulting from the compilation by the software 14 of the source code 61.

Lors de la compilation, les instructions 74 sont transformées en instructions 94. La suite d’instruction 94 est suivie d’une instruction de fin 95, ajoutée lors de la précompilation, propre à retourner une valeur de retour, qui indique si l’exécution du code binaire s’est effectuée correctement ou si cette exécution a été interrompue suite à la détection d’une erreur. L’en-tête 71 comporte un paramètre temporel général 76 relatif à l’exécution sur la plateforme 4 du bloc de traitement 51 associé. Le paramètre temporel général 76 indique la durée maximale d’exécution du code binaire 85. Ce paramètre temporel est calculé selon des méthodes connues de l’homme du métier. L’en-tête 71 comporte en outre la taille en octets 78 des variables globales 72 et la taille en octets 79 des variables locales 73.During compilation, the instructions 74 are transformed into instructions 94. The instruction sequence 94 is followed by an end instruction 95, added during the precompilation, able to return a return value, which indicates whether the execution binary code has been correctly executed or if this execution has been interrupted following the detection of an error. Header 71 includes a general time parameter 76 relating to the execution on platform 4 of the associated processing block 51. The general time parameter 76 indicates the maximum execution time of the binary code 85. This time parameter is calculated according to methods known to those skilled in the art. The header 71 further comprises the size in bytes 78 of the global variables 72 and the size in bytes 79 of the local variables 73.

Sur la plateforme 4, un fichier intermédiaire, 81, 82 et 83, est stocké dans un fichier de configuration 45 du logiciel applicatif 50, mémorisé dans l’espace de stockage non volatil 42B.On the platform 4, an intermediate file, 81, 82 and 83, is stored in a configuration file 45 of the application software 50, stored in the non-volatile storage space 42B.

Lors de l’exécution du logiciel applicatif 50, le noyau applicatif 56 est propre à accéder, via le système d’exploitation 48, à la couche matérielle 46.During the execution of the application software 50, the application core 56 is able to access, via the operating system 48, the hardware layer 46.

Le noyau applicatif 56 est également propre à lire et à extraire, dans l’espace de stockage non volatil 42B, l’adresse du fichier intermédiaire du bloc de traitement à exécuter, par exemple le fichier intermédiaire 81 du premier bloc de traitement 51.The application core 56 is also able to read and extract, in the nonvolatile storage space 42B, the address of the intermediate file of the processing block to be executed, for example the intermediate file 81 of the first processing block 51.

Le noyau applicatif 56 est propre à mettre en oeuvre les variables globales pour fournir une base de connaissance au bloc de traitement lorsque celui-ci sera exécuté par le conteneur logiciel 58, et pour accéder aux variables de sortie résultantes de l’exécution de ce bloc de traitement.The application kernel 56 is adapted to implement the global variables to provide a knowledge base to the processing block when it is executed by the software container 58, and to access the output variables resulting from the execution of this block treatment.

Le noyau applicatif 56 est propre à élaborer une requête d’initialisation d’un bloc de traitement.The application kernel 56 is able to develop a request to initialize a processing block.

Le noyau applicatif 56 est propre en outre à élaborer une requête d’exécution d’un bloc de traitement.The application core 56 is further able to develop a request for execution of a processing block.

Le noyau applicatif 56 est propre à transmettre chaque requête d’initialisation ou d’exécution au conteneur logiciel 58.The application kernel 56 is able to transmit each initialization or execution request to the software container 58.

Chaque requête d’initialisation comprend les données indicatives de l’espace mémoire maximal Emax alloué au bloc de traitement à exécuter, la durée maximale d’exécution Tmax allouée au conteneur logiciel 58 pour exécuter ce bloc de traitement, et l’adresse du fichier intermédiaire correspondant à ce bloc de traitement.Each initialization request includes the data indicative of the maximum memory space Emax allocated to the processing block to be executed, the maximum execution time Tmax allocated to the software container 58 to execute this processing block, and the intermediate file address. corresponding to this processing block.

Les données indicatives de l’espace mémoire maximal Emax et la durée maximale d’exécution Tmax sont celles correspondant à la version la plus complète du bloc de traitement à exécuter.The data indicative of the maximum memory space Emax and the maximum execution time Tmax are those corresponding to the most complete version of the processing block to be executed.

Les données indicatives de l’espace mémoire maximal Emax alloué à un bloc de traitement comprennent, dans l’espace de stockage volatil 42A, la zone mémoire des variables globales 72, la zone mémoire des variables locales 73, et la zone mémoire où doit être chargée une copie du code binaire 85 correspondant au bloc de traitement à exécuter.The data indicative of the maximum memory space Emax allocated to a processing block include, in the volatile storage space 42A, the memory area of the global variables 72, the memory area of the local variables 73, and the memory area where it is to be stored. loaded a copy of the binary code 85 corresponding to the processing block to be executed.

Le conteneur logiciel 58 est propre à interpréter une requête d’initialisation ou d’exécution reçue du noyau applicatif 56.The software container 58 is capable of interpreting an initialization or execution request received from the application core 56.

Le conteneur logiciel 58 est propre à accéder à la couche matérielle 46 via le système d’exploitation 48. Il est propre à lire le fichier intermédiaire du bloc de traitement à exécuter, par exemple le fichier intermédiaire 81 du bloc 51.The software container 58 is able to access the hardware layer 46 via the operating system 48. It is able to read the intermediate file of the processing block to be executed, for example the intermediate file 81 of the block 51.

Il est propre à comparer le paramètre temporel général 76 du code binaire 85 à exécuter, figurant dans le fichier intermédiaire 81, avec la durée maximale d’exécution Tmax allouée au conteneur logiciel 58 pour exécuter le bloc de traitement, en l’occurrence le bloc 51.It is suitable to compare the general time parameter 76 of the binary code 85 to execute, contained in the intermediate file 81, with the maximum execution time Tmax allocated to the software container 58 to execute the processing block, in this case the block 51.

Il est également propre à comparer les informations indicatives de la taille en octets du code binaire 85, de la taille en octets 78 des variables globales 72 et de la taille en octets 79 des variables locales 73 avec les données indicatives de l’espace mémoire maximal Emax alloué au bloc de traitement 51 appelé.It is also able to compare the information indicative of the size in bytes of the binary code 85, the size in bytes 78 of the global variables 72 and the size in bytes 79 of the local variables 73 with the data indicative of the maximum memory space Emax allocated to the called processing block 51.

Le conteneur logiciel 58 est également propre à transmettre au noyau applicatif 56 un identificateur faisant référence au bloc de traitement initialisé.The software container 58 is also capable of transmitting to the application core 56 an identifier referring to the initialized processing block.

Le conteneur logiciel 58 est également propre à lire le code binaire stocké dans l’espace de stockage non volatil 42B et à le copier dans l’espace de stockage volatil 42A en vue de son exécution. Par exemple, il copie le code binaire 85 de l’espace de stockage non volatil 42B vers l’espace de stockage volatil 42A.The software container 58 is also able to read the binary code stored in the nonvolatile storage space 42B and to copy it into the volatile storage space 42A for execution. For example, it copies the binary code 85 of the nonvolatile storage space 42B to the volatile storage space 42A.

Le conteneur logiciel 58 est également propre à lancer l’exécution de cette copie du code binaire stockée dans l’espace de stockage volatil 42A pour la mise en oeuvre de la fonctionnalité associée. L’homme du métier ayant des compétences normales dans la programmation d’applications pour des plateformes d’exécution modulaires avioniques sait programmer les applications pour utiliser et effectuer les fonctions mentionnées ci-dessus. Par conséquent, les codes de programmation spécifiques de ces applications ne sont pas décrits plus en détail.The software container 58 is also able to launch the execution of this copy of the binary code stored in the volatile storage space 42A for the implementation of the associated functionality. Those skilled in the art having normal skills in programming applications for avionics modular operating platforms know how to program applications to use and perform the functions mentioned above. Therefore, the specific programming codes of these applications are not described in more detail.

FonctionnementOperation

En se référant à la figure 4, si l’utilisateur souhaite modifier la fonctionnalité décrite par un bloc de traitement, par exemple le premier bloc de traitement 51, il développe le code source 61 en conséquence, et charge ce code source 61 modifié sur la plateforme de développement 2.Referring to FIG. 4, if the user wishes to modify the functionality described by a processing block, for example the first processing block 51, he develops the source code 61 accordingly, and loads this modified source code 61 on the development platform 2.

Pour obtenir le fichier intermédiaire 81 (étape 100), au cours d’une étape 100A de pré-compilation du code source 61, le processeur 20 exécute le logiciel 14 de compilation.To obtain the intermediate file 81 (step 100), during a step 100A of pre-compilation of the source code 61, the processor 20 executes the compilation software 14.

Au cours de cette étape 100A, le code source 61 est analysé pour vérifier qu’il ne contient aucune référence à des pointeurs, qu’il ne contient aucun appel récursif de fonctions, qu’il ne contient aucune instruction de saut à une adresse donnée (instructions de type « jump » ou « goto »), qu’il ne fait référence à aucune fonction externe au code source 61, et que la taille de la pile des appels de fonctions ne dépasse jamais une valeur fournie en paramètre au logiciel 14. Ces types de vérifications sont connus de l’homme du métier. L’ensemble de ces vérifications permettent de s’assurer que le code source constitue un bloc de traitement au sens de l’invention, c’est-à-dire une portion du logiciel applicatif 50 autonome en termes de certification.During this step 100A, the source code 61 is analyzed to check that it contains no reference to pointers, that it does not contain any recursive call of functions, that it does not contain any jump instruction at a given address (instructions of type "jump" or "goto"), that it does not refer to any function external to the source code 61, and that the size of the stack of the calls of functions never exceeds a value provided in parameter with the software 14 These types of checks are known to those skilled in the art. All of these checks make it possible to ensure that the source code constitutes a processing block within the meaning of the invention, that is to say a portion of the application software 50 that is autonomous in terms of certification.

Au cours de cette même étape 100A, le logiciel 14 de compilation calcule la taille en octets 78 des variables globales 72, et la taille en octets 79 des variables locales 73. Ces données de taille mémoire sont stockées dans la mémoire 22.During this same step 100A, the compilation software 14 calculates the size in bytes 78 of the global variables 72, and the size in bytes 79 of the local variables 73. These memory size data are stored in the memory 22.

Au cours de cette même étape 100A, le logiciel 14 de compilation ajoute une instruction de fin à la suite des instructions 74 du code source 62.During this same step 100A, the compilation software 14 adds an end instruction following the instructions 74 of the source code 62.

Il ajoute également aux instructions 74 des instructions de test de non-dépassement de taille des tableaux mis en œuvre dans le programme, et des instructions de test de non division par zéro, de telles instructions étant classiquement connues.It also adds to instructions 74 non-oversize test instructions of the tables implemented in the program, and non-division by zero test instructions, such instructions being conventionally known.

Ces instructions ajoutées par le logiciel 14, ainsi que les limitations de la suite d’instructions décrites plus haut, garantissent que les instructions n’accéderont pas à une zone mémoire située en dehors de la zone mémoire allouée aux variables globales et locales du bloc de traitement 51.These instructions added by the software 14, as well as the limitations of the sequence of instructions described above, ensure that the instructions will not access a memory area located outside the memory area allocated to the global and local variables of the block of data. treatment 51.

Lors de l’étape 100B de compilation du code source précompilé, le processeur 20 exécute le logiciel 14 de compilation. Celui-ci génère le code binaire 85 à partir du code source précompilé obtenu en sortie de l’étape 100A. Plus particulièrement, le logiciel 14 traduit la suite d’instructions du code source précompilé en une suite d’instructions exécutables 94, 95. A l’issue de l’étape 100B, la mémoire 22 stocke le code binaire 85 ainsi obtenu.During step 100B of compiling the precompiled source code, the processor 20 executes the compilation software 14. This generates the binary code 85 from the precompiled source code obtained at the output of step 100A. More particularly, the software 14 translates the sequence of instructions of the precompiled source code into a sequence of executable instructions 94, 95. At the end of step 100B, the memory 22 stores the binary code 85 thus obtained.

Lors d’une étape 100C de génération du fichier intermédiaire 81, le logiciel 10 est exécuté par le processeur 20 de manière à regrouper, dans un unique fichier, l’en-tête 71, et le code binaire 85. A l’issue de l’étape 100C, le code intermédiaire 81 est stocké dans la mémoire 22.During a step 100C generation of the intermediate file 81, the software 10 is executed by the processor 20 so as to group, in a single file, the header 71, and the binary code 85. At the end of step 100C, the intermediate code 81 is stored in the memory 22.

Puis, au cours d’une étape 100D, le code source 61 fait alors l’objet d’une nouvelle certification, par exemple selon un standard industriel du domaine aéronautique de type DO-178.Then, during a step 100D, the source code 61 is then the subject of a new certification, for example according to an industrial standard of the aeronautical field of DO-178 type.

Puis une étape 102 de transmission est mise en œuvre, au cours de laquelle, le fichier intermédiaire 81 est transmis depuis la plateforme de développement 2 vers la plateforme d’exécution cible 4, via la liaison 6. Pour ce faire, le logiciel 16 est mis en œuvre sur la plateforme 2 et le logiciel 30 est mis en œuvre sur la plateforme 4 pour télécharger le fichier intermédiaire du bloc de traitement que l’on souhaite mettre à jour, par exemple le fichier 81 du bloc 51.Then a transmission step 102 is implemented, during which the intermediate file 81 is transmitted from the development platform 2 to the target execution platform 4, via the link 6. To do this, the software 16 is implemented on the platform 2 and the software 30 is implemented on the platform 4 to download the intermediate file of the processing block that is to be updated, for example the file 81 of the block 51.

Le logiciel de téléchargement 30 reçoit le fichier intermédiaire 81 et le stocke dans l’espace de stockage non volatil 42B de la mémoire 42 de la plateforme 4.The downloading software 30 receives the intermediate file 81 and stores it in the nonvolatile storage space 42B of the memory 42 of the platform 4.

Puis, lorsque le logiciel applicatif 50 est exécuté sur la plateforme 4, une étape 104 d’initialisation est réalisée, au cours de laquelle le noyau applicatif 56 demande au conteneur logiciel 58 l’initialisation de chacun des blocs de traitement contenus dans le fichier de configuration 45. Pour le bloc de traitement 51, le noyau applicatif 56 extrait l’adresse du fichier intermédiaire 81 stocké dans l’espace de stockage non volatil 42B.Then, when the software application 50 is executed on the platform 4, an initialization step 104 is performed, during which the application kernel 56 requests the software container 58 to initialize each of the processing blocks contained in the file. configuration 45. For the processing block 51, the application kernel 56 extracts the address of the intermediate file 81 stored in the non-volatile storage space 42B.

Au cours de cette même étape 104, le noyau applicatif 56 élabore une requête d’initialisation du bloc de traitement 51. Cette requête comprend l’adresse mémoire du fichier intermédiaire 81, les données indicatives de l’espace mémoire maximal Emax alloué au bloc de traitement 51, et la période maximale d’exécution Tmax allouée au conteneur logiciel 58 pour l’exécution du bloc de traitement 51. A l’issue de l’étape 104, le noyau applicatif 56 transmet la requête au conteneur logiciel 58.During this same step 104, the application kernel 56 prepares a request to initialize the processing block 51. This request includes the memory address of the intermediate file 81, the data indicative of the maximum memory space Emax allocated to the block of data. processing 51, and the maximum execution period Tmax allocated to the software container 58 for the execution of the processing block 51. At the end of step 104, the application core 56 transmits the request to the software container 58.

Au cours d’une étape 106 de traitement d’une requête d’initialisation, le conteneur logiciel 58 requiert un accès à la mémoire 42 auprès du processeur 40. Le conteneur logiciel 58 accède au fichier intermédiaire 81, et extrait les données d’en-tête 71, en particulier le paramètre temporel général 76 et les informations indicatives de la taille en octets du code binaire 85, les informations indicatives de la taille en octets 78 des variables globales 72, et les informations indicatives de la taille en octets 79 des variables locales 73.During a step 106 of processing an initialization request, the software container 58 requires an access to the memory 42 from the processor 40. The software container 58 accesses the intermediate file 81, and extracts the data from it. header 71, in particular the general time parameter 76 and the information indicative of the size in bytes of the binary code 85, the information indicative of the size in bytes 78 of the global variables 72, and the information indicative of the size in bytes 79 of the local variables 73.

Au cours de cette même étape 106, le conteneur logiciel 58 interprète la requête d’initialisation selon un protocole prédéterminé.During this same step 106, the software container 58 interprets the initialization request according to a predetermined protocol.

Ce protocole comprend une première comparaison, entre le paramètre temporel général 76 et la durée maximale d’exécution Tmax allouée au conteneur logiciel 58 pour l’exécution du bloc de traitement 51. Si la valeur du paramètre temporel général 76 est inférieure ou égale à la valeur de la durée maximale d’exécution Tmax, alors la première comparaison est « positive ».This protocol comprises a first comparison, between the general time parameter 76 and the maximum execution time Tmax allocated to the software container 58 for the execution of the processing block 51. If the value of the general time parameter 76 is less than or equal to the value of the maximum execution time Tmax, then the first comparison is "positive".

Ce protocole comprend en outre une deuxième comparaison, entre les informations indicatives de la taille en octets du code binaire, des variables globales et des variables locales, et les données indicatives de l’espace mémoire maximal Emax alloué au bloc de traitement 51. Si la taille en octets du code binaire, des variables globales et des variables locales est inférieure ou égale à l’espace mémoire maximal Emax alors la deuxième comparaison est « positive ».This protocol further comprises a second comparison, between information indicative of the size in bytes of the binary code, global variables and local variables, and the data indicative of the maximum memory space Emax allocated to the processing block 51. size in bytes of the binary code, global variables and local variables is less than or equal to the maximum memory space Emax then the second comparison is "positive".

Si la première ou la deuxième comparaison est « négative », le conteneur logiciel 58 retourne un code d’erreur au noyau applicatif 56. Le procédé se termine alors à l’étape 106.If the first or the second comparison is "negative", the software container 58 returns an error code to the application kernel 56. The method then ends in step 106.

Si, en revanche, les première et deuxième comparaisons sont « positives », le conteneur logiciel 58 copie le code binaire 85 dans une zone indiquée de l’espace de stockage volatil 42A. Cette copie du code binaire 85 respecte le procédé de copie de code binaire imposé par le système d’exploitation 48.If, on the other hand, the first and second comparisons are "positive", the software container 58 copies the binary code 85 into an indicated area of the volatile storage space 42A. This copy of the binary code 85 follows the binary code copying method imposed by the operating system 48.

Puis, toujours au cours de cette même étape 106, le conteneur logiciel 58 requiert un accès à la mémoire 42 auprès du processeur 40 et stocke, dans l’espace de stockage volatil 42A, l’adresse mémoire de la copie du code binaire 85, l’adresse mémoire du début des variables globales 72 et l’adresse mémoire du début des variables locales 73.Then, again during this same step 106, the software container 58 requires access to the memory 42 from the processor 40 and stores, in the volatile storage space 42A, the memory address of the copy of the binary code 85, the memory address of the beginning of the global variables 72 and the memory address of the beginning of the local variables 73.

Le conteneur logiciel 58 retourne alors au noyau applicatif 56 un identificateur faisant référence au bloc de traitement 51 ainsi chargé en mémoire volatile.The software container 58 then returns to the application core 56 an identifier referring to the processing block 51 thus loaded in volatile memory.

Par exemple, l’identificateur retourné correspond à l’adresse mémoire de l’espace de stockage volatil 42A où le conteneur logiciel 58 a stocké le code binaire 85. L’étape 108 de génération d’une requête d’exécution est ensuite mise en oeuvre, au cours de laquelle le noyau applicatif 56 stocke les données d’entrée du bloc de traitement 51 dans la mémoire allouée aux variables globales.For example, the returned identifier corresponds to the memory address of the volatile storage space 42A where the software container 58 has stored the binary code 85. The step 108 of generating an execution request is then implemented. in which the application core 56 stores the input data of the processing block 51 in the memory allocated to the global variables.

Au cours de cette même étape 108, le noyau applicatif 56 élabore une requête d’exécution du bloc de traitement 51. Cette requête intègre l’identificateur retourné par le conteneur logiciel 58 à l’étape 106. A l’issue de l’étape 108, le noyau applicatif 56 transmet la requête d’exécution au conteneur logiciel 58.During this same step 108, the application kernel 56 generates a request for execution of the processing block 51. This request includes the identifier returned by the software container 58 in step 106. At the end of the step 108, the application core 56 transmits the execution request to the software container 58.

Au cours d’une étape suivante 110 de traitement d’une requête d’exécution, le conteneur logiciel 58 interprète la requête d’exécution reçue, puis lance l’exécution de la copie du code binaire 85 stockée dans l’espace de stockage volatil 42A. La fonctionnalité correspondant au bloc de traitement 51 est alors mise en oeuvre au sein de la plateforme 4. A l’issue de cette étape 110, le conteneur logiciel 58 retourne au noyau applicatif 56 une valeur de retour.During a next step 110 of processing an execution request, the software container 58 interprets the received execution request, then starts the execution of the copy of the binary code 85 stored in the volatile storage space 42A. The functionality corresponding to the processing block 51 is then implemented within the platform 4. At the end of this step 110, the software container 58 returns to the application core 56 a return value.

Si l’exécution du code binaire 85 s’est déroulée correctement, la valeur de retour est la valeur de retour contenue dans l’instruction de fin 95.If the execution of the binary code 85 has proceeded correctly, the return value is the return value contained in the end instruction 95.

Sinon, la valeur de retour indique que l’exécution du code binaire 85 ne s’est pas déroulée correctement et indique la nature de l’erreur détectée.Otherwise, the return value indicates that the execution of the binary code 85 did not proceed correctly and indicates the nature of the detected error.

Au cours d’une étape suivante 112 de traitement d’un retour d’exécution, le noyau applicatif 56 interprète la valeur de retour reçue, puis accède aux données de sortie du code applicatif 51 qui ont été stockée dans la mémoire allouée aux variables globales lors de l’exécution du code binaire 85.During a next step 112 of processing a return of execution, the application kernel 56 interprets the received return value and then accesses the output data of the application code 51 which has been stored in the memory allocated to the global variables when executing the binary code 85.

Claims (10)

REVENDICATIONS 1Programme d’ordinateur définissant un logiciel applicatif (50) hébergé sur une plateforme d’exécution cible (4) du type avionique, caractérisé en ce qu’il comporte des instructions de code de programme d’ordinateur qui définissent : - au moins un bloc de traitement (51), fournissant, lorsque ledit programme est exécuté sur la plateforme d’exécution cible, une fonctionnalité spécifique au logiciel applicatif, le ou chaque bloc de traitement constituant un composant du logiciel applicatif pouvant être certifié de manière indépendante des autres composants du logiciel ; - un noyau applicatif (56) assurant, lorsque ledit programme est exécuté sur la plateforme d’exécution cible, une orchestration de l’appel de ou de chaque bloc de traitement (51) et/ou des services du système d’exploitation (48) de la plateforme d’exécution cible (4) ; - un conteneur logiciel (58), qui, lorsque ledit programme est exécuté sur la plateforme d’exécution cible et sur requête du noyau applicatif, exécute un code binaire (85) présent en mémoire (42) de la plateforme d’exécution cible (4) et associé au bloc de traitement (51), l’exécution du code binaire étant réalisée de manière cloisonnée spatialement et temporellement, le code source exécuté ne pouvant pas échanger de données avec un autre code binaire d’un autre bloc de traitement du logiciel applicatif ou un service du système d’exploitation sans passer par le noyau applicatif, le logiciel applicatif une fois certifié pouvant être mis à jour en modifiant le code binaire correspondant à un bloc de traitement dès lors que ledit code source a été certifié.1 computer program defining an application software (50) hosted on a target execution platform (4) of the avionic type, characterized in that it comprises computer program code instructions which define: - at least one processing block (51), providing, when said program is executed on the target execution platform, a functionality specific to the application software, the or each processing block constituting a component of the application software that can be certified independently of the other components software; an application core (56) providing, when said program is executed on the target execution platform, an orchestration of the call of or of each processing block (51) and / or services of the operating system (48); ) the target execution platform (4); a software container (58) which, when said program is executed on the target execution platform and on request of the application kernel, executes a binary code (85) present in the memory (42) of the target execution platform ( 4) and associated with the processing block (51), the execution of the binary code being performed in a spatially and temporally partitioned manner, the executed source code being unable to exchange data with another binary code of another processing block. application software or an operating system service without going through the application kernel, once the certified application software can be updated by modifying the binary code corresponding to a processing block once said source code has been certified. 2. - Programme d’ordinateur selon la revendication 1, dans lequel le noyau applicatif (56) est développé sur la base de spécifications décrivant la version la plus complète du ou de chaque bloc de traitement (51) qu’il est envisagé de développer.2. - computer program according to claim 1, wherein the application core (56) is developed on the basis of specifications describing the most complete version of the or each processing block (51) that is planned to develop . 3. - Programme d’ordinateur selon la revendication 2, dans lequel le code binaire (85) associé à un bloc de traitement (51) est exécuté en utilisant un ensemble d’exécution défini à partir de ta version la plus complète envisagée pour ledit bloc de traitement.3. - computer program according to claim 2, wherein the binary code (85) associated with a processing block (51) is executed using a set of execution defined from the most complete version envisaged for said treatment block. 4 - Programme d’ordinateur selon la revendication 3, dans lequel l’ensemble de paramètres maximaux comporte : - Un paramètre temporel général correspondant au WCET ; - Une liste de variables globales relatives aux données d’entrée et aux données de sortie dudit bloc de traitement ; Une liste de variables locales dudit bloc de traitement ; Une taille en octet du code binaire dudit bloc de traitement ; - Une taille en octet des variables globales ; Une taille en octet des variables locales.4 - computer program according to claim 3, wherein the set of maximum parameters comprises: a general time parameter corresponding to the WCET; A list of global variables relating to the input data and the output data of said processing block; A list of local variables of said processing block; A byte size of the binary code of said processing block; - Byte size of the global variables; A byte size of the local variables. 5. - Programme d’ordinateur selon la revendication 3 ou la revendication 4, dans lequel une valeur par défaut est attribuée à une variable globale de l’ensemble de paramètres maximaux d’exécution que le code binaire associé au bloc de traitement considéré et présent dans la mémoire de la plateforme d’exécution cible (4) au moment de l’exécution du logiciel applicatif n’est pas capable de traiter.5. - Computer program according to claim 3 or claim 4, wherein a default value is assigned to a global variable of the set of maximum execution parameters that the binary code associated with the processing block considered and present. in the memory of the target execution platform (4) at the time of execution of the application software is not able to process. 6, - Programme d’ordinateur selon l’une quelconque des revendications précédentes, dans lequel le noyau applicatif (56) est un automate d’état, chaque état dudit automate correspond à une procédure logicielle qui lance et contrôle une exécution d’une suite ordonnée d’appels à des blocs de traitement (51) du logiciel applicatif et/ou à des services du système d’exploitation de la plateforme d’exécution cible (4), et chaque transition d’un état dudit automate vers un autre état dudit automate dépendant de valeurs retournées à l’issue de leur exécution, par les blocs de traitement du logiciel applicatif et les services du système d’exploitation (48) appelés.6, - computer program according to any preceding claim, wherein the application core (56) is a state machine, each state of said controller corresponds to a software procedure that launches and controls a run of a suite ordinating calls to processing blocks (51) of the application software and / or services of the operating system of the target execution platform (4), and each transition of a state of said controller to another state of said automaton depending on values returned at the end of their execution, by the processing blocks of the application software and the services of the operating system (48) called. 7, - Programme d’ordinateur selon la revendication 6, dans lequel, le noyau applicatif (56) calcule un statut de contexte de l’aéronef à partir de différentes données externes, la transition d’un état initial vers un état final dudit automate dépendant en outre du statut de contexte courant de l’aéronef calculé.7, - computer program according to claim 6, wherein the application core (56) calculates a context status of the aircraft from different external data, the transition from an initial state to a final state of said automaton also dependent on the current context status of the calculated aircraft. 8. - Plateforme d'exécution cible (4) du type avionique, comportant une couche matérielle (46) et une couche logicielle (47), la couche matérielle comprenant une mémoire (42) et un processeur (40), la couche logicielle comprenant un programme d’ordinateur définissant un système d’exploitation (48) avionique et un programme d’ordinateur définissant un logiciel applicatif, la couche matérielle étant configurée par la couche logicielle, caractérisée en ce que ledit programme d’ordinateur définissant un logiciel applicatif (50) est conforme à l’une quelconque des revendications 1 à 7.8. - Targeting execution platform (4) of the avionic type, comprising a hardware layer (46) and a software layer (47), the hardware layer comprising a memory (42) and a processor (40), the software layer comprising a computer program defining an avionics operating system (48) and a computer program defining an application software, the hardware layer being configured by the software layer, characterized in that said computer program defining an application software ( 50) is according to any one of claims 1 to 7. 9. - Plateforme de développement (2), comportant une couche matérielle (26) et une couche logicielle (27), la couche matérielle comprenant une mémoire (22) et un processeur (20), la couche logicielle comprenant un programme d’ordinateur définissant un système d’exploitation (28) et un programme d’ordinateur définissant un logiciel de compilation (14), la couche matérielle étant configurée par la couche logicielle, caractérisée en ce que la mémoire comporte un code source (61) d’un bloc de traitement (51) d’un programme d’ordinateur définissant un logiciel applicatif (50) conforme à l’une quelconque des revendications 1 à 7, et en ce que le programme d’ordinateur définissant un logiciel de compilation est propre, lorsqu’il est exécuté, à générer un code binaire (85) à partir du code source, le code binaire étant propre à être chargé dans la mémoire d’une plateforme d’exécution cible (4) du type avionique sur laquelle est exécuté ledit programme d’ordinateur définissant un logiciel applicatif.9. - Development platform (2), comprising a hardware layer (26) and a software layer (27), the hardware layer comprising a memory (22) and a processor (20), the software layer comprising a computer program defining an operating system (28) and a computer program defining a compilation software (14), the hardware layer being configured by the software layer, characterized in that the memory comprises a source code (61) of a a processing block (51) of a computer program defining an application software (50) according to any one of claims 1 to 7, and in that the computer program defining a compilation software is clean, when it is executed, generating a binary code (85) from the source code, the binary code being adapted to be loaded into the memory of a target execution platform (4) of the avionics type on which is executed said computer program defining an application software. 10. Plateforme de développement (2) selon la revendication 9, dont la mémoire (22) comporte un ensemble de paramètres maximaux d’exécution pour un bloc de traitement (51) dudit programme d’ordinateur définissant un logiciel applicatif (50).10. Development platform (2) according to claim 9, wherein the memory (22) comprises a set of maximum execution parameters for a processing block (51) of said computer program defining an application software (50).
FR1502650A 2015-12-21 2015-12-21 AVIONIC EXECUTION PLATFORM AND DEVELOPMENT PLATFORM FOR INDEPENDENT CERTIFICATION OF SOFTWARE COMPONENTS Active FR3045879B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1502650A FR3045879B1 (en) 2015-12-21 2015-12-21 AVIONIC EXECUTION PLATFORM AND DEVELOPMENT PLATFORM FOR INDEPENDENT CERTIFICATION OF SOFTWARE COMPONENTS

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1502650 2015-12-21
FR1502650A FR3045879B1 (en) 2015-12-21 2015-12-21 AVIONIC EXECUTION PLATFORM AND DEVELOPMENT PLATFORM FOR INDEPENDENT CERTIFICATION OF SOFTWARE COMPONENTS

Publications (2)

Publication Number Publication Date
FR3045879A1 true FR3045879A1 (en) 2017-06-23
FR3045879B1 FR3045879B1 (en) 2018-02-02

Family

ID=56068935

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1502650A Active FR3045879B1 (en) 2015-12-21 2015-12-21 AVIONIC EXECUTION PLATFORM AND DEVELOPMENT PLATFORM FOR INDEPENDENT CERTIFICATION OF SOFTWARE COMPONENTS

Country Status (1)

Country Link
FR (1) FR3045879B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110780886A (en) * 2018-07-26 2020-02-11 泰雷兹公司 Method and device for installing avionic software application, computer program and system
US11618553B2 (en) 2019-11-19 2023-04-04 Ge Aviation Systems Limited Method and process of creating qualifiable parameter data item (PDI) to define the function of a power system controller

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101316A1 (en) * 2005-09-12 2007-05-03 Don Berndt Software Architecture and Program for the Concurrent Execution of Finite State Machine-Encoded Processes, on Single or Multiple-Processor-Based Embedded Systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101316A1 (en) * 2005-09-12 2007-05-03 Don Berndt Software Architecture and Program for the Concurrent Execution of Finite State Machine-Encoded Processes, on Single or Multiple-Processor-Based Embedded Systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
RAYROLE MARTIN ET AL: "Reducing certification granularity to increase adaptability of avionics software", 2013 IEEE/AIAA 32ND DIGITAL AVIONICS SYSTEMS CONFERENCE (DASC), IEEE, 5 October 2013 (2013-10-05), XP032553380, ISSN: 2155-7195, [retrieved on 20140114], DOI: 10.1109/DASC.2013.6712637 *
ROBERT KAISER: "Combining Partitioning and Virtualization for Safety-Critical Systems", INTERNET CITATION, 2007, pages 1 - 6, XP002685394, Retrieved from the Internet <URL:http://www.sysgo.com/products/document-center/whitepapers/> [retrieved on 20121017] *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110780886A (en) * 2018-07-26 2020-02-11 泰雷兹公司 Method and device for installing avionic software application, computer program and system
US11618553B2 (en) 2019-11-19 2023-04-04 Ge Aviation Systems Limited Method and process of creating qualifiable parameter data item (PDI) to define the function of a power system controller

Also Published As

Publication number Publication date
FR3045879B1 (en) 2018-02-02

Similar Documents

Publication Publication Date Title
US10871953B2 (en) Application update method and apparatus
US11567755B2 (en) Integration of containers with external elements
CN106469083B (en) Container mirror image safety inspection method and device thereof
JP6856749B2 (en) Systems and methods for implementing native contracts on the blockchain
US20190392045A1 (en) Tailoring container images to a specific microarchitecture in virtualized environments
US11385903B2 (en) Firmware update patch
CA3095629A1 (en) Method for managing application configuration state with cloud based application management techniques
US20180329700A1 (en) Application migration system
US10972538B2 (en) Synchronization of components in heterogeneous systems
US10838751B1 (en) Virtual machine configuration
EP2876551A1 (en) Method, computer program and device for configuring or maintaining of an information system in a cluster
EP2553584A1 (en) Method, computer program, and device for validating task execution in scaleable computer systems
FR2998073A1 (en) ELECTRONIC SYSTEM, ON-BOARD MODULAR EXECUTION PLATFORM AND METHOD FOR PARTITIONING DECISION-MAKING PARAMETERS
FR3045879A1 (en) AVIONIC EXECUTION PLATFORM AND DEVELOPMENT PLATFORM FOR INDEPENDENT CERTIFICATION OF SOFTWARE COMPONENTS
US11385923B2 (en) Container-based virtualization system extending kernel functionality using kernel modules compiled by a compiling container and loaded by an application container
US20220413821A1 (en) Deploying a machine learning model
US11829766B2 (en) Compliance enforcement via service discovery analytics
CN115185644A (en) Detection method, system, equipment and storage medium based on container interactive application
US20200344305A1 (en) Commissioning a virtualised network function
US20200050440A1 (en) Application upgrading through sharing dependencies
US20220413825A1 (en) Immutable edge devices
US11966723B2 (en) Automatic management of applications in a containerized environment
US20230239209A1 (en) Optimizing container executions with network-attached hardware components of a composable disaggregated infrastructure
FR2970577A1 (en) Modular execution platform i.e. integrated modular avionics type platform, has client software component requesting execution of service by sending request using communication services between partitions of hypervisor code
EP3144812A1 (en) Client/server architecture for the administration of a supercomputer

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170623

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9