FR 3092676 A1 20200814 FR 1901424 A 20190213 Description Titre de l'invention : Procédé de mise à jour d'un calculateur au- tomobile de façon à lui ajouter une fonctionnalité supplémentaire [0001] L'invention concerne un procédé et un système de téléchargement d'au moins un fichier dans un ou plusieurs calculateurs. [0002] Dans la suite (le cette description, lorsque le fichier à télécharger contient des ins- tructions ou le code exécutable d'un logiciel, on parle également de téléchargement d'un logiciel. [0003] La complexité croissante de la fonction électronique embarquée entraîne une multi- plication des boîtiers électroniques (ou calculateurs) montés sur les véhicules automobiles. [0004] Afin de limiter la diversité qui en résulte, il a été décidé de reporter, lorsque cela est possible, la diversité matérielle sur le logiciel et de pratiquer un téléchargement de ces calculateurs. [0005] L'opération de téléchargement est réalisée moyennant un outil débarqué qui se connecte sur la prise diagnostic du véhicule et permet de programmer dans la mémoire du ou des calculateurs, un logiciel qui assure un fonctionnement conforme du véhicule produit en prenant en compte les caractéristiques (motorisation, options) propres à ce véhicule. [0006] On rappelle que dans l'industrie automobile, principalement deux types de cal- culateurs sont utilisés : [0007] - Les premiers permettent de développer les calculateurs multifonctions : moteur (CM M), de boite de vitesses automatique (BVA), de coeur d'architecture (BSI, VSM). Sur ces calculateurs, le code logiciel est exécuté directement depuis un composant flash cprom. De plus, tous les liens vers la mémoire sont réalisés lors de la compilation du logiciel. On parle ici de liens statiques. H s'agit par exemple des calculateurs reposant sur une architecture logicielle de type OSEK / AUTOSAR. - Les seconds, sont notamment intégrés dans des automobiles qui disposent de larges écrans d'affichage (NAC, RCC, ...) et de connectivité (BTA / BSRF). Ces calculateurs reposent sur des technologies très différentes, issues de l'électronique grand public et disposent en particulier de plateformes logicielles de type Linux ou Windows. Ces dernières permettent notamment l'accueil d'application « autonomes » développées par ailleurs. Sur ces plateformes, les liens mémoires sont établis en dynamique, et une application est d'abord chargée dans la RAM du calculateur avant son exécution. [0008] Le premier type de calculateur (OSEK / AUTOSAR) est moins cher, adapté au support des contraintes de type sécurité automobile (par exemple : temps de reset 2 réduit, vitesse d'exécution mémoire), mais n'offre pas la souplesse d'accueil de nouvelles fonctionnalités pendant la vie série du logiciel. Il n'est, par exemple, pas possible d'accueillir un nouveau module non prévu à l'origine du projet. [0009] Le second type de calculateur (LINUX / WINDOWS) s'apparente à ce que nous pouvons retrouver sur un PC. Il est particulièrement adapté à l'exécution d'IHM graphique complexe et offre la souplesse d'intégration d'applications diverses (divertissement ou conduite responsable en indiquant par exemple les consommations du véhicule) niais à un coût non compatible d'une généralisation à l'ensemble des calculateurs d'une automobile et surtout inadapté à la prise en compte de l'ensemble des contraintes automobiles (en particulier la sécurité routière). [0010] L'objectif de l'invention est de proposer un procédé et système permettant d'apporter la souplesse d'évolution du second type de calculateur sur les calculateurs du premier type (OSEK / AUTOSAR) sans dégradation sur leur capacité à prendre en compte les contraintes essentielles se rapportant à la sécurité routière en tenant compte des contraintes économiques du monde automobile. [0011] On connaît déjà dans l'état de la technique des procédés et des systèmes de télé- chargement de fichiers dans des calculateurs embarqués à bord de véhicules automobiles, tels que ceux décrits par exemple dans le document FR2719924. Ce document détaille différentes étapes successives d'une procédure utilisée lors de l'assemblage des véhicules ou dans le réseau après-vente d'un constructeur, lors de la correction d'une prestation par échange de fichier. [0012] Cependant, l'accueil de nouvelles fonctionnalités embarquées poussent à des tailles mémoires embarquées et des besoins en temps de téléchargement de ces mémoires de plus en plus grands. [0013] Le but de l'invention est donc d'apporter un moyen complémentaire à un changement d'architecture véhicule (modification de la technologie des réseaux de communication internes) permettant de réduire le temps de mise à jour du logiciel d'un calculateur du premier type (par exemple OSEK / AUTOSAR) en ne reprogrammant qu'une partie du logiciel. [0014] Elle propose plus précisément à cet effet un procédé de mise à jour d'un calculateur automobile de façon à lui ajouter une fonctionnalité supplémentaire, ledit calculateur comportant une mémoire de démarrage comprenant une procédure de démarrage et une mémoire applicative stockant au moins un premier module applicatif (Module2), ledit premier module applicatif comportant des liens statiques vers ladite mémoire applicative, [0015] Caractérisé en ce que, la procédure de démarrage comprend une partie comprenant une structure logicielle, ledit procédé comporte des étapes de : - Mise à jour de la structure logicielle, avec une nouvelle structure logicielle, 3 - Réinitialisation dudit calculateur et détection dans la nouvelle structure logicielle d'une donnée relative à un nouveau module applicatif, - Reprogrammation du premier module applicatif faisant appel à la fonctionnalité supplémentaire, - Ajout, dans la mémoire applicative, du nouveau module applicatif comportant la fonctionnalité supplémentaire, - Réinitialisation dudit calculateur. [0016] L'invention permet d'ajouter une nouvelle fonctionnalité développée sous la forme d'un module logiciel à un calculateur de type OSEK / AUTOSAR sans nécessiter une reprogrammation complète du logiciel du calculateur. [0017] L'invention permet aussi par conséquent de réduire significativement le temps de té- léchargement du calculateur que ce soit : - en usine (dans le cas d'une retouche ou d'une modernisation), - en après-vente dans le cas d'une correction de prestation ou d'ajout d'un nouveau service (vente d'une nouvelle fonction compatible d'un véhicule mais non prévue à - chez le client final dans le cadre du développement du téléchargement OTA (Over The Air) en diminuant par la même occasion les coûts de télécommunication. [0018] Avantageusement, la structure logiciel comporte une adresse de début et une adresse de fin du premier module applicatif. La nouvelle structure logicielle comporte, en outre, une adresse de début et une adresse de fin du nouveau module. [0019] Avantageusement, en réponse à la détection de la donnée relative au nouveau module, il comprend en outre une étape de vérification d'une signature associée audit nouveau module et en l'absence de ladite signature, il comprend le téléchargement dudit nouveau module et de la signature associée. [0020] Avantageusement, l'étape de reprogrammation du premier module applicatif comporte une mise à jour de la signature associée audit premier module. [0021] Avantageusement, l'étape d'ajout du nouveau module comporte des étapes de : - écriture d'une signature associée audit nouveau module, - programmation du contenu dudit nouveau module, - validation dudit nouveau module en comparant une signature déterminée à partir dudit nouveau module signature associée audit nouveau module (Module 3). [0022] Avantageusement, la première partie du boot et la deuxième partie du boot appar- tiennent à deux segments de mémoire distincts. [0023] L'invention concerne aussi un programme d'ordinateur comportant des instructions pour mettre en oeuvre le procédé de mise à jour d'un calculateur automobile selon l'invention, lorsqu'il est exécuté sur un ou plusieurs processeurs. [0024] L'invention concerne aussi un dispositif d'assistance d'un conducteur d'un véhicule, comportant au moins un processeur et une mémoire caractérisé en ce qu'il est configure pour mettre en oeuvre le procédé de mise à jour selon l'invention. [0025] L'invention concerne aussi un véhicule caractérisé en ce qu'il comporte un dispositif selon l'invention. [0026] [fig.1] représente la structure simplifiée d'une mémoire d'un calculateur selon l'état de la technique [0027] [fig.2a] représente la structure simplifiée d'une mémoire d'un calculateur selon l'invention, avant une mise jour. [0028] [fig.2h] représente la structure simplifiée d'une mémoire d'un calculateur selon l'invention, après une mise jour de la deuxième partie du l'ont. [0029] [fig.2c] représente la structure simplifiée d'une mémoire d'un calculateur selon l'invention, après une reprogrammation du module faisant appel à une nouvelle fonctionnalité. [0030] [fig.2d] représente la structure simplifiée d'une mémoire d'un calculateur selon l'invention, après l'ajout d'un module contenant une nouvelle fonctionnalité. [0031] [fig.3] montre un logigramme représentant un procédé de mise à jour adapté à l'architecture selon l'invention. [0032] L'invention s'applique à des calculateurs permettant de développer les calculateurs multifonctions : moteur (CMM), de boite de vitesses automatique (BVA), de coeur d'architecture (BSI, VSM). Sur ces calculateurs, le code logiciel est exécuté directement depuis un composant flash eprom. De plus, tous les liens vers la mémoire sont réalisés lors de la compilation du logiciel. On parle ici de liens statiques. Il s'agit par exemple des calculateurs reposant sur une architecture logicielle de type OSEK / AUTOSAR. [0033] Un tel calculateur lorsqu'il est programmable est généralement constitué d'un composant flash eprom divisé en plusieurs segments : - Une premier segment appelé boot logiciel est celui qui permet au calculateur lors de sa mise sous tension d'initialiser ses registres et de vérifier qu'il dispose d'un contenu valide avant de basculer vers son logiciel applicatif (celui qui permet d'assurer la prestation demandée). Dans le cas où ce logiciel applicatif n'est pas valide (logiciel non encore téléchargé ou partiellement téléchargé), le pointeur programme doit rester dans la zone de boot en attente d'exécution de la procédure de mise à jour du logiciel manquant. La procédure de mise à jour du calculateur doit donc faire partie intégrante de ce boot , - Un ou plusieurs autres segments selon que le logiciel applicatif du calculateur puisse être téléchargé de manière monolithique ou par partie. On peut par exemple télécharger une partie dédiée à la calibration de manière indépendante au téléchargement du logiciel applicatif. [0034] La figure 1 représente la structure mémoire simplifiée de la flash eprom d'un cal- culateur 10 de type OSEK / AUTOSAR comportant une zone de hoot 11 contenant la procédure de mise à jour du logiciel applicatif (aussi appelé application), une zone de pour le logiciel applicatif et d'une partie calibration 13 téléchargeahles indépendamment l'une de l'autre. La zone de hoot 11 contient la procédure de mise àjour du logiciel applicatif et de la zone de calihration. Ce logiciel de hoot, n'étant pas lui-même téléchargeable. Des valeurs de Hash HS1 et Hash HC1 représentent respectivement les valeurs de signatures informatiques calculées au moyen par exemple d'un algorithme de type SHI, MD5 ou autre sur les zones du logiciel applicatif et de la calibration afin de vérifier leur intégrité au moment de la mise àjour. [0035] On rappelle que le contrôle d'intégrité consiste à fournir au calculateur la valeur de la signature (ex : Hash HS1 en référence) et de lui demander d'effectuer le calcul sur le contenu du code reçu et inscrit en mémoire (ex : logiciel applicatif) en utilisant le même algorithme que celui ayant servi à établir la valeur de référence. En comparant le résultat obtenu par le calcul avec la valeur de référence (Hash HS1 dans notre exemple), le calculateur est en mesure de déterminer si le logiciel mis àjour est valide ou non. [0036] Sur la hase de cette structure logicielle, pour que la calihration ou le logiciel ap- plicatif puisse être téléchargé indépendamment de l'autre, il convient d'avoir placé ces deux modules dans deux segments flash eprom différents. Pour pouvoir modifier le logiciel applicatif et ajouter par exemple une nouvelle fonction, il faudra développer un nouveau logiciel compris entre l'espace mémoire réservé à cet effet (défini au début du projet) et reprogrammer au minimum la totalité de la zone logiciel applicatif. En réalité, il conviendra de reprogrammer la totalité du logiciel et de la calibration étant admis qu'il semble difficile d'ajouter de nouvelles fonctions sans une part de calibration associée. [0037] Dans ce schéma, l'ajout d'une nouvelle fonctionnalité à un logiciel en vie série du produit (correction ou ajout d'une prestation) oblige sur un calculateur OSEK / AUTOSAR à reprogrammer la totalité de la mémoire dédiée au fonctionnement de l'organe (logiciel applicatif et calibration). [0038] La figure 2a montre un exemple d'une architecture de calculateur selon l'invention. Dans cette architecture, le logiciel applicatif est découpé en plusieurs module logiques. Le nombre atteignable de modules dépend de la taille de la mémoire flash eprom. A titre d'exemple, un microcontrôleur (pC) d'un calculateur de contrôle moteur embarque par exemple 10 Mo à 16 Mo de mémoire flash eprom. [0039] Dès lors, il est possible de découper le logiciel applicatif en une pluralité de modules disposés dans des segments ou page de la mémoire flash eprom différents afin de permettre leur programmation de manière indépendante. Chaque module disposant 6 d'une signature informatique (Hash HMx) permettant d'assurer de l'intégrité mémoire lors de la programmation d'un module. [0040] En outre, le logiciel de hoot du calculateur selon l'invention comprend deux partie : - La première partie du hoot (BOOT_1) comprend la procédure de mise à jour du calculateur et est livrée avec le calculateur, elle n'est pas reprogrammable au moyen d'outils utilisables en usine lors de la mise en service du calculateur ou en après-vente dans le cas d'une évolution logicielle. - La deuxième partie du hoot (BOOT_2) comprend la structure du logiciel fonctionnel (les adresses de début et de fin de chaque module programmable individuellement) et dont la mise à jour sera rendue possible par les outils client. Dans l'exemple de la figure 2a, la deuxième partie du boot (BOOT_2) comporte une adresse de début (M1V1) et une adresse de fin (M1V2) du Module 1 et une adresse de début (M2V1) et une adresse de fin (M2V2) du Module 2 [0041] De façon avantageuse, la première partie du hoot BOOT_1 et la deuxième partie du hoot BOOT_2 appartiennent à deux segments de la mémoire flash eprom distincts. Ceci permet d'assurer la sécurité et la robustesse du processus en particulier en sécurisant BOOT 1. [0042] La figure 3 montre un logigramme représentant un procédé de mise à jour adapté à l'architecture selon l'invention décrite ci-avant. [0043] Cc procédé de mise à jour selon l'invention comporte une étape de mise à jour de la deuxième partie du boot BOOT_2 avec une nouvelle structure logicielle. [0044] Cette première étape comprend la reprogrammation de la deuxième partie du boot BOOT_2 en ajoutant les adresses de début et de fin du nouveau module (celui qui contient la fonctionnalité à ajouter). [0045] La figure 2b représente la structure simplifiée d'une mémoire d'un calculateur selon l'invention, après une mise jour de la deuxième partie du boot. [0046] Dans l'exemple de la figure 2b, la deuxième partie du boot (BOOT_2) comporte à présent, outre les adresses précédentes, une adresse de début (M3V1) et une adresse de fin (M3V2) du Module 3. [0047] Le procédé de mise à jour selon l'invention comporte en outre une étape de réinitia- lisation du calculateur 200. [0048] Lors de la réinitialisation, le calculateur 200 détecte qu'un nouveau module 3 existe dans sa structure logicielle et qu'il n'est pas téléchargé car la valeur de Hash HM3 correspondant ne lui a pas été transmise (elle n'est pas inscrite dans la mémoire). Le calculateur est configuré pour considérer que le logiciel applicatif n'est pas dans un état fonctionnel et rester dans la première du boot BOOT_1 qui exécute alors la procédure de mise à jour du logiciel. [0049] Le procédé de mise à jour selon l'invention comporte en outre une étape de repro- 7 grammation du module faisant appel à la nouvelle fonctionnalité. [0050] La figure 2c représente la structure simplifiée d'une mémoire d'un calculateur selon l'invention, après la reprogrammation du module faisant appel à la nouvelle fonctionnalité. [0051] Supposons que ce soit le module 2 qui fasse appel (autrement dit comporte un lien statique 250 vers un segment de mémoire) à la nouvelle fonctionnalité (dont le code est dans le module 3). Dans ce cas, il conviendra de reprogrammer ce module 2 en incluant la (les) fonction(s) d'appel vers le module 3 et en écrivant la valeur Hash HM2.1 car cette valeur a évolué. [0052] Le procédé de mise à jour selon l'invention comporte en outre une étape d'ajout d'un module contenant la nouvelle fonctionnalité. [0053] La figure 2d représente la structure simplifiée d'une mémoire d'un calculateur selon l'invention, après l'ajout du module contenant la nouvelle fonctionnalité. Il s'agit du nouveau module décrit dans la deuxième partie du boot BOOT 2. [0054] Pour ajouter le module 3 contenant la nouvelle fonctionnalité, on commencera par écrire la valeur de Hash HM3 du module puis par programmer le contenu de cc module. Pour déclarer ce module valide, le calculateur comparera l'intégrité logicielle du contenu programmer avec la valeur de HM3. [0055] Le procédé de mise à jour selon l'invention comporte en outre une étape de réinitia- lisation (Reset) du calculateur 200. [0056] Lors de la réinitialisation (aussi appelé reset), le calculateur vérifie que l'ensemble des modules nécessaires au bon fonctionnement de l'organe piloté sont bien programmé (en fonction de la description attendue dans le module BOOT_2). [0057] Avec ce procédé, et en reprenant l'exemple, seul le module 2 est reprograrmrd que le module 2 et seul le module 3 est ajouté pour disposer d'une nouvelle fonctionnalité attendue plutôt que de reprogrammer la totalité du calculateur, ce qui correspond bien à un temps réduit de programmation pat- rapport à la situation initiale. 8 [Revendication 1]