Brevet FR3101460A1 — publié le 20210402

L’invention concerne un procédé de gestion d’échanges de données entre une pluralité de tâches par un calculateur d’un véhicule, notamment automobile, ledit procédé comprend une phase de regroupement par ensemble (ET) de fonctions, chaque ensemble (ET) comprenant les fonctions productrices (A, C) de données et les fonctions consommatrices (B, D). Pour chaque ensemble (ET) de fonctions (A, B, C, D), une première phase comprend les étapes d’exécution (E1) des fonctions productrices (A, C) afin de produire les données dites « produites » (V1A, V1C) et d’enregistrement (E2) d’une copie (V1A_int, V1C_int) de chaque donnée produite (V1A, V1C), une deuxième phase comprend les étapes de restauration (E3) des données à consommer (V2B, V2D) par les fonctions consommatrices (B, D), à partir des copies (V1A_int, V1C_int) enregistrées et d’exécution (E4) des fonctions consommatrices (B, D) à partir des données à consommer (V2B, V2D) restaurées. Figure 3 Procédé et calculateur de gestion d’échanges de données entre une pluralité de tâches L’invention se rapporte au domaine du contrôle d’un moteur de véhicule, notamment automobile, et plus précisément à un procédé de gestion des échanges de données entre une pluralité de tâches mises en œuvre par un calculateur ainsi qu’un calculateur permettant de mettre en œuvre ce procédé. Etat de la technique antérieure De nos jours, de nombreux véhicules sont équipés d’une pluralité d’actuateurs permettant de mettre en œuvre les fonctions de contrôle moteur du véhicule, configurées pour assurer la gestion du fonctionnement du moteur. Par exemple, les actuateurs peuvent être un injecteur de carburant, un système d’allumage du moteur ou encore un système de recirculation des gaz dans le moteur. Chaque actuateur est relié à un calculateur de contrôle moteur afin de le commander. Un calculateur de contrôle moteur peut être monocœur ou multicœur, c’est-à-dire qu’il peut comprendre un ou plusieurs cœurs, permettant de mettre en œuvre les fonctions de contrôle moteur. Pour cela, le ou les cœurs exécutent chacun une série de tâches selon un niveau de priorité, chaque tâche mettant en œuvre une ou plusieurs fonctions dont certaines sont productrices de données et/ou consommatrices de données. Lorsqu’une première tâche, comprenant au moins une fonction productrice d’une donnée, et une deuxième tâche, comprenant au moins une fonction consommatrice de ladite donnée, sont mises en œuvre successivement mais à des périodes d’exécutions différentes, il est nécessaire d’utiliser un module de transition afin d’adapter la période du signal correspondant à la donnée produite pour que cette donnée produite puisse être lue par la fonction consommatrice de la deuxième tâche. Ce module de transition permet ainsi de signifier au calculateur un changement de période d’exécution et de réaliser le transfert des données produites par la fonction productrice vers la fonction consommatrice. Il est également important d’assurer la consistance des données entre la fonction productrice et la fonction consommatrice, autrement dit, de protéger les données transférées entre la fonction productrice et la fonction consommatrice, lorsque ces fonctions sont mises en œuvre par des tâches distinctes. La consistance est définie par la stabilité et la cohérence des données. Un problème de stabilité se traduit par une modification de la valeur d’une donnée entre plusieurs lectures, autrement dit entre plusieurs restaurations et consommations de cette donnée. Ainsi les fonctions consommatrices de cette donnée ne consommeront pas toutes la même valeur de la donnée : ladite valeur est vue comme instable. Un problème de cohérence se présente lorsque, pour une fonction consommatrice de données, l’ensemble de données consommées par ladite fonction consommatrice comprend des valeurs qui n’ont pas été modifiées simultanément. Ainsi, la fonction consommatrice utilise des données ne possédant pas la même datation et l’ensemble de données est vu comme incohérent. Ainsi, lorsqu’il y a un problème de consistance de données, les fonctions consommatrices exécutées utilisent des données à consommer qui peuvent s’avérer incorrectes. L’utilisation de valeurs de données incorrectes par la fonction consommatrice peut entrainer des problèmes dans le contrôle du fonctionnement du moteur, qui n’aura pas le comportement attendu, voire endommager le moteur. En effet, en cas de problème de consistance, la position réelle d’un actuateur peut différer de la position commandée par le calculateur associé. Dans un tel cas, le calculateur tente de corriger continuellement cette différence mais la convergence vers la position commandée peut ne jamais être atteinte, ce qui peut par exemple provoquer des phénomènes de vibrations mécaniques nuisibles pour le matériel et gêner la conduite du véhicule. Dans un premier exemple, le calculateur est un calculateur monocœur dit « préemptif », permettant l’exécution de tâches dites « préemptives ». Le calculateur monocœur préemptif permet de mettre en œuvre une première solution, permettant de résoudre en partie le problème de consistance en se basant sur le niveau de priorité de chaque tâche. Autrement dit lorsqu’une première tâche d’une série de tâches est exécutée, elle sera interrompue par le système d’exploitation si une autre tâche possède un niveau de priorité plus élevé. Cependant, seule la stabilité des données est assurée. La cohérence n’étant pas vérifiée, un mécanisme de protection doit être ajouté au système pour réaliser cette vérification. Par ailleurs, dans le cas d’un calculateur multicœurs préemptif, le problème de consistance est dû à la concurrence de l’exécution des tâches par les différents cœurs. Dans un deuxième exemple, le calculateur est un calculateur monocœur dit « coopératif », permettant l’exécution de tâches dites « coopératives ». Le calculateur monocœur coopératif permet de mettre en œuvre une deuxième solution, permettant également de résoudre en partie le problème de consistance. En effet, à intervalle de temps régulier, la tâche en cours d’exécution par le calculateur monocœur coopératif, s’interrompt afin de laisser le système d’exploitation vérifier qu’il n’y ait pas une autre tâche dont le niveau de priorité est plus élevé. Auquel cas la tâche s’arrête et laisse cette autre tâche s’exécuter. De même que précédemment, des problèmes d’inconsistances peuvent se produire dans ce modèle coopératif, puisque le système d’exploitation peut introduire des incohérences et des instabilités. L’utilisation d’un calculateur multicœur coopératif présente des inconvénients similaires à ceux présentés pour l’utilisation d’un calculateur monocœur coopératif, autrement dit, l’utilisation d’un calculateur multicœur coopératif ne permet qu’une résolution partielle du problème de consistance des données. Ainsi, les solutions existantes ne permettent de résoudre que partiellement les problèmes de consistance de données. Il existe donc le besoin d’une solution permettant de résoudre entièrement ces inconvénients. L’invention concerne un procédé de gestion d’échanges de données entre une pluralité de tâches par un calculateur d’un véhicule notamment automobile, ledit calculateur comprenant au moins un cœur, chaque tâche permettant d’exécuter au moins une fonction, chaque fonction étant désignée comme productrice et/ou consommatrice d’au moins une donnée, ledit procédé étant remarquable en ce qu’il comprend : une phase de regroupement par ensemble de fonctions, chaque ensemble comprenant les fonctions productrices de données, dont l’exécution est allouée dans une même première tâche, et les fonctions consommatrices des données produites par lesdites fonctions productrices de données, dont l’exécution est allouée dans une même deuxième tâche différente de la première tâche, pour chaque ensemble de fonctions : une première phase comprenant les étapes de : exécution des fonctions productrices de données de l’ensemble afin de produire les données dites « produites », enregistrement d’une copie de chaque donnée produite, une deuxième phase comprenant les étapes de : restauration des données à consommer par les fonctions consommatrices de l’ensemble, à partir des copies enregistrées, exécution des fonctions consommatrices de l’ensemble à partir des données à consommer restaurées. Avantageusement, le procédé selon l’invention permet de stabiliser les données produites, afin qu’elles restent stables, autrement dit inchangées, pendant leur consommation par une ou plusieurs fonctions, même si leur production intervient entre le début et la fin de l’exécution de cette fonction. En effet, il est nécessaire d’assurer la stabilité des données dans plusieurs cas : lorsqu’une même fonction lit une donnée plusieurs fois ou lorsque plusieurs fonctions successives lisent une même donnée une ou plusieurs fois. De plus, le procédé selon l’invention résout également les problèmes de cohérence. Les données à consommer par une fonction consommatrice sont toutes produites de telle façon que la concurrence entre les tâches ne puisse pas corrompre une partie de ces données à consommer. L'ensemble de ces données à consommer est cohérent au moment où la fonction consommatrice s’exécute à partir de ces données à consommer. De manière préférée, l’exécution des fonctions productrices de données, par la première tâche dans laquelle l’exécution est allouée, est séquentielle. Avantageusement, une exécution séquentielle des fonctions productrices permet d’éviter tout problème de concurrence entre les tâches et ainsi d’éviter tout problème de consistance des données. De manière avantageuse, l’exécution des fonctions consommatrices de données par la deuxième tâche dans laquelle l’exécution est allouée, est séquentielle. Avantageusement, une exécution séquentielle des fonctions consommatrices permet d’éviter tout problème de concurrence entre les tâches et ainsi d’éviter tout problème de consistance des données. Avantageusement, lors de l’étape d’enregistrement, les copies sont enregistrées dans une mémoire comprenant une pluralité de zones, en affectant la valeur de chaque copie à une et une seule zone de la pluralité de zones. Avantageusement, l’étape d’enregistrement dans la mémoire permet de figer la valeur des données produites. De préférence, lors de l’étape de restauration, la valeur de chaque copie enregistrée dans une zone de la mémoire est respectivement affectée à une donnée à consommer. Une telle restauration, en miroir d’enregistrement, dite lecture en mémoire d’écriture permet de copier la valeur d’une donnée enregistrée vers la donnée à consommer par la fonction cible, c’est-à-dire la fonction destinée à consommer la donnée lors de son exécution. Avantageusement, l’étape d’enregistrement et l’étape de restauration permettent d’assurer la stabilité et la cohérence des données produites, afin que les données à consommer, auxquelles sont affectées les valeurs de la copie de chaque donnée produite, restent stables et donc inchangées avant consommation par la fonction consommatrice. L’invention concerne également un calculateur de gestion d’échanges de données entre une pluralité de tâches pour véhicule, notamment automobile, ledit calculateur comprenant au moins un cœur, chaque tâche permettant d’exécuter au moins une fonction, chaque fonction étant désignée comme productrice et/ou consommatrice d’au moins une donnée, ledit calculateur étant remarquable en ce qu’il est configuré pour : regrouper par ensemble de fonctions, chaque ensemble comprenant les fonctions productrices de données, dont l’exécution est allouée dans une même première tâche, et les fonctions consommatrices des données produites par lesdites fonctions productrices de données, dont l’exécution est allouée dans une même deuxième tâche différente de la première tâche, pour chaque ensemble de fonctions : exécuter les fonctions productrices de données de l’ensemble afin de produire les données dites « produites », enregistrer une copie de chaque donnée produite, restaurer les données à consommer par les fonctions consommatrices de l’ensemble à partir des copies enregistrées, exécuter les fonctions consommatrices de l’ensemble à partir des données à consommer restaurées. Avantageusement, le calculateur selon l’invention permet de stabiliser les données produites, afin qu’elles restent stables, autrement dit inchangées, pendant leur consommation par une fonction, même si leur production intervient entre le début et la fin de l’exécution de cette fonction. De plus, le calculateur selon l’invention résout également les problèmes de cohérence. Les données à consommer par une fonction consommatrice sont toutes produites de telle façon que la concurrence entre les tâches ne puisse pas corrompre une partie de ces données à consommer. L'ensemble de ces données à consommer est cohérent au moment où la fonction consommatrice s’exécute à partir de ces données à consommer. De manière préférée, le calculateur exécute séquentiellement les fonctions productrices de données par la première tâche dans laquelle l’exécution est allouée. Avantageusement, une exécution séquentielle des fonctions productrices par le calculateur permet d’éviter tout problème de concurrence entre les tâches et ainsi d’éviter tout problème de consistance des données. De manière préférée, le calculateur exécute séquentiellement les fonctions consommatrices de données par la deuxième tâche dans laquelle l’exécution est allouée. Avantageusement, une exécution séquentielle des fonctions consommatrices par le calculateur permet d’éviter tout problème de concurrence entre les tâches et ainsi d’éviter tout problème de consistance des données. Avantageusement, le calculateur est configuré pour enregistrer une copie de chaque donnée produite dans une mémoire comprenant une pluralité de zones, en affectant la valeur de chaque copie à une zone de la pluralité de zones. Avantageusement, l’enregistrement des données produites par le calculateur dans la mémoire permet de figer la valeur des données produites. De préférence encore, le calculateur est configuré pour restaurer les données à consommer en affectant la valeur de chaque copie enregistrée dans une zone de la mémoire à une donnée à consommer. De préférence, l’enregistrement des données produites et la restauration des données à consommer sont réalisés dans le mécanisme de protection du calculateur. Avantageusement, le calculateur permet d’assurer la stabilité des données produites, afin que les données à consommer, auxquelles sont affectées les copies des valeurs des données produites, restent stables avant consommation par la tâche consommatrice. L’invention concerne également un véhicule comprenant un calculateur tel que présenté précédemment. Description des dessins D’autres caractéristiques et avantages de l’invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels : : la figure 1 représente un exemple d’exécutions d’une pluralité de tâches par un calculateur selon l’invention, : la figure 2 illustre une transition correspondant à l’exécution de deux tâches consécutives par un calculateur selon l’invention, : la figure 3 représente un exemple de mise en œuvre du procédé de gestion de tâches selon l’invention. Procédé de gestion d’échanges de données entre une pluralité de tâches par un calculateur d’un véhicule, notamment automobile, ledit calculateur comprenant au moins un cœur, chaque tâche permettant d’exécuter au moins une fonction (A, B, C, D), chaque fonction (A, B, C, D) étant désignée comme productrice et/ou consommatrice d’au moins une donnée, ledit procédé étant caractérisé en ce qu’il comprend : une phase de regroupement (R) par ensemble (E T ) de fonctions, chaque ensemble (E T ) comprenant les fonctions productrices (A, C) de données, dont l’exécution est allouée dans une même première tâche (1), et les fonctions consommatrices (B, D) des données produites par lesdites fonctions productrices (A, C) de données, dont l’exécution est allouée dans une même deuxième tâche (2) différente de la première tâche (1), pour chaque ensemble (E T ) de fonctions (A, B, C, D): une première phase comprenant les étapes de : exécution (E1) des fonctions productrices (A, C) de données de l’ensemble (E T ) afin de produire les données dites « produites » (V 1A, V 1C ), enregistrement (E2) d’une copie (V 1A_int, V 1C_int ) de chaque donnée produite (V 1A, V 1C ), une deuxième phase comprenant les étapes de : restauration (E3) des données à consommer (V 2B, V 2D ) par les fonctions consommatrices (B, D) de l’ensemble (E T ), à partir des copies (V 1A_int, V 1C_int ) enregistrées, exécution (E4) des fonctions consommatrices (B, D) de l’ensemble (E T ) à partir des données à consommer (V 2B, V 2D ) restaurées. Procédé selon la revendication précédente, dans lequel dans l’étape d’exécution (E1) des fonctions productrices (A, C), l’exécution des fonctions productrices (A, C) de données par la première tâche (1), dans laquelle l’exécution est allouée, est séquentielle. Procédé selon l’une quelconque des revendications précédentes, dans lequel dans l’étape d’exécution (E4) des fonctions consommatrices (B, D), l’exécution des fonctions consommatrices (B, D) de données par la deuxième tâche (2), dans laquelle l’exécution est allouée, est séquentielle. Procédé selon l’une quelconque des revendications précédentes, lors de l’étape d’enregistrement (E2), les copies (V 1A_int, V 1C_int ) sont enregistrées dans une mémoire (MEM) comprenant une pluralité de zones, en affectant la valeur de chaque copie (V 1A_int, V 1C_int ) à une zone de la pluralité de zones. Procédé selon la revendication précédente, dans lequel lors de l’étape de restauration (E3), la valeur de chaque copie (V 1A_int, V 1C_int ) enregistrée dans une zone de la mémoire (MEM) est respectivement affectée à une donnée à consommer (V 2B , V 2D ). Calculateur de gestion d’échanges de données entre une pluralité de tâches pour véhicule, notamment automobile, ledit calculateur comprenant au moins un cœur, chaque tâche permettant d’exécuter au moins une fonction (A, B, C, D), chaque fonction (A, B, C, D) étant désignée comme productrice et/ou consommatrice d’au moins une donnée, ledit calculateur étant caractérisé en ce qu’il est configuré pour : regrouper par ensemble (E T ) de fonctions (A, B, C, D), chaque ensemble (E T ) comprenant les fonctions productrices (A, C) de données, dont l’exécution est allouée dans une même première tâche (1), et les fonctions consommatrices (B, D) des données produites par lesdites fonctions productrices (A, C) de données, dont l’exécution est allouée dans une même deuxième tâche (2) différente de la première tâche (1), pour chaque ensemble (E T ) de fonctions (A, B, C, D) : exécuter les fonctions productrices (A, C) de données de l’ensemble (E T ) afin de produire les données dites « produites » (V 1A, V 1C ), enregistrer une copie (V 1A_int, V 1C_int ) de chaque donnée produite (V 1A, V 1C ), restaurer les données à consommer (V 2B, V 2D ) par les fonctions consommatrices (B, D) de l’ensemble (E T ), à partir des copies (V 1A_int, V 1C_int ) enregistrées, exécuter les fonctions consommatrices (B, D) de l’ensemble (E T ) à partir des données à consommer (V 2B, V 2D ) restaurées. Calculateur selon la revendication précédente, configuré pour exécuter séquentiellement les fonctions productrices (A, C) de données par la première tâche (1) dans laquelle l’exécution est allouée. Calculateur selon l’une quelconque des revendications 6 et 7, configuré pour exécuter séquentiellement les fonctions consommatrices (B, D) de données par la deuxième tâche (2) dans laquelle l’exécution est allouée. Calculateur selon l’une quelconque des revendications 6 à 8, configuré pour enregistrer une copie (V 1A_int, V 1C_int ) de chaque donnée produite (V 1A, V 1C ), dans une mémoire (MEM) comprenant une pluralité de zones, en affectant la valeur de chaque copie (V 1A_int, V 1C_int ) à une zone de la pluralité de zones. Véhicule comprenant un calculateur selon l’une quelconque des revendications 6 à 9.