FR 3109000 A1 20211008 FR 2003304 A 20200402 La structure de données selon l’invention facilite la mise à jour d’un logiciel d’un calculateur d’un véhicule automobile, et ce, de manière incrémentale ou totale. La structure de données (100) comprend : une pluralité de champs de données (110), une pluralité d’un premier champ de hachage (120), dit champ de hachage local, et un deuxième champ de hachage (130), dit champ de hachage global. L’invention couvre également un procédé (200) de mise à jour d’un logiciel, dit logiciel préexistant, d’un calculateur d’un véhicule automobile à partir d’un logiciel, dit logiciel futur. Enfin, l’invention couvre aussi un véhicule automobile mettant en œuvre le procédé (200). Figure pour l’abrégé : Fig. 1 Structure de données et procédé pour la mise à jour d’un logiciel de calculateur L’invention concerne une structure de données qui facilite la mise à jour d’un logiciel d’un calculateur d’un véhicule automobile, et ce, de manière incrémentale ou totale. État de la technique antérieure Le développement informatique lié aux calculateurs de véhicules automobiles requiert de régulièrement mettre à jour le logiciel qui permet son fonctionnement afin, par exemple, d’améliorer le logiciel, de supprimer des erreurs informatiques (« bugs », en anglais) ou d’ajouter de nouvelles fonctionnalités. Jusqu’à présent, une telle mise à jour nécessite de remplacer totalement le logiciel préexistant par le nouveau logiciel. Toutefois, ce mécanisme n’est pas efficace, car il impose le même temps de mise à jour selon que les modifications apportées sont mineures ou majeures. II existe donc un besoin pour un mécanisme de mise à jour qui s’adapte au volume de modifications apportées par une nouvelle version d’un logiciel préexistant dans le calculateur d’un véhicule automobile. À cette fin, l’invention propose une structure de données pour la mise à jour d’un logiciel d’un calculateur d’un véhicule automobile. L’invention propose également un procédé de mise à jour d’un logiciel, dit logiciel préexistant, d’un calculateur d’un véhicule automobile à partir d’un logiciel, dit logiciel futur, le logiciel préexistant et le logiciel futur étant mis en œuvre dans une structure de données selon l’invention. Enfin, l’invention propose aussi un véhicule automobile qui met en œuvre le procédé qui comprend un calculateur électronique incorporant un logiciel, le calculateur comprenant au moins une mémoire non volatile partitionnée en une pluralité de secteurs de mémoire de taille égale, le logiciel comprenant une pluralité de portions de code binaire. En pratique, dans l’invention, le calculateur comprend au moins une mémoire non volatile partitionnée en une pluralité de secteurs de mémoire de taille égale et le logiciel comprend une pluralité de portions de code binaire. Par ailleurs, la structure de données comprend : - une pluralité de champs de données, chaque champ de données étant configuré pour stocker au moins une portion de code binaire, - une pluralité d’un premier champ de hachage, dit champ de hachage local, chaque champ de hachage local étant associé de manière bijective à un champ de données, chaque champ de hachage local étant, en outre, configuré pour stocker une première valeur de hachage produite en effectuant un calcul de hachage sur le contenu du champ de données associé, et - un deuxième champ de hachage, dit champ de hachage global, configuré pour stocker une deuxième valeur de hachage produite en effectuant un calcul de hachage sur au moins le contenu de la pluralité de portions de code, dans laquelle la taille de chaque champ de données est un multiple de la taille d’un secteur de mémoire. Dans une première mise en œuvre particulière, la structure de données comprend en outre un champ de mise à jour configuré pour stocker une information indiquant un mode de mise à jour choisit parmi : une mise à jour incrémentale et une mise à jour totale. Dans une deuxième mise en œuvre particulière, la structure de données lorsqu’on stocke la structure de données dans la mémoire non volatile, la structure de données est agencée de sorte que : - la pluralité de champs de données occupe un premier espace mémoire, et - la pluralité de champs de hachage local et le champ de hachage global occupent un deuxième espace mémoire, et de sorte que le premier espace mémoire et le deuxième espace mémoire sont contigus entre eux. Dans une troisième mise en œuvre particulière, la structure de données lorsqu’on stocke la structure de données dans la mémoire non volatile, la structure de données est agencée de sorte que : - chaque champ de données et chaque champ de hachage associé sont contigus entre eux, - la pluralité de champs de données et la pluralité de champs de hachage local associée occupent un premier espace mémoire, et - le champ de hachage global occupe un deuxième espace mémoire, et de sorte que le premier espace mémoire et le deuxième espace mémoire sont contigus entre eux. Le procédé selon l’invention comprend les étapes suivantes : - obtention, à partir au moins du logiciel futur, d’une information indiquant un mode de mise à jour du logiciel préexistant, et - mise à jour du logiciel préexistant à partir du logiciel futur en fonction de l’information indiquant le mode de mise à jour du logiciel préexistant. Dans une première mise en œuvre particulière, l’étape d’obtention comprend une étape de lecture du champ de mise à jour du logiciel futur. Dans une deuxième mise en œuvre particulière, l’étape d’obtention comprend, - une étape de comparaison pour déterminer un taux de différence entre la pluralité de champs de données du logiciel préexistant et la pluralité de champs de données du logiciel futur, et - une étape de définition de l’information indiquant le mode de mise à jour du logiciel préexistant à partir d’une comparaison entre le taux de différence et un taux de différence prédéterminé. Dans une troisième mise en œuvre particulière, lorsque le mode de mise à jour correspond à une mise à jour incrémentale, l’étape de mise à jour comprend : - une étape de comparaison de la pluralité de champs de hachage local du logiciel préexistant avec la pluralité de champs de hachage local du logiciel futur, et - une étape de remplacement d’au moins chaque champ de données du logiciel préexistant par le champ de données associé du logiciel futur, pour lequel le résultat de la comparaison indique au moins une différence entre le champ de données du logiciel préexistant et le champ de données du logiciel futur. Dans une troisième mise en œuvre particulière, lorsque le mode de mise à jour correspond à une mise à jour totale, l’étape de mise à jour comprend : - une étape de comparaison du champ de hachage global du logiciel préexistant avec le champ de hachage global du logiciel futur, et - une étape de remplacement d’au moins la pluralité de champs de données du logiciel préexistant par la pluralité de champs de données du logiciel futur, lorsque le résultat de la comparaison indique une au moins une différence entre le champ de hachage global du logiciel préexistant et le champ de hachage global du logiciel futur. 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 illustre un premier exemple de structure de données selon l’invention. : la figure 2 illustre un deuxième exemple de structure de données selon l’invention. : la figure 3 illustre schématiquement un mode de réalisation du procédé selon l’invention. La structure de données selon l’invention facilite la mise à jour d’un logiciel d’un calculateur (non représenté) d’un véhicule automobile (non représenté), et ce, de manière incrémentale ou totale. On entend par « logiciel », une suite d’instructions, écrites dans un langage informatique, qui définit un traitement ou une série de traitement à exécuter par le calculateur. Dans l’invention, le calculateur est une unité électronique de commande du type ECU (« Electronic Control Unit », en anglais). Le calculateur comprend au moins une mémoire non volatile partitionnée en une pluralité de secteurs de mémoire de taille égale. On entend par « mémoire non volatile » une mémoire qui conserve les informations qu’elle contient même en l’absence d’alimentation électrique. On appelle souvent ce type de mémoire un « mémoire morte ». Par exemple, la mémoire non volatile peut être une mémoire EEPROM de type connu. Dans un exemple (non représenté), la mémoire non volatile possède une capacité de 1,44 Méga-octet partitionnée en quatre-vingt-dix secteurs de 16 kilo-octets. Toutefois, l’invention peut tout à fait être mise en œuvre avec d’autres configurations de la mémoire non volatile, et ce, sans nécessiter de modifications majeures. Dans l’invention, le logiciel comprend une pluralité de portions de code binaire. Pour obtenir un tel agencement, on peut utiliser des outils connus de partitionnement de fichiers binaires qui sont tels que la jointure de la pluralité de portions de code binaire permet de reconstituer le logiciel en un fichier binaire. On entend par « fichier binaire » un fichier compilé, interprétable par le calculateur. On peut noter qu’un fichier binaire peut être un code exécutable et/ou un « bytecode » (en français, « code octal »), c’est-à-dire un code intermédiaire entre les instructions-machine et le code source, qui n’est pas directement exécutable. Comme les figures 1 et 2 l’illustrent, la structure de données 100 comprend : une pluralité de champs de données 110, une pluralité d’un premier champ de hachage 120, que l’on appellera champ de hachage local, et un deuxième champ de hachage 130, que l’on appellera champ de hachage global. En particulier, chaque champ de données 110 est configuré pour stocker au moins une portion de code binaire. Ainsi, un champ de données 110 peut tout à fait stocker plusieurs portions de code binaire. Par ailleurs, chaque champ de hachage local 120 est associé de manière bijective à un champ de données 110. En d’autres termes, à chaque champ de hachage local 120 correspond un champ de données 110. En outre, chaque champ de hachage local 120 est configuré pour stocker une première valeur de hachage produite en effectuant un calcul de hachage sur le contenu du champ de données associé 110. Dans un exemple, on réalise le calcul de hachage grâce à une fonction de hachage connue de type « Cyclic Redundancy Check » (CRC). Toutefois, on peut utiliser d’autres fonctions de hachage, telles celles de type « Message Digest 4 » (MD4), de type « Secure Hash Algorithm 1 » (SHA-1), de type « Secure Hash Algorithm 2 » (SHA-2) ou de type « Message Digest 5 » (MD5). Enfin, dans l’invention, la taille de chaque champ de données 110 est un multiple de la taille d’un secteur de mémoire de la mémoire non volatile du calculateur. Le champ de hachage global 130 est configuré pour stocker une deuxième valeur de hachage produite en effectuant un calcul de hachage sur au moins le contenu de la pluralité de portions de code. Dans une mise en œuvre particulière, le calcul de hachage 130 prend en considération au moins le contenu de la pluralité de portions de code et le contenu de pluralité de champs de données 110. Dans une autre mise en œuvre particulière, le calcul de hachage prend en considération le contenu de tous les champs de la structure de données 100 à l’exception du contenu du champ de hachage global 130. On pourra réaliser le calcul de hachage grâce à une fonction de hachage telle que décrite plus haut en référence au champ de hachage local 120. Dans une mise en œuvre particulière, la structure de données 100 comprend en outre un champ de mise à jour 140 configuré pour stocker une information qui indique un mode de mise à jour choisi parmi : une mise à jour incrémentale et une mise à jour totale. De cette manière, on peut définir par avance, dans la structure de données 100, le mode de mise à jour à réaliser. On entend par « mise à jour incrémentale » une mise à jour qui nécessite, pour un logiciel installé en mémoire, de remplacer seulement les portions de code binaire de la version courante du logiciel que l’on a modifié dans la version de mise à jour du logiciel. On entend par « mise à jour totale » une mise à jour qui nécessite, pour un logiciel installé en mémoire, de remplacer l’ensemble des portions de code binaire de la version courante du logiciel par l’ensemble des portions de code binaire de la version de mise à jour du logiciel. Lorsque l’on stocke la structure de données 100 dans la mémoire non volatile, les différents champs de la structure de données 100 peuvent avantageusement être agencés de plusieurs manières. Dans une première mise en œuvre, telle qu’illustrée sur la figure 1, la structure de données 100 est agencée de sorte que : - la pluralité de champs de données 110 occupe un premier espace mémoire E1, et - la pluralité de champs de hachage local 120 et le champ de hachage global 130 occupent un deuxième espace mémoire E2, et de sorte que le premier espace mémoire E1 et le deuxième espace mémoire E2 sont contigus entre eux. Dans une deuxième mise en œuvre, telle qu’illustrée sur la figure 2, la structure de données 100 est agencée de sorte que : - chaque champ de données 110 et chaque champ de hachage associé 120 sont contigus entre eux, - la pluralité de champs de données 110 et la pluralité de champs de hachage local associée 120 occupent un premier espace mémoire E1, et - le champ de hachage global 130 occupe un deuxième espace mémoire E2, et de sorte que le premier espace mémoire E1 et le deuxième espace mémoire E2 sont contigus entre eux. Dans un premier exemple des mises en œuvre précédentes, on peut agencer le champ de mise à jour 140 dans le premier espace mémoire E1. Dans un deuxième exemple des mises en œuvre précédentes, on peut agencer le champ de mise à jour 140 dans le deuxième espace mémoire E2. En référence à la figure 3, l’invention couvre également un procédé 200 de mise à jour d’un logiciel, que l’on appellera logiciel préexistant, d’un calculateur d’un véhicule automobile à partir d’un logiciel, que l’on appellera logiciel futur. Dans ce cas, le logiciel préexistant et le logiciel futur sont mis en œuvre dans une structure de données 100 selon l’invention, telle que décrite plus haut. Dans une étape 210, on obtient, à partir au moins du logiciel futur, une information qui indique un mode de mise à jour du logiciel préexistant. Dans une première mise en œuvre particulière, l’étape 210 d’obtention comprend une étape 211 de lecture du champ de mise à jour 140 du logiciel futur. Dans une deuxième mise en œuvre particulière, l’étape 110 d’obtention comprend, - une étape 212 de comparaison pour déterminer un taux de différence entre la pluralité de champs de données 110 du logiciel préexistant et la pluralité de champs de données 110 du logiciel futur, et - une étape 213 de définition de l’information qui indique le mode de mise à jour du logiciel préexistant à partir d’une comparaison entre le taux de différence et un taux de différence prédéterminé. Dans le cadre de l’étape 212, prenons l’exemple d’un logiciel préexistant et un logiciel futur qui comprennent chacun comprenant quatre champs de données 110, et dans lequel un seul champ de données 110 est différent entre le logiciel préexistant et le logiciel futur. Dans ce cas, le taux de différence sera de 25 % (i.e., 1/4 = 0,25). Toujours dans le cadre de l’étape 212, prenons un exemple d’un logiciel préexistant et un logiciel futur qui comprennent chacun dix champs de données 110, et dans lequel sept champs de données 110 sont différents entre le logiciel préexistant et le logiciel futur. Dans ce cas, le taux de différence sera de 70 % (i.e., 7/10 = 0,7). Dans le cadre de l’étape 213, le taux de différence prédéterminé peut être considéré comme un seuil qui permet de définir l’information qui indique le mode de mise à jour. Par exemple, on peut prévoir que le mode de mise à jour est du type « incrémentale » lorsque le taux de différence est inférieur au taux de différence prédéterminé. De même, on peut prévoir que le mode de mise à jour est du type « total » lorsque le taux de différence est supérieur au taux de différence prédéterminé. Ainsi, on peut choisir la valeur du taux de différence prédéterminé selon que l’on considère que la quantité de différences entre les champs de données 110 du logiciel préexistant et du logiciel futur nécessitent une mise à jour incrémentale ou une mise à jour totale. De retour à la figure 3, dans une étape 220, on met à jour le logiciel préexistant à partir du logiciel futur en fonction de l’information qui indique le mode de mise à jour du logiciel préexistant. Dans une première mise en œuvre particulière, l’étape 220 de mise à jour comprend : - une étape 221 de comparaison de la pluralité de champs de hachage local 120 du logiciel préexistant avec la pluralité de champs de hachage local 120 du logiciel futur, et - une étape 222 de remplacement d’au moins chaque champ de données 110 du logiciel préexistant par le champ de données associé 110 du logiciel futur, pour lequel le résultat de la comparaison indique au moins une différence entre le champ de données 110 du logiciel préexistant et le champ de données associé 110 du logiciel futur. Ainsi, la première mise en œuvre particulière permet de réaliser une mise à jour incrémentale du logiciel préexistant. Dans un exemple, l’étape 222 de remplacement peut comprendre une étape préalable (non représentée) d’effacement du champ de données 110 du logiciel préexistant. Par ailleurs, l’étape 222 de remplacement peut comprendre une étape (non représentée) de remplacement du champ de hachage local 120 du logiciel préexistant par le champ de hachage local associé 120 du logiciel futur. Dans une deuxième mise en œuvre particulière, l’étape 220 de mise à jour comprend : - une étape 223 de comparaison du champ de hachage global 130 du logiciel préexistant avec le champ de hachage global 130 du logiciel futur, et - une étape 224 de remplacement d’au moins la pluralité de champs de données 110 du logiciel préexistant par la pluralité de champs de données 110 du logiciel futur, lorsque le résultat de la comparaison indique une au moins une différence entre le champ de hachage global 130 du logiciel préexistant et le champ de hachage global 130 du logiciel futur. Ainsi, la deuxième mise en œuvre particulière permet de réaliser une mise à jour totale du logiciel préexistant. Dans un exemple, l’étape 224 de remplacement peut comprendre une étape (non représentée) préalable d’effacement du champ de données 110 du logiciel préexistant. Par ailleurs, l’étape 224 de remplacement peut comprendre une étape (non représentée) de remplacement du champ de hachage local 120 du logiciel préexistant par le champ de hachage local associé 120 du logiciel futur. Enfin, l’invention couvre aussi un véhicule automobile qui met en œuvre le procédé 200. Comme indiqué plus haut, le véhicule automobile comprend un calculateur électronique qui incorpore un logiciel pour permettre son fonctionnement. En outre, le calculateur comprend au moins une mémoire non volatile partitionnée en une pluralité de secteurs de mémoire de taille égale. Enfin, le logiciel comprend une pluralité de portions de code binaire. La structure de données 100 selon l’invention permet donc de faciliter la mise à jour d’un logiciel d’un calculateur d’un véhicule automobile dans toutes configurations possibles : - mise à jour d’un logiciel préexistant vers un logiciel futur qui comprend des modifications mineures, et - mise à jour d’un logiciel préexistant vers un logiciel futur qui comprend des modifications majeures. Structure de données (100) pour la mise à jour d’un logiciel d’un calculateur d’un véhicule automobile, le calculateur comprenant au moins une mémoire non volatile partitionnée en une pluralité de secteurs de mémoire de taille égale, le logiciel comprenant une pluralité de portions de code binaire, ladite structure de données (100) comprenant : - une pluralité de champs de données (110), chaque champ de données (110) étant configuré pour stocker au moins une portion de code binaire, - une pluralité d’un premier champ de hachage (120), dit champ de hachage local, chaque champ de hachage local (120) étant associé de manière bijective à un champ de données (110), chaque champ de hachage local (120) étant, en outre, configuré pour stocker une première valeur de hachage produite en effectuant un calcul de hachage sur le contenu du champ de données associé (110), et - un deuxième champ de hachage (130), dit champ de hachage global, configuré pour stocker une deuxième valeur de hachage produite en effectuant un calcul de hachage sur au moins le contenu de la pluralité de portions de code, dans laquelle la taille de chaque champ de données (110) est un multiple de la taille d’un secteur de mémoire. Structure de données selon la revendication 1, comprenant en outre un champ de mise à jour (140) configuré pour stocker une information indiquant un mode de mise à jour choisit parmi : une mise à jour incrémentale et une mise à jour totale. Structure de données selon l’une quelconque des revendications 1 à 2, qui, lorsqu’on stocke la structure de données (100) dans la mémoire non volatile, la structure de données (100) est agencée de sorte que : - la pluralité de champs de données (110) occupe un premier espace mémoire (E1), et - la pluralité de champs de hachage local (120) et le champ de hachage global (130) occupent un deuxième espace mémoire (E2), et de sorte que le premier espace mémoire (E1) et le deuxième espace mémoire (E2) sont contigus entre eux. Structure de données selon l’une quelconque des revendications 1 à 2, qui, lorsqu’on stocke la structure de données (100) dans la mémoire non volatile, la structure de données (100) est agencée de sorte que : - chaque champ de données (110) et chaque champ de hachage associé (120) sont contigus entre eux, - la pluralité de champs de données (110) et la pluralité de champs de hachage local associée (120) occupent un premier espace mémoire (E1), et - le champ de hachage global (130) occupe un deuxième espace mémoire (E2), et de sorte que le premier espace mémoire et le deuxième espace mémoire sont contigus entre eux. Procédé (200) de mise à jour d’un logiciel, dit logiciel préexistant, d’un calculateur d’un véhicule automobile à partir d’un logiciel, dit logiciel futur, le logiciel préexistant et le logiciel futur étant mis en œuvre dans une structure de données (100) selon l’une quelconque des revendications 1 à 4, le procédé comprenant les étapes suivantes : - obtention (210), à partir au moins du logiciel futur, d’une information indiquant un mode de mise à jour du logiciel préexistant, et - mise à jour (220) du logiciel préexistant à partir du logiciel futur en fonction de l’information indiquant le mode de mise à jour du logiciel préexistant. Procédé selon la revendication 5, dans lequel l’étape d’obtention (210) comprend une étape de lecture (211) du champ de mise à jour (140) du logiciel futur. Procédé selon la revendication 5, dans lequel l’étape d’obtention (210) comprend, - une étape de comparaison (212) pour déterminer un taux de différence entre la pluralité de champs de données (110) du logiciel préexistant et la pluralité de champs de données (110) du logiciel futur, et - une étape de définition (213) de l’information indiquant le mode de mise à jour du logiciel préexistant à partir d’une comparaison entre le taux de différence et un taux de différence prédéterminé. Procédé selon l’une quelconque des revendications 5 à 7 dans lequel, lorsque le mode de mise à jour correspond à une mise à jour incrémentale, l’étape de mise à jour (220) comprend : - une étape de comparaison (221) de la pluralité de champs de hachage local (120) du logiciel préexistant avec la pluralité de champs de hachage local (120) du logiciel futur, et - une étape de remplacement (222) d’au moins chaque champ de données (110) du logiciel préexistant par le champ de données associé (110) du logiciel futur, pour lequel le résultat de la comparaison indique au moins une différence entre le champ de données (110) du logiciel préexistant et le champ de données (110) du logiciel futur. Procédé selon l’une quelconque des revendications 5 à 7 dans lequel, lorsque le mode de mise à jour correspond à une mise à jour totale, l’étape de mise à jour comprend : - une étape de comparaison (223) du champ de hachage global (130) du logiciel préexistant avec le champ de hachage global (130) du logiciel futur, et - une étape de remplacement (224) d’au moins la pluralité de champs de données (110) du logiciel préexistant par la pluralité de champs de données (110) du logiciel futur, lorsque le résultat de la comparaison indique une au moins une différence entre le champ de hachage global (130) du logiciel préexistant et le champ de hachage global (130) du logiciel futur. Véhicule automobile mettant en œuvre le procédé (200) selon l’une des revendications 5 à 9, comprenant un calculateur électronique incorporant un logiciel, le calculateur comprenant au moins une mémoire non volatile partitionnée en une pluralité de secteurs de mémoire de taille égale, le logiciel comprenant une pluralité de portions de code binaire.