FR 2903791 A1 20080118 FR 0606408 A 20060713 2903791 La présente invention concerne un procédé de téléchargement d'un logiciel. DOMAINE TECHNIQUE La présente invention se rapporte au téléchargement de tout ou partie d'un module logiciel vers un ordinateur distant. Le module logiciel est par exemple un logiciel complet ou encore un ou plusieurs fichiers. 10 TECHNIQUE ANTERIEURE Les aéronefs comprennent de nombreux calculateurs embarqués pour lesquels il est nécessaire de changer, modifier ou faire évoluer les logiciels pour des raisons diverses, telles que par exemple : 15 pour corriger des erreurs dans le cadre de la maintenance; pour adapter les programmes, les mettre à jour au travers de nouvelles versions, dans le cadre de l'évolution des systèmes; pour tester des modules logiciels dans le but de mettre au point le calculateur ou toute autre unité électronique dans le cadre des essais. 20 Pour ce faire, selon un premier mode opérationnel, les calculateurs sont extraits de l'aéronef et transportés jusqu'au service en charge de la maintenance (des essais ou autre) pour opérer sur le logiciel desdits calculateurs. Les calculateurs sont ensuite à nouveau acheminés jusqu'à l'avion. 25 Les inconvénients de telles manipulations sont multiples. La nécessité de déplacer les calculateurs est contraignante. Elle fait perdre du temps en particulier pour les opérations de maintenance pour lesquelles le temps dévolu est critique. L'aéronef doit être opérationnel dans des délais extrêmement serrés. De plus, 30 après la remise en place du calculateur, des problèmes peuvent subsister, des ajustements peuvent être nécessaires ce qui oblige à des allers-retours coûteux à tout point de vue. 2903791 2 Toutes ces manipulations augmentent les coûts de production et de livraison des logiciels des équipementiers. Selon un deuxième mode opérationnel, les équipes de maintenance, essai ou autres montent à bord de l'avion pour accéder au calculateur dont il faut modifier la mémoire. Dans ce mode, le calculateur comprend une cartouche mémoire extractible. Les équipes remplacent alors la cartouche mémoire sans avoir à déplacer le calculateur. Les inconvénients en résultant sont de même nature : perte de temps, déplacements supplémentaires en vue d'ajustements ... Selon un troisième mode opérationnel, les logiciels sont remplacés ou modifiés par téléchargement. Le procédé de téléchargement consiste à les remplacer par écrasement. Le nouveau logiciel est programmé dans la même zone mémoire que le logiciel préexistant. Le nouveau logiciel prend la place du logiciel préexistant. Si un problème survient lors du téléchargement, il n'est plus possible de poursuivre l'exécution du logiciel préexistant ni d'exécuter le nouveau logiciel. Il est nécessaire de procéder à un nouveau téléchargement ou d'utiliser le premier mode opérationnel. Le troisième mode opérationnel n'offre pas la souplesse et la rapidité escompté par le téléchargement. Les problèmes sont équivalents pour toute unité de traitement de données embarquées nécessitant maintenance, mise au point et/ou mise à jour. Les problèmes peuvent par exemple se retrouver dans le domaine de l'automobile, dans le domaine spatial ou ferroviaire. 30 Un but de la présente invention est de proposer un procédé plus souple, plus simple et plus rapide de modification des modules logiciels contenus dans les 2903791 3 unités électroniques embarqués et plus fiable que les procédés de téléchargement existants. EXPOSE DE l'INVENTION 5 Pour ce faire, la présente invention propose un procédé de téléchargement d'un module logiciel dans une unité de traitement de l'information, caractérisé en ce qu'il comprend les étapes consistant à stocker le module logiciel téléchargé dans une zone de mémoire de 10 téléchargement différente d'une zone d'exécution dans laquelle un module logiciel courant s'exécute ; définir comme nouvelle zone d'exécution ladite zone de téléchargement. 15 De cette manière, le téléchargement s'effectue de manière rapide et sure au travers d'une dissociation des zones de stockage et d'exécution du module logiciel courant et du module logiciel téléchargé. Le présent procédé permet également de conserver le module logiciel courant en cas de problème lors du téléchargement : l'unité peut continuer à fonctionner. 20 Le procédé de téléchargement consiste à ne définir la nouvelle zone d'exécution qu'après un stockage réussi du module téléchargé. De cette manière, l'exécution de l'unité de traitement peut se poursuivre dans la zone d'exécution prédéfinie en cas de problème lors du téléchargement. Le procédé de téléchargement consiste à vérifier la réussite du stockage du module logiciel avant de définir la nouvelle zone d'exécution en vérifiant l'intégrité d'une valeur de contrôle CRC dudit module logiciel. 25 La présente invention consiste à définir la zone de mémoire d'exécution à l'aide d'une variable d'aiguillage. La définition de la nouvelle zone d'exécution est ainsi réalisée de manière simple. 2903791 4 Le procédé de téléchargement consiste au démarrage (la terme démarrage comprend un redémarrage) ou lors d'un réamorçage de l'unité, à lire la variable d'aiguillage et à lancer l'exécution du module logiciel contenu dans la 5 zone mémoire désignée par la variable d'aiguillage. Tant que l'unité n'est pas redémarrée ou réamorcée, l'exécution de l'unité de traitement peut se poursuivre même en cas de problème lors du téléchargement. Le procédé de téléchargement comprend une étape de vérification de 10 l'intégrité de la variable d'aiguillage avant le lancement de l'exécution du module logiciel désigné par celle-ci. La variable d'aiguillage est une valeur logique permettant de désigner la zone de mémoire d'exécution. Elle est codée en mémoire non volatile EEPROM 15 par une valeur physique. La valeur physique permet de détecter toute modification non souhaitée de la valeur logique. Selon une forme de réalisation particulière de réalisation, les valeurs physiques choisies pour la variable d'aiguillage sont suffisamment éloignées pour 20 en assurer une protection. De cette manière, la mise à jour de la variable est rapide et cette forme de réalisation particulière permet de détecter et de protéger la variable contre une corruption de quelque nature que ce soit. Les valeurs physiques assurent la détection d'une modification de la 25 variable d'aiguillage par un mécanisme de vote. Le mécanisme de vote est une autre forme de réalisation permettant de détecter une corruption de la variable d'aiguillage. Le procédé de téléchargement consiste à protéger en écriture la zone de 30 mémoire d'exécution (zone désignée par la variable d'aiguillage). Cette caractéristique renforce la fiabilité du procédé de téléchargement. 5 2903791 5 Le procédé de téléchargement consiste à utiliser un système d'adressage à base de code relogeable. Le module logiciel contient son identifiant. La présente invention concerne également le système de téléchargement comprenant une unité de traitement de l'information permettant de mettre en oeuvre ledit procédé de téléchargement ainsi que le programme d'ordinateur permettant de mettre en oeuvre ledit procédé. 10 DESCRIPTION SOMMAIRE DES DESSINS D'autres buts, avantages et caractéristiques de l'invention apparaîtront à la lecture de la description qui va suivre du dispositif selon l'invention, donné à 15 titre d'exemple non limitatif en référence aux dessins ci-annexés dans lesquels : • la figure 1 représente de manière schématique une unité électronique dans laquelle s'effectue le procédé de téléchargement selon la présente invention ; • les figures 2 et 3 représentent de manière schématique des étapes 20 du procédé selon la présente invention. MANIERE DE REALISER L'INVENTION La présente invention concerne un procédé de téléchargement d'un 25 module logiciel dans une unité électronique éloignée et par exemple une unité électronique embarquée. Un module logiciel comprend tout ou partie d'un logiciel, d'un ou plusieurs fichiers. Le terme fichier englobe tout composant d'un logiciel. Le module logiciel comprend du code exécutable et de manière optionnelle des données. Comme représenté sur la figure 1, une unité électronique 1 comprend au moins un microprocesseur 2 relié par un bus 3 interne à une mémoire non volatile 2903791 6 par exemple de type ROM, EEPROM 4, Flash 5 ou autre permettant de stocker un module 6 logiciel à exécuter, une mémoire 7 volatile de type RAM, des moyens 8 d'entrées/sorties pour communiquer avec l'extérieur et en particulier pour recevoir un module 10 logiciel. 5 Comme le montre la figure 1, la mémoire 5 FLASH comprend trois zones : une zone 9 dans laquelle le module 6 logiciel courant installé s'exécute, appelée zone de mémoire FLIP ; une zone 11 de stockage du module 10 logiciel téléchargé, appelée 10 zone de mémoire FLOP dans laquelle le module 10 logiciel s'exécute après basculement de la zone d'exécution de la mémoire FLIP à la mémoire FLOP; une zone 12 de contrôle du démarrage d'un logiciel 6 ou 10 en mémoire FLIP ou FLOP, dans laquelle se trouve stocké un logiciel de 15 contrôle du démarrage comprenant une fonction d'aiguillage vers la zone 9 ou 11 d'exécution du module logiciel 6 ou 10. La fonction d'aiguillage travaille avec une variable d'aiguillage 13. La variable d'aiguillage désigne la zone d'exécution. 20 Le procédé de téléchargement selon la présente invention comprend les étapes suivantes : - stockage du module 10 logiciel dans la zone 11 de téléchargement ; - basculement de la zone d'exécution de la zone 9 vers la zone 11 de téléchargement. 25 Dans la présente invention, le logiciel s'exécute dans la zone 9 d'exécution FLIP. Lorsqu'un utilisateur souhaite télécharger un module 10 logiciel dans l'unité 1, il transmet ledit module à l'unité 1 par tout type de moyen connu et par exemple par réseau éthernet, AFDX, RS232, ARINC 429 ou autre. L'utilisateur transmet 30 également une valeur de contrôle d'intégrité du module logiciel, appelé sur la figure 1, CRC. La valeur de contrôle est intégrée, dans la forme de réalisation décrite, dans le module logiciel. La valeur de contrôle présente tout type de forme 2903791 7 connue. Elle consiste par exemple en une fonction de hachage du module logiciel permettant d'obtenir l'empreinte CRC : la modification d'un seul bit du module logiciel entraîne une modification de l'empreinte. 5 Le procédé selon la présente invention consiste à enregistrer le module 10 reçu au travers des moyens 8 d'entrée/sortie dans une zone 11 FLOP de la mémoire différente de la zone 9 d'exécution. Lorsque l'enregistrement du module 10 logiciel dans la zone 11 est terminé, 10 le microprocesseur 2 vérifie l'intégrité du module 10 stocké. Le microprocesseur recalcule la valeur de contrôle CRC et compare la valeur obtenue à partir du module logiciel stocké dans la zone 11 avec la valeur de contrôle CRC reçue. Si ces valeurs diffèrent, le téléchargement n'a pas été exécuté correctement. L'unité 1 se met en mode panne. Le mode panne se traduit par la visualisation d'un 15 voyant indiquant la mauvaise exécution du téléchargement, l'envoi ou la visualisation d'un message d'erreur et/ou l'enregistrement dans une zone de la mémoire d'un code représentatif de cette exécution incorrecte. L'unité continue à fonctionner avec le module logiciel 6 dans la zone 9. 20 Si les valeurs de contrôle sont identiques, cela signifie que le téléchargement s'est déroulé et achevé correctement : le téléchargement a réussi. Dans ce cas, le procédé selon la présente invention consiste à basculer l'exécution de la zone 9 FLIP à la zone 11 FLOP. Le procédé utilise la variable 13 d'aiguillage stockée en mémoire non volatile pour effectuer le basculement. La 25 variable 13 désigne la zone d'exécution du logiciel contenu dans l'unité 1 ; elle indique directement ou indirectement son adresse d'exécution. Lorsque le téléchargement a réussi, le procédé consiste à modifier la variable d'aiguillage pour désigner une nouvelle zone d'exécution, la zone 11 FLOP. 30 Selon une forme particulière de l'invention, la variable 13 est vue comme une valeur logique X et codée en mémoire non volatile 4 EEPROM comme une valeur physique Y. La valeur logique représente la zone de mémoire d'exécution 2903791 8 à savoir dans notre exemple soit la zone FLIP soit la zone FLOP. La valeur logique peut être déduite de la valeur physique par exemple par une fonction X=f(Y). La valeur physique assure la détection de toute modification non désirée de la variable 13. 5 Selon une première forme illustrative de réalisation, la variable 13 présente deux valeurs physiques VI et V2 : les valeurs physiques sont choisies de manière que lorsqu'un (ou plusieurs) bit(s) de la valeur V1 est (sont) modifié(s) par corruption, les deux valeurs VI et V2 sont suffisamment éloignées l'une de l'autre 10 pour que la valeur corrompue ne corresponde pas à la valeur V2. Si les valeurs VI et V2 comprennent chacune un unique bit, à savoir par exemple 1 pour VI et 0 pour V2, la taille de la variable étant très faible (1 bit), la mise à jour de la variable est très rapide. En revanche, la protection offerte est 15 nulle puisque si l'unique bit de VI est modifié, la valeur V1 prend la valeur de V2 ce qui n'est évidemment pas souhaitable. Plus le nombre de bits des valeurs VI et V2 augmentent, plus la vitesse de mise à jour augmente mais plus la protection offerte est importante. Il faut donc 20 choisir une taille optimum suivant les spécifications et les contraintes de l'environnement. Selon une forme de réalisation particulière, la variable 13 a une taille de 1 octet pour une mise à jour rapide. Il est possible par exemple de prendre 25 pour VI la valeur 69 en hexadécimal à savoir en binaire 0110 1001, et pour V2 la valeur C3 en hexadécimal à savoir en binaire 1100 0011. Si le premier bit de V1 passe à 1 par erreur, la valeur obtenue ne correspond pas à V2. Dans cette forme illustrative de réalisation, par des formes binaires choisies, les valeurs physiques permettent de protéger les valeurs enregistrées contre toute 30 corruption. 2903791 9 Dans ce cas, les valeurs logiques se déduisent des valeurs physiques par une fonction de correspondance : A 69, correspond la zone FLIP ; A C3, correspond la zone FLOP. 5 Dans la première forme illustrative, la valeur physique est un drapeau désignant la zone d'exécution. Si la valeur physique de la variable 13 a pour valeur 69, la zone d'exécution est la zone FLIP. La valeur logique correspondant à la valeur physique peut être obtenue de manière logicielle ou matérielle, quelle 10 que soit la forme illustrative. De manière logicielle, il est programmé dans la zone 12 l'identification ou l'adresse ou tout autre élément permettant de se brancher à la zone correspondante. Si la valeur logique de la variable 13 correspond à la mémoire 15 FLIP, le logiciel de contrôle fait correspondre à cette valeur logique le branchement à la zone de mémoire FLIP. De manière matérielle, le logiciel de contrôle lit la valeur logique de la variable 13 ; un registre matériel est programmé pour adresser la mémoire en 20 correspondance avec la valeur logique. En cas de problème d'intégrité sur la variable 13, le registre est affecté à la valeur de la zone d'exécution par défaut, à savoir la mémoire FLIP. Dans le cas où la valeur physique ne correspondrait pas à la valeur 25 attendue, la valeur physique permet la détection d'une modification de la variable 13 et la mise en mode panne. Selon une deuxième forme illustrative de la variable 13, la valeur physique de la valeur 13 offre une détection de toute corruption par un mécanisme de vote. 30 La valeur physique pourrait par exemple consister en la valeur 69/69/69. 2903791 10 Pour effectuer un vote, le procédé consiste à comparer les trois valeurs : si les trois valeurs ou si deux d'entre elles sont équivalentes, il est considéré que la valeur VI correspond bien à la zone d'exécution correspondante (de la même façon que dans la première forme illustrative). Dans le cas contraire, le procédé 5 prend la valeur de la zone d'exécution courante FLIP 6 par défaut et se met en mode panne. Comme vu précédemment, la variable 13 est mise à jour de manière très rapide (pour réduire la section critique) à la fin du téléchargement du module 10 logiciel 10. Tant que le module 10 n'a pas été entièrement téléchargé, la variable 13 reste inchangé. De cette manière, le calculateur peut continuer à tourner avec le module 6 logiciel tant que le module 10 n'a pas été correctement installé, en particulier en cas d'échec ou de pertes de configuration au cours d'un téléchargement du à une coupure d'alimentation ou autre. Lorsque le 15 téléchargement est achevé, le microprocesseur 2 modifie la valeur de la variable 13 pour qu'elle désigne la zone 11 de téléchargement : si l'on considère la première forme illustrative, la variable 13 prend alors la valeur C3. Le basculement du module courant au module téléchargé est donc très rapide : il dure le temps de modifier la variable d'aiguillage ainsi que le temps de redémarrage. En effet, pour 20 prendre le changement en compte, un redémarrage (mise sous tension ou réamorçage) est nécessaire pour que la nouvelle zone d'exécution soit prise en compte. Pour ce faire, il faut que les instructions de redémarrage (logiciel de contrôle du démarrage) contenues dans la zone 12 soient déroulées : ce sont ces instructions qui définissent la zone d'exécution. Tant que l'unité n'est pas 25 redémarrée, l'exécution se poursuit dans une même zone d'exécution. Lors de la mise sous tension de l'unité 1 ou lors d'un réamorçage de ladite unité ( reboot ou reset en anglais), le logiciel de contrôle du démarrage contenu dans la mémoire 12 qui n'a pas été modifié par le téléchargement lit la 30 variable 13 pour définir la zone d'exécution du logiciel. Le logiciel de contrôle de démarrage vérifie la valeur physique de la variable 13 lue en mémoire 4. 5 2903791 11 Dans la première forme illustrative, le logiciel de contrôle vérifie la valeur physique pour détecter une éventuelle modification par corruption ou autre. Dans la deuxième forme, le logiciel de contrôle déroule le mécanisme de vote et décide si la valeur a été corrompue ou non. Si une modification non souhaitée est détectée, le microprocesseur se met en mode panne et poursuit l'exécution du module logiciel 6. Si aucune modification non souhaitée de la variable 13 n'a été détectée, 10 l'exécution du module logiciel stocké dans la zone désignée par ladite valeur peut démarrer. Comme déjà vu précédemment pour la variable 13, le procédé selon la présente invention utilise un mécanisme d'adressage avec un système de code 15 relogeable (adressage relatif ou mécanisme matériel) pour permettre l'exécution d'un module logiciel téléchargé à une adresse différente du module logiciel courant. Selon une forme de réalisation particulière de l'invention, l'identifiant du 20 module 6, 10 logiciel est intégré au module proprement dit. Si l'on stocke l'identifiant en mémoire EEPROM après le téléchargement, cela prend du temps et l'identifiant peut être modifié en cas de problème. Selon la présente invention, l'identifiant du module 10 logiciel est stocké dans la zone FLIP ou FLOP et il correspond au bon identifiant. 25 Les figures 2 et 3 illustrent de manière détaillée le procédé selon la présente invention. Comme le montre la figure 2, la variable 13 d'aiguillage a pour valeur 30 logique la zone 9 mémoire FLIP ; elle désigne la zone 9 comme zone d'exécution du module 6 logiciel, appelé Log sur la figure 2, contenu dans celle-ci. Au démarrage ou lors de tout réamorçage, le logiciel de contrôle du démarrage 2903791 12 contenu dans la zone 12, appelé boot sur la figure 2, comporte la fonction d'aiguillage vers le module à exécuter. Le logiciel boot vérifie la valeur physique de la variable 13, déduit la valeur logique (étape A) et lance le module 10 logiciel (étape B) si la valeur physique est correcte. Si la valeur physique n'est pas 5 correcte (coupure électrique pendant l'écriture, zone de mémoire dégradée ...), le procédé exécute par défaut le logiciel courant en mémoire FLIP mais part en mode panne. Le logiciel de contrôle boot comprend un minimum d'instructions non téléchargeables de manière à limiter les problèmes logiciels obligeant à transporter l'unité vers un service de maintenance. 10 Selon une forme de réalisation particulière de l'invention, la zone d'exécution, à savoir dans le cas présent, la zone 9 de la mémoire est protégée en écriture pour éviter toute corruption des données par tout type de moyen connu et par exemple à l'aide d'un mécanisme matériel empêchant l'écriture à certaines 15 adresses ou d'un mécanisme logiciel de masquage d'adresse. II n'est plus possible d'écrire dans cette zone tant qu'elle est désignée par la variable d'exécution comme zone d'exécution. Lorsqu'un utilisateur souhaite remplacer ou modifier le module 6 logiciel 20 dans l'unité 1, il transmet par tout type de moyen connu le module 10 logiciel, appelé Nlog sur la figure 3, à l'unité 1. Lorsque l'unité et plus particulièrement les moyens d'entrée/sortie 8 de l'unité reçoivent le nouveau module 10, celui-ci est stocké dans la zone 11 de la mémoire. Lorsque le module 10 logiciel reçu est entièrement programmé dans la zone 11 (étape C), la valeur physique de la 25 variable 13 d'aiguillage est mise à jour (étape D). La variable d'aiguillage modifiée désigne la zone 11 de la mémoire comme zone d'exécution. Si le téléchargement a été défectueux pour des raisons diverses telles qu'une interruption de transfert sur le réseau, un problème d'écriture en Flash ou autre, une coupure d'alimentation, la variable d'aiguillage n'est pas modifiée. Cependant, l'unité 30 fonctionne toujours sur la base du logiciel courant en mémoire FLIP. 2903791 13 Lors d'un démarrage (pouvant être un redémarrage) ou réamorçage de l'unité, le logiciel boot lit la variable d'aiguillage qui désigne la mémoire FLOP 11. Le logiciel boot lance le logiciel contenu dans la mémoire FLOP (Etape E). Le procédé opère le basculement d'un module logiciel à un autre en fonction de la 5 variable d'aiguillage. De cette manière, le téléchargement est fiable, rapide et simple. Le logiciel exécutable est transmis dans son ensemble évitant toute manipulation intermédiaire : ainsi, la disponibilité de l'unité n'est que très peu affectée. La 10 fiabilité est assurée notamment au travers de la variable d'aiguillage. 15 20 25 REVENDICATIONS 1- Procédé de téléchargement d'un module (10) logiciel dans une unité (1) de traitement de l'information, caractérisé en ce qu'il comprend les étapes 5 consistant à stocker le module (10) logiciel téléchargé dans une zone (11) de mémoire de téléchargement différente d'une zone (9) d'exécution dans laquelle un module (6) logiciel courant s'exécute ; définir comme nouvelle zone d'exécution ladite zone (11) de 1 o téléchargement. 2- Procédé selon la revendication 1, caractérisé en ce qu'il consiste à ne définir la nouvelle zone d'exécution qu'après un stockage réussi du module (10) téléchargé. 3- Procédé selon l'une des revendications précédentes, caractérisé en ce qu'il consiste à définir la zone de mémoire d'exécution à l'aide d'une variable (13) d'aiguillage. 20 4- Procédé selon la revendication 3, caractérisé en ce qu'il consiste, au démarrage ou lors d'un réamorçage de l'unité (1), à lire la variable d'aiguillage (13) et à lancer l'exécution du module (10) logiciel contenu dans la zone mémoire désignée par la variable d'aiguillage. 25 5- Procédé selon l'une des revendications 3 ou 4, caractérisé en ce que la variable d'aiguillage est une valeur logique permettant de désigner la zone de mémoire d'exécution et codée en mémoire 4 par une valeur physique. 6- Procédé selon l'une des revendications 1 à 5, caractérisé en ce que 30 consiste à protéger en écriture la zone de mémoire d'exécution (9 ou 11). 7- Procédé selon l'une des revendications 1 à 6, caractérisé en ce qu'il 15 2903791 15 consiste à utiliser un système d'adressage à base de code relogeable. 8 û Procédé selon l'une des revendications 1 à 7, caractérisé en ce que le module (6, 10) logiciel contient son identifiant. 9- Système de téléchargement comprenant une unité (1) de traitement de l'information permettant de mettre en oeuvre le procédé de téléchargement selon l'une des revendications 1 à8. 10 û Programme d'ordinateur chargeable sur une unité (1) de traitement de l'information comprenant des séquences d'instructions pour mettre en oeuvre le procédé selon l'une des revendications 1 à 8, lorsque le programme est chargé sur l'unité et y est exécuté.15