Brevet FR3119254A1 — publié le 20220729

L’invention concerne un procédé de mise à jour d’un logiciel, pour un micro-processeur (1) d’une unité de contrôle moteur, avec au moins deux zones de stockage (2, 3, 4), comprenant les étapes suivantes : - téléchargement (E1) et stockage (E2) d’une nouvelle version (N), - bascule de l’exécution (E2), pour que le micro-processeur (1) exécute la nouvelle version (N) au lieu d’une ancienne version (N-1), - vérification régulière (E3) du fonctionnement, si le fonctionnement est correct pendant une durée de fonctionnement : - copie (E4) et stockage (E4) de la nouvelle version (N) dans une version de secours (N’), - vérification régulière (E5) du fonctionnement, si le fonctionnement n’est pas correct : - bascule (E6) de l’exécution, pour que le micro-processeur (1) exécute la version de secours (N’) au lieu de la nouvelle version (N). Figure d’abrégé : Figure 2 Procédé de mise à jour d’un logiciel pour un micro-processeur comprenant au moins deux zones de stockage L’invention concerne un procédé de changement de version d’un logiciel, lors d’une mise à jour, pour un micro-processeur d’une unité de contrôle moteur, par exemple d’un véhicule automobile, par exemple d’un véhicule hybride ou électrique, comprenant au moins deux zones de stockage, chacune apte à stocker une version complète du logiciel. La mémoire, utilisée pour réaliser une zone de stockage, permettant de stocker de manière non volatile, un logiciel apte à s’exécuter sur un micro-processeur, est coûteuse. Aussi, de manière connue, un micro-processeur comprend typiquement une unique zone de stockage. Une zone de stockage s’entend d’une mémoire rémanente d’une coupure d’alimentation, apte à stocker la totalité d’une version du logiciel, entre deux exécutions, le micro-processeur pouvant être mis hors tension. On entend par totalité d’une version du logiciel, le code exécutable complet nécessaire à une exécution, ainsi qu’éventuellement des données d’initialisation et/ou de réglage. Ainsi, pour une version du logiciel d’un contrôle moteur, les données comprennent une calibration, qui synthétise toutes les grandeurs d’initialisation, de réglage, de bridage, etc. nécessaires au fonctionnement sur un type de moteur. Une version courante du logiciel est stockée dans ladite zone de stockage. Elle est chargée/recopiée en mémoire vive préalablement à chaque exécution. Lors d’un changement de version, la version courante devient une ancienne version N-1. Une nouvelle version N, destinée à venir remplacer l’ancienne version N-1, est alors téléchargée dans la zone de stockage unique, en écrasant l’ancienne version N-1. Ceci interdit toute possibilité simple de retour. Ceci est adapté à un téléchargement d’une nouvelle version N effectué en direct. En direct, il est possible de tester le bon fonctionnement de la nouvelle version N afin de la valider. En cas de problème de téléchargement, il est possible de télécharger à nouveau une copie de la nouvelle version N. En cas de non validation, suite par exemple à un problème de distribution ou de version, il est possible de télécharger à nouveau l’ancienne version N-1, dernière validée. Il est connu d’améliorer le procédé précédent, en équipant le micro-processeur de deux zones de stockage. Il est ainsi possible de stocker deux versions du logiciel, une dans chacune des zones de stockage. Une première zone de stockage stocke une première version du logiciel ou version courante, exécutée par défaut. Lors d’un changement de version, cette première version devient une ancienne version N-1. Une nouvelle version N peut être téléchargée et stockée dans la deuxième zone de stockage. La présence de deux zones de stockage distinctes permet de ne pas écraser la première zone de stockage et de conserver l’ancienne version N-1. Il est alors possible de basculer l’exécution, pour que ce soit la nouvelle version N qui s’exécute. Ceci permet de faire fonctionner et de valider cette nouvelle version N. Si cette nouvelle version N est validée elle est conservée et devient la version courante, exécutée par défaut. Si cette nouvelle version N n’est pas validée, il est possible simplement, par une simple bascule d’exécution, de revenir à l’ancienne version N-1, dernière validée. L’ajout d’une deuxième zone de stockage est aujourd’hui plus fréquente, en ce qu’une deuxième zone de stockage est rendue nécessaire pour réaliser un téléchargement selon une nouvelle fonctionnalité : à distance et sans fil (en anglais « Flashing Over The Air » ou FOTA). Aussi, l’invention se propose de mettre à profit, la présence d’une deuxième zone de stockage pour améliorer la sécurité et la fonctionnalité d’une version de logiciel et limiter les risques d’immobilisation d’un véhicule suite à un défaut de son contrôle moteur. L’invention a pour objet un procédé de mise à jour d’un logiciel, pour un micro-processeur d’une unité de contrôle moteur, comprenant au moins une première et une deuxième zones de stockage, chacune apte à stocker une version du logiciel, la première zone de stockage contenant une ancienne version du logiciel, le procédé comprenant les étapes suivantes : - téléchargement d’une nouvelle version du logiciel, - stockage de la nouvelle version dans la deuxième zone de stockage, différente de la première zone de stockage, - bascule de l’exécution, pour que le micro-processeur exécute la nouvelle version au lieu de l’ancienne version, comprenant encore les étapes suivantes : - vérification régulière du fonctionnement correct de la nouvelle version, si le fonctionnement n’est pas correct : - bascule de l’exécution, pour que le micro-processeur exécute l’ancienne version au lieu de la nouvelle version, si le fonctionnement est correct pendant une durée de fonctionnement : - copie de la nouvelle version depuis la deuxième zone de stockage vers une version de secours, - stockage de la version de secours dans une troisième zone de stockage, - vérification régulière du fonctionnement correct de la nouvelle version, si le fonctionnement n’est pas correct : - bascule de l’exécution, pour que le micro-processeur exécute la version de secours au lieu de la nouvelle version. Des caractéristiques ou des modes de réalisation particuliers, utilisables seuls ou en combinaison, sont : - la troisième zone de stockage est confondue avec la première zone de stockage, - un fonctionnement correct est considéré si un nombre d’erreurs d’exécution ou un ratio rapporté à un nombre d’exécutions, à un nombre de cycles ou à un nombre de cycles significatifs ne dépasse pas un certain seuil, - la durée de fonctionnement, comprend un nombre, préférentiellement de quelques dizaines, encore préférentiellement au moins 48, cycles de fonctionnement significatifs, - une durée de maturité est intercalée entre le téléchargement et le début de la durée de fonctionnement, comprenant un nombre, préférentiellement de quelques unités, de cycles de fonctionnement significatifs, - un cycle de fonctionnement s’entend entre un démarrage du micro-processeur et son arrêt et un cycle de fonctionnement significatif s’entend d’un cycle de fonctionnement où toutes les fonctions d’un jeu de fonction de référence préalablement défini sont utilisées, - le jeu de fonction de référence comprend tout ou partie des fonctions suivantes : atteinte d’une vitesse minimale, préférentiellement pendant une durée minimale, telle 40 km/h, préférentiellement 90 km/h, ou atteinte d’un régime moteur minimal, tel 3000 tr/min ou atteinte d’une certaine température moteur, - les étapes de copie et de stockage de la version de secours sont réalisées pendant une phase terminale ménagée entre une fin d’exécution de la nouvelle version et un arrêt du micro-processeur, - une étape de copie, de stockage et/ou de bascule de l’exécution comprend préalablement une étape de vérification de l’intégrité de la version copiée, stockée ou remplaçante, préférentiellement au moyen d’un signage, - toute exécution d’une version comprend une étape de vérification de l’intégrité de la version à exécuter, préférentiellement au moyen d’un signage, encore préférentiellement préalable à l’exécution, - un signage est réalisé par une somme de contrôle, une somme de contrôle multizone ou une somme de contrôle améliorée. Dans un autre aspect, l’invention se rapporte à un produit programme d’ordinateur, comprenant des instructions de code enregistrées sur un support lisible par ordinateur pour la mise en œuvre des étapes d’un procédé tel que décrit précédemment, lorsque ledit programme fonctionne sur un ordinateur. Dans un autre aspect, l’invention se rapporte à un dispositif de contrôle moteur d’un véhicule automobile, comprenant une unité de contrôle moteur comportant un micro-processeur comprenant au moins une première et une deuxième zones de stockage, chacune apte à stocker une version du logiciel, la première zone de stockage contenant une ancienne version du logiciel, ledit micro-processeur implémentant un procédé tel que décrit précédemment. Dans un autre aspect, l’invention se rapporte à un véhicule automobile comprenant un tel dispositif de contrôle moteur. L’invention sera mieux comprise à la lecture de la description qui suit, faite uniquement à titre d’exemple, et en référence aux figures en annexe dans lesquelles : montre un synoptique organique d’un micro-processeur, disposant de deux zones de stockage et d’un sélecteur, montre un organigramme d’un procédé selon l’invention. L’invention concerne un procédé de mise à jour d’un logiciel, pour un micro-processeur 1 d’une unité électronique de contrôle moteur d’un véhicule (non représentés), par exemple un véhicule hybride. Tel qu’illustré à la , ce micro-processeur 1 comprend une première zone de stockage 2 et au moins une deuxième zone de stockage 3. Chacune de ces zones de stockage 2, 3 est apte à stocker une version du logiciel N-1, N, N’. On entend par version du logiciel N-1, N, N’ l’ensemble complet des éléments nécessaires à l’exécution du logiciel, y inclut le code exécutable et toutes les données de calibration (initialisation, réglages, bornes, seuils, etc.). Tel qu’illustré à la , le micro-processeur 1 accède à la mémoire et aux zones de stockage 2-4 via un bus de données 5. Un sélecteur 6 permet de choisir la zone de stockage active, contenant la version courante ou active. Ledit sélecteur 6 est typiquement un sélecteur de composant (en anglais « chip select » ou CS), commandable par le micro-processeur 1. Il est supposé qu’une version préalable de logiciel est déjà stockée, par exemple dans la première zone de stockage 2. Avant le changement de version, cette version est la version courante. Lors du changement de version, elle devient une ancienne version N-1. Tel qu’illustré à la , le procédé de changement de version débute par une étape de téléchargement E1 d’une nouvelle version N du logiciel. Ledit téléchargement peut être réalisé en direct, via une connexion filaire ou sans fil (FOTA). Sur la , certaines étapes E1, E3, E5 réalisent des tests. En fonction du résultat d’un test le branchement varie. Un branchement suite à un résultat vrai, V, est indiqué par un trait tireté. Un branchement suite à un résultat faux, F, est indiqué par un trait d’axe. Une fois téléchargée, la nouvelle version N, au cours d’une autre étape E2 est stockée dans une zone de stockage disponible, par exemple la deuxième zone de stockage 3. Cette (deuxième) zone de stockage est préférentiellement différente de la (première) zone de stockage qui stocke l’ancienne version N-1, de manière à conserver cette ancienne version N-1. Une fois la nouvelle version téléchargée E1 et stockée E2, dans la deuxième zone de stockage 3, il est procédé, à une bascule de l’exécution E2. Une bascule de l’exécution a pour but de faire en sorte que le micro-processeur 1 exécute la nouvelle version N au lieu de l’ancienne version N-1. Pour cela, une bascule de l’exécution consiste typiquement en un changement de zone de stockage 2-4 par défaut au moyen du sélecteur 6, qui change la sélection de la première zone de stockage 2 à la deuxième zone de stockage 3. La bascule de l’exécution comprend encore une réinitialisation (en anglais « reset ») du micro-processeur 1, afin que ce dernier charge la nouvelle version N, devenue la version courante, en mémoire vive et débute son exécution. Selon une caractéristique de l’invention, le procédé comprend encore les étapes suivantes. Il est procédé à une vérification régulière E3 du fonctionnement correct de la nouvelle version N. Cette vérification régulière peut être effectuée par tout moyen, de test et/ou d’autotest disponible pour le micro-processeur 1 et son logiciel. Dans le cadre d’une architecture de sécurité de fonctionnement selon la norme ISO 26262, classiquement utilisée en automobile, les niveaux de surveillance L2 et L3 sont notamment mis à profit pour vérifier le bon fonctionnement du contrôle moteur tant au niveau matériel, que logiciel au moyen de tests tant matériels que fonctionnels. Tout décalage, par rapport à un bon fonctionnement prévu ou prescrit, peut soulever un défaut. Si la vérification régulière indique un fonctionnement incorrect, et ce quelle qu’en soit l’origine : nouvelle version erronée, incomplète, mal transmise, problème de calibration, etc., il est procédé à une bascule (inverse) de l’exécution, pour que le micro-processeur 1 exécute l’ancienne version N-1 au lieu de la nouvelle version N. Ceci est possible puisque l’ancienne version N-1 est toujours disponible dans la première zone de stockage 2. Aussi la bascule de l’exécution, consiste ici en un changement inverse de zone de stockage par défaut au moyen du sélecteur 6, qui change la sélection de la deuxième zone de stockage 3 à la première zone de stockage 2, suivi d’une réinitialisation du micro-processeur 1. Un fonctionnement incorrect dans les premiers cycles de fonctionnement avec la nouvelle version N est révélateur d’un problème lié à cette nouvelle version N ou à son téléchargement/stockage. Si, au contraire, le fonctionnement est correct pendant une durée de fonctionnement, faisant fonction de probatoire, il peut en être déduit que la nouvelle version N est correcte, a bien été installée et est stable. Aussi, selon l’invention, il est alors procédé à une copie E4 de la nouvelle version N depuis la deuxième zone de stockage 3 vers une version de secours N’, identique à la nouvelle version N stockée dans la deuxième zone de stockage 3, et validée par un fonctionnement correct pendant au moins la durée de fonctionnement. Cette version de secours N’ est ensuite stockée E4 dans une troisième zone de stockage 4. Cette version de secours N’ offre une version de sauvegarde améliorée relativement à l’ancienne version N-1. La vérification régulière E5 du fonctionnement correct de la nouvelle version N est poursuivie. Si le fonctionnement est correct, alors l’exécution se poursuit avec la nouvelle version N, devenue la version courante et par défaut. Si au contraire, le fonctionnement n’est pas correct, il est procédé à une bascule E6 de l’exécution, pour que le micro-processeur 1 exécute la version de secours N’ au lieu de la nouvelle version N. Il convient de noter, que suite au bon fonctionnement de la nouvelle version N pendant une période de fonctionnement, ladite version N a été validée. Ceci a permis sa duplication en une version de secours N’. Aussi, dans ce cas, une sauvegarde s’effectue avantageusement vers une version de secours N’, duplication de la nouvelle version N, plutôt que comme précédemment, vers une ancienne version N-1. Ainsi, en cas de défaillance de la nouvelle version N courante, typiquement suite à une défaillance d’au moins un secteur mémoire de la zone de stockage 3 stockant la nouvelle version N, ou encore suite à une modification du contenu de ladite zone de stockage 3, typiquement dans le cadre d’une modification non autorisée par le vendeur (modification du logiciel ou de la calibration par un pirate), il est possible de disposer d’une version de sauvegarde de même niveau de version. Ceci permet de prolonger le fonctionnement du contrôle moteur et de retarder ainsi une immobilisation du véhicule, qui aurait été, sans l’invention, l’option la plus sûre. Bien qu’il soit envisageable de disposer de trois zones de stockage 2-4, afin d’avantageusement distinguer l’ancienne version N-1, la nouvelle version N et la version de secours N’, le coût de la mémoire conduit à préférer une architecture avec deux zones de stockage 2, 3. Aussi, selon une caractéristique avantageuse, la troisième zone de stockage 4 est confondue avec la première zone de stockage 2. Il s’ensuit que le stockage E4 de la version de secours N’ écrase l’ancienne version N-1. Ceci justifie la validation de la nouvelle version N pendant une durée de fonctionnement, avant de créer la version de secours N’ et de supprimer l’ancienne version N-1. Il a été vu qu’une vérification régulière du fonctionnement correct était réalisée. Plusieurs indicateurs de bon fonctionnement peuvent être utilisés. Il est ainsi possible de considérer un bon fonctionnement si un nombre d’erreurs d’exécution ne dépasse pas un certain seuil. Alternativement, il est possible de considérer un bon fonctionnement si un ratio d’un nombre d’erreurs d’exécution rapporté à un nombre d’exécutions ne dépasse pas un certain seuil. Alternativement, il est possible de considérer un bon fonctionnement si un ratio d’un nombre d’erreurs d’exécution rapporté à un nombre de cycles ou préférentiellement de cycles significatifs ne dépasse pas un certain seuil. Il est ici avantageux d’introduire une certaine tolérance, principalement aux erreurs d’exécution mineures. Il a été introduit précédemment une durée de fonctionnement, permettant d’introduire une période probatoire de validation de la nouvelle version N. Cette durée de fonctionnement vise à établir une utilisation minimale en durée calendaire ou en nombre d’utilisation, de façon à pouvoir valider la nouvelle version N. Selon une autre caractéristique, cette durée de fonctionnement, comprend un nombre de cycles de fonctionnement significatifs. Ce nombre peut être quelconque. S’agissant d’un nombre de cycles de fonctionnement significatifs, ce nombre est préférentiellement de quelques dizaines, encore préférentiellement au moins 48, cycles de fonctionnement significatifs, afin de typiquement couvrir une utilisation significative sur une période d’au moins deux semaines. Selon une autre caractéristique, il est encore intercalé, une durée de maturité après le téléchargement de la nouvelle version N et avant de débuter le décompte de la durée de fonctionnement. Cette durée de maturité, préférentiellement de quelques cycles de fonctionnement significatifs, permet d’éviter de comptabiliser les erreurs plus nombreuses lors des premières exécutions. Ces erreurs étant liées à une convergence de processus d’initialisation ou de rodage, sont supposées disparaître, une fois une certaine maturité atteinte. La durée de maturité, pendant laquelle des comportements excessivement erratiques pourraient apparaître, est ainsi neutralisée. La durée de fonctionnement probatoire est avantageusement démarrée seulement après l’écoulement de cette durée de maturité. Dans ce qui précède, un cycle de fonctionnement s’entend entre un démarrage du micro-processeur 1 et son arrêt. Afin de ne pas tenir compte des démarrages courts et/ou sans réelle utilisation du contrôle moteur, il est encore introduit la notion de cycle de fonctionnement significatif. Un cycle de fonctionnement significatif s’entend d’un cycle de fonctionnement où toutes les fonctions d’un jeu de fonction de référence préalablement défini sont utilisées. Ce jeu de fonction de référence comprend des fonctions minimales que l’on souhaite voir apparaître afin de considérer un cycle de fonctionnement comme pertinent au regard de la sûreté de fonctionnement que l’on souhaite valider pour la nouvelle version N. Ce jeu de fonction de référence peut comprendre toutes combinaisons de fonctions telles que : - l’atteinte d’une vitesse minimale, préférentiellement pendant une durée minimale, cette vitesse peut être quelconque, de manière à attester d’une utilisation effective du contrôle moteur et du véhicule. Elle peut être égale à 40 km/h, ou préférentiellement à 90 km/h, ou - l’atteinte d’un régime moteur minimal. Ce régime moteur peut être quelconque de manière à attester d’une utilisation effective du moteur. Il peut être égal à 3000 tr/min, ou - l’atteinte d’une certaine température moteur. Cette caractéristique est indicative d’une utilisation prolongée un certain temps. Cette dernière caractéristique est spécifique d’un moteur thermique. Toutes ces fonctions ont pour objectif de qualifier une intensité d’utilisation du véhicule, afin de ne pas prendre en compte, par exemple, un démarrage pour déplacer le véhicule de quelques mètres, ou encore des cycles de fonctionnement ne permettant pas de vérifier correctement l’aspect sécurité fonctionnelle du véhicule. L’invention s’applique à un contrôle moteur, tant pour un moteur électrique que pour un moteur thermique. Selon une autre caractéristique, les étapes de copie et de stockage E4 de la version de secours N’ sont avantageusement réalisées pendant une phase terminale. Cette phase terminale (en anglais « power latch phase ») est ménagée après la fin d’exécution d’une version, ici la nouvelle version N et avant un arrêt du micro-processeur 1. La fin d’exécution d’une version est consécutive au retrait de la clé de contact. La mise sous tension du micro-processeur 1 est prolongée le temps de cette phase terminale, avant d’être coupée à la fin de ladite phase terminale. Selon une autre caractéristique, il est avantageusement procédé à une vérification de l’intégrité d’une version après chaque étape importante et au moins avant toute utilisation. Ainsi, une vérification d’intégrité d’une version est avantageusement réalisée avant et/ou après une opération de copie pour la version copiée, avant et/ou après une opération de stockage pour la version stockée et avant et/ou après une opération de bascule d’exécution pour la version remplaçante N, N’. Ceci permet d’éviter de copier, stocker ou exécuter une version non intègre. Cette intégrité est avantageusement vérifiée au moyen d’un signage. Selon une autre caractéristique, il est avantageusement procédé à une vérification de l’intégrité d’une version avant toute exécution de ladite version. Ainsi, l’exécution d’une version N-1, N, N’ comprend une vérification de l’intégrité de la version à exécuter N-1, N, N’, préférentiellement au moyen d’un signage, encore préférentiellement préalable à l’exécution. Selon une autre caractéristique, applicable aux deux caractéristiques précédentes, un signage est réalisé par une somme de contrôle, une somme de contrôle multizone ou une somme de contrôle améliorée ou enfouie. Une somme de contrôle est connue de l’homme du métier. Elle est cependant longue à calculer. Aussi, il peut lui être préférée une somme de contrôle multizone, composée de plusieurs sommes de contrôle, affectée à des parties significatives ou à une partition de la version. Une somme de contrôle améliorée ou enfouie (en anglais « embedded checksum ») est une somme de contrôle simplifiée en réalisant la sommation modulo un certain nombre. Afin d’éviter un biais de périodicité induit par le modulo, une telle somme est complétée par d’autres tests que l’homme du métier sait définir et utiliser. L’invention concerne encore un dispositif de contrôle moteur d’un véhicule automobile, comprenant une unité de contrôle moteur comportant un micro-processeur 1 comprenant au moins une première et une deuxième zones de stockage 2, 3, 4, chacune apte à stocker une version du logiciel, la première zone de stockage 2 contenant une ancienne version N-1 du logiciel, ledit micro-processeur implémentant un procédé tel que décrit précédemment. Un dispositif de contrôle moteur s’entend de l’ensemble matériel (micro-processeur et autres dispositifs) et logiciel permettant de commander un moteur thermique ou électrique. L’invention concerne encore un véhicule automobile, comprenant un tel dispositif de contrôle moteur. L’invention a été illustrée et décrite en détail dans les dessins et la description précédente. Celle-ci doit être considérée comme illustrative et donnée à titre d’exemple et non comme limitant l’invention à cette seule description. De nombreuses variantes de réalisation sont possibles. 1 : micro-processeur, 2 : première zone de stockage, 3 : deuxième zone de stockage, 4 : troisième zone de stockage, 5 : bus, 6 : sélecteur de zone de stockage, E1-E6 : étapes, N-1 : ancienne version, N : nouvelle version, N’ : version de secours. Procédé de mise à jour d’un logiciel, pour un micro-processeur d’une unité de contrôle moteur (1), comprenant au moins une première et une deuxième zones de stockage (2, 3, 4), chacune apte à stocker une version du logiciel, la première zone de stockage (2) contenant une ancienne version (N-1) du logiciel, le procédé comprenant les étapes suivantes : - téléchargement (E1) d’une nouvelle version (N) du logiciel, - stockage (E2) de la nouvelle version (N) dans la deuxième zone de stockage (3), différente de la première zone de stockage (2), - bascule de l’exécution (E2), pour que le micro-processeur (1) exécute la nouvelle version (N) au lieu de l’ancienne version (N-1), caractérisé en ce qu’il comprend encore les étapes suivantes : - vérification régulière (E3) du fonctionnement correct de la nouvelle version (N), si le fonctionnement n’est pas correct : - bascule de l’exécution, pour que le micro-processeur (1) exécute l’ancienne version (N-1) au lieu de la nouvelle version (N), si le fonctionnement est correct pendant une durée de fonctionnement : - copie (E4) de la nouvelle version (N) depuis la deuxième zone de stockage (3) vers une version de secours (N’), - stockage (E4) de la version de secours (N’) dans une troisième zone de stockage (4), - vérification régulière (E5) du fonctionnement correct de la nouvelle version (N), si le fonctionnement n’est pas correct : - bascule (E6) de l’exécution, pour que le micro-processeur (1) exécute la version de secours (N’) au lieu de la nouvelle version (N). Procédé selon l’une quelconque des revendications précédentes, où la troisième zone de stockage (4) est confondue avec la première zone de stockage (2). Procédé selon l’une quelconque des revendications précédentes, où un fonctionnement correct est considéré si un nombre d’erreurs d’exécution ou un ratio rapporté à un nombre d’exécutions, à un nombre de cycles ou à un nombre de cycles significatifs, ne dépasse pas un certain seuil. Procédé selon l’une quelconque des revendications précédentes, où la durée de fonctionnement, comprend un nombre, préférentiellement de quelques dizaines, encore préférentiellement au moins 48, cycles de fonctionnement significatifs. Procédé selon l’une quelconque des revendications précédentes, où une durée de maturité est intercalée entre le téléchargement et le début de la durée de fonctionnement, comprenant un nombre, préférentiellement de quelques unités, de cycles de fonctionnement significatifs. Procédé selon l’une quelconque des deux revendications précédentes, où un cycle de fonctionnement s’entend entre un démarrage du micro-processeur (1) et son arrêt et un cycle de fonctionnement significatif s’entend d’un cycle de fonctionnement où toutes les fonctions d’un jeu de fonction de référence préalablement défini sont utilisées. Procédé selon la revendication précédente, où le jeu de fonction de référence comprend tout ou partie des fonctions suivantes : atteinte d’une vitesse minimale, préférentiellement pendant une durée minimale, telle 40 km/h, préférentiellement 90 km/h, ou atteinte d’un régime moteur minimal, tel 3000 tr/min ou atteinte d’une certaine température moteur. Procédé selon l’une quelconque des revendications précédentes, où les étapes de copie et de stockage (E4) de la version de secours (N’) sont réalisées pendant une phase terminale ménagée entre une fin d’exécution de la nouvelle version (N) et un arrêt du micro-processeur (1). Procédé selon l’une quelconque des revendications précédentes, où une étape de copie, de stockage et/ou de bascule de l’exécution comprend préalablement une étape de vérification de l’intégrité de la version copiée, stockée ou remplaçante (N, N’), préférentiellement au moyen d’un signage. Procédé selon l’une quelconque des revendications précédentes, où toute exécution d’une version (N-1, N, N’) comprend une étape de vérification de l’intégrité de la version à exécuter (N-1, N, N’), préférentiellement au moyen d’un signage, encore préférentiellement préalable à l’exécution. Procédé selon l’une quelconque des deux revendications précédentes, où un signage est réalisé par une somme de contrôle, une somme de contrôle multizone ou une somme de contrôle améliorée. Produit programme d’ordinateur, comprenant des instructions de code enregistrées sur un support lisible par ordinateur pour la mise en œuvre des étapes d’un procédé selon l’une quelconque des revendications précédentes lorsque ledit programme fonctionne sur un ordinateur. Dispositif de contrôle moteur d’un véhicule automobile, comprenant une unité de contrôle moteur comportant un micro-processeur (1) comprenant au moins une première et une deuxième zones de stockage (2, 3, 4), chacune apte à stocker une version du logiciel, la première zone de stockage (2) contenant une ancienne version (N-1) du logiciel, caractérisé en ce qu’il implémente un procédé selon l’une quelconque des revendications 1 à 11. Véhicule automobile, caractérisé en ce qu’il comprend un dispositif de contrôle moteur selon la revendication précédente.