Brevet FR3160788A1 — publié le 20251003

Procédé de mise à jour d’un programme dans un microcontrôleur La présente description concerne un procédé de mise à jour d’un programme dans un microcontrôleur (100), le programme à mettre à jour contenant une première version d’un premier protocole de téléchargement (308) dans le microcontrôleur et une première version d’une application (220) et la mise à jour contenant un deuxième protocole de téléchargement (508) et une deuxième version de l’application (230), le procédé comprenant les étapes suivantes: - effacer la première version de l’application (220) d’une première région (510) ; - télécharger, dans la première région (510), le deuxième protocole de téléchargement (508) en utilisant la première version du premier protocole de téléchargement (308) présente dans une deuxième région (520) ; - effacer le contenu de la deuxième région (520) ; - télécharger la deuxième version de l’application (230) en utilisant le deuxième protocole de téléchargement (508). Figure pour l'abrégé : Fig. 5 Procédé de mise à jour d’un programme dans un microcontrôleur La présente description concerne de façon générale les procédés de mise à jour d’un programme dans un microcontrôleur et les microcontrôleurs mettant en oeuvre de tels procédés. Certains microcontrôleurs utilisent un programme pour mettre en oeuvre des mises à jour sans fil. Ce programme doit pouvoir être lui-même mis à jour sans fil. Néanmoins, les procédés actuels de mise à jour nécessitent un espace mémoire trop élevé. Il existe un besoin de fournir un procédé, de mise à jour sans fil d’un programme d’un microcontrôleur, qui puisse limiter l’utilisation d’espace mémoire du microcontrôleur. Un mode de réalisation pallie tout ou partie des inconvénients des procédés connus. Un mode de réalisation prévoit un procédé de mise à jour d’un programme dans un microcontrôleur, le programme à mettre à jour contenant une première version d’un premier protocole de téléchargement dans le microcontrôleur et une première version d’une application et la mise à jour contenant un deuxième protocole de téléchargement et une deuxième version de l’application, le procédé comprenant les étapes suivantes: - effacer la première version de l’application d’une première région ; - télécharger, dans la première région, le deuxième protocole de téléchargement en utilisant la première version du premier protocole de téléchargement présente dans une deuxième région ; - effacer le contenu de la deuxième région ; - télécharger la deuxième version de l’application en utilisant le deuxième protocole de téléchargement. Un mode réalisation prévoit un microcontrôleur comprenant un programme contenant une première version d’un premier protocole de téléchargement dans le microcontrôleur et une première version d’une application, le microcontrôleur étant configuré pour : - effacer la première version de l’application d’une première région; - télécharger, dans la première région, un deuxième protocole de téléchargement en utilisant la première version du premier protocole de téléchargement présente dans une deuxième région ; - effacer le contenu de la deuxième région ; - télécharger une deuxième version de l’application en utilisant le deuxième protocole de téléchargement. Dans un mode de réalisation, le téléchargement de la deuxième version de l’application se fait dans la deuxième région. Dans un mode de réalisation, après l’effacement du contenu de la deuxième région et avant le téléchargement de la deuxième version de l’application, le contenu de la première région est transféré vers la deuxième région puis le contenu de la première région est effacé. Dans un mode de réalisation, le téléchargement de la deuxième version de l’application se fait dans la première région. Dans un mode de réalisation, la première et la deuxième région sont des régions d’une mémoire du microcontrôleur. Dans un mode de réalisation, ladite mémoire a une taille inférieure à la somme de la taille des premières et deuxièmes versions du premier protocole de téléchargement. Dans un mode de réalisation, la première version du premier protocole de téléchargement ou le deuxième protocole de téléchargement comprend un protocole de téléchargement de mises à jour sans fil ainsi qu’un protocole de communication sans fil. Dans un mode de réalisation, le protocole de téléchargement de mises à jour sans fil ainsi que le protocole de communication sans fil sont configurés pour que, lorsqu’une mise à jour est demandée, être exécutables complètement sans faire appel à des éléments contenus dans la première région. Dans un mode de réalisation, le protocole de communication sans fil est configuré pour, lors de l’exécution de l’application, faire appel à des éléments d’une région différente de celle où il est stocké. Dans un mode de réalisation, lesdits éléments sont des parties du protocole de communication sans fil qui ne sont pas nécessaires pendant une mise à jour. Dans un mode de réalisation, ladite deuxième région est délimitée par au moins deux adresses de la mémoire. Dans un mode de réalisation, la deuxième région comprend plusieurs segments non contigus de la mémoire, délimités chacun par au moins deux adresses de la mémoire. Dans un mode de réalisation, une unité de traitement du microcontrôleur est configurée pour, lorsqu’une mise à jour est demandée, exécuter des instructions du protocole de téléchargement écrites dans la deuxième région. Dans un mode de réalisation, ladite première région est délimitée par au moins deux adresses mémoires. Dans un mode de réalisation, la première région comprend plusieurs segments non contigus de la mémoire délimités chacun par au moins deux adresses mémoires. Dans un mode de réalisation, une unité de traitement du microcontrôleur est configurée pour, lorsqu’une mise à jour est demandée, exécuter des instructions du protocole de téléchargement écrites dans la première région. Dans un mode de réalisation, le programme à mettre à jour est sous la forme d’une première image binaire contenant la première version du premier protocole de téléchargement et la première version de l’application ; et la mise à jour est sous la forme d’une deuxième image binaire contenant le deuxième protocole de téléchargement et la deuxième version de l’application. Dans un mode de réalisation, le deuxième protocole de téléchargement est une deuxième version du premier protocole de téléchargement. Dans un mode de réalisation, le téléchargement du deuxième protocole de téléchargement comprend le téléchargement d’un protocole de téléchargement alternatif utilisé par la première version du premier protocole de téléchargement pour télécharger le deuxième protocole de téléchargement. Un mode de réalisation prévoit un système comprenant une unité de mise à jour et un microcontrôleur tel que décrit ci-dessus, l’unité de mise à jour étant configurée pour transmettre, au microcontrôleur et lors d’une mise à jour, séquentiellement, le deuxième protocole de téléchargement et la deuxième version de l’application. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la FIG. 1 illustre de façon très schématique et sous forme de blocs, un système du type auquel s’appliquent les modes de réalisation ; la FIG. 2 illustre un exemple de procédé de mise à jour de programme ; la FIG. 3 illustre un exemple de procédé de mise à jour de programme ; la FIG. 4 illustre un exemple de procédé de mise à jour de programme ; la FIG. 5 illustre un procédé de mise à jour de programme selon un mode de réalisation ; et la FIG. 6 illustre un procédé de mise à jour de programme selon un mode de réalisation ; la FIG. 7 illustre des étapes du procédé de mise à jour de programme de la FIG. 5 selon un mode de réalisation ; la FIG. 8 illustre des étapes du procédé de mise à jour de programme de la FIG. 5 selon un mode de réalisation ; la FIG. 9 illustre des étapes du procédé de mise à jour de programme de la FIG. 5 selon un mode de réalisation. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % ou à 10° près, de préférence à 5 % ou à 5° près. La FIG. 1 illustre de façon très schématique et sous forme de blocs, un système 80 du type auquel s’appliquent les modes de réalisation. Le système 80 comprend par exemple un microcontrôleur 100 capable de communiquer sans fil avec une unité de mise à jour 150 (PROGRAM UPLOAD UNIT). Le microcontrôleur 100 comprend une mémoire non-volatile 104 (MEM WITH BOOT MANAGER), par exemple de type mémoire FLASH, capable de communiquer, via un bus de communication 114, avec une interface de mémoire non-volatile 106 (MEM INTERFACE) configurée pour écrire ou lire des données dans et depuis la mémoire non-volatile 104. Dans un exemple, des programmes et/ou applications systèmes, tels que des programmes de démarrage (Boot en anglais), sont mis en oeuvre dans la mémoire 104. La mémoire 104 comprend par exemple un programme configuré pour gérer d’autres programmes stockés au sein de la mémoire 104. Ces autres programmes sont par exemple des applications mises au point par des utilisateurs du microcontrôleur, ou encore des protocoles de communication sans fil (Wireless Protocol Stack en anglais) qui permettent, lorsqu’ils sont exécutés, de mettre en oeuvre une communication de données avec l’unité de mise à jour 150. La mémoire 104 peut en outre comprendre un programme permettant d’implémenter de mettre à jour des données, des programmes ou des applications présents par exemple dans la mémoire 104. Le microcontrôleur 100 comprend en outre, par exemple, une unité de traitement 110 (CPU) comprenant un ou plusieurs processeurs sous contrôle d’instructions stockées dans une mémoire d’instructions système 112 (INSTR MEM). La mémoire d’instruction 112 est par exemple une mémoire volatile de type à accès aléatoire (en anglais Random Access Memory, RAM). L’unité de traitement 110 et la mémoire 112 communiquent, par exemple, via un bus système 140 (de données, d’adresses et de commande). La mémoire FLASH 104 est reliée au bus système 140 par l’intermédiaire de l’interface de mémoire non-volatile 106 et par l’intermédiaire du bus 114. Le microcontrôleur 100 comprend en outre une interface d’entrée/sortie 108 (I/O INTERFACE) reliée au bus système 140 pour communiquer avec l’extérieur. Le microcontrôleur 100 comprend en outre, par exemple une autre mémoire 120 (USER MEM) de type non volatile ou de type RAM. Cette mémoire 120 est reliée au bus système 140 directement ou par l’intermédiaire d’une interface de mémoire (non-illustrée) dont le rôle est par exemple similaire à l’interface 106. Le microcontrôleur 100 peut intégrer d'autres circuits mettant en œuvre d'autres fonctions (par exemple, une ou plusieurs mémoires volatiles et/ou non-volatiles, d'autres unités de traitement), symbolisées par un bloc 116 (FCT) en FIG. 1 . Le microcontrôleur 100 peut en outre intégrer d’autres circuits, comme des circuits de communication sans fil 118 (RF) ayant par exemple des circuits d’adaptation d’impedance et qui sont configurés pour être reliés à une ou des antennes. Il peut être nécessaire de mettre à jour le ou les programmes présents dans la mémoire 104. La FIG. 2 illustre un exemple de procédé de mise à jour de programme. Dans l’exemple représenté, un programme de protocole de communication sans fil 218 (Wireless Protocol Stack) est stocké entre une adresse 0x01000 et une adresse 0x2A000 de la mémoire 104, un programme de gestion de programmes 216 (BOOT MANAGER) est stocké au sein de la mémoire 104 entre une adresse 0x00000 et l’adresse 0x01000, et une application 220 (User App), par exemple développée par un utilisateur qui est un sous-traitant ou intégrateur du microcontrôleur 100, est stockée entre l’adresse 0x2A000 et l’adresse 0x60000. Lorsqu’une mise à jour est demandée, par exemple par un ordre reçu depuis l’unité 150, le microcontrôleur 100 communique, par exemple sans fil, avec l’unité 150 pour que le protocole 218 et/ou par exemple également l’application 220, soient mis à jour et remplacés dans la mémoire 104, respectivement, par une nouvelle version du protocole 238 (New Wireless Protocol Stack) et une nouvelle version de l’application 230 (New User App). Dans l’exemple représenté, le programme de gestion de programme 216 reste inchangé. Un programme d’implémentation de mises à jour est nécessaire pour mettre à jour, sans fil, les programmes ou applications. Ce programme d’implémentation de mises à jour, appelé Over The Air (OTA) en anglais, est par exemple stocké dans la mémoire 104. Dans certains cas où l’espace mémoire est limité, comme par exemple le cas pour les objets communicants, il est nécessaire de pouvoir mettre à jour également le programme d’implémentation de mises à jour tout en se servant de lui-même pour télécharger une nouvelle version de ce programme d’implémentation à partir de l’unité 150. La FIG. 3 illustre un exemple de procédé de mise à jour de programme. Dans l’exemple représenté, le protocole de communication sans fil 218 (Wireless Protocol Stack) est stocké entre une adresse 0x02000 et une adresse 0x20000 de la mémoire 104 et un programme d’implémentation de mise à jour 348 (OTA App) est stocké entre l’adresse 0x01000 et l’adresse 0x02000. Les programmes 218 et 348 forment un programme de mise en oeuvre de mises à jour sans fil 308 (OTA Loader). Le programme de gestion de programmes 216 (BOOT MANAGER) est stocké au sein de la mémoire 104 entre une adresse 0x00000 et l’adresse 0x01000. Une application 328 (User App), incluant un autre programme de protocole de communication sans fil 338 (Wireless Protocol Stack 2) qui bénéficie par exemple d’erreurs corrigées ou d’améliorations, est stockée entre l’adresse 0x20000 et l’adresse 0x60000. Lorsqu’une mise à jour est demandée, le programme de mise en oeuvre de mises à jour sans fil 308 télécharge depuis l’unité 150 une nouvelle application 368 qui comprend un autre protocole de communication sans fil 378 (New Wireless Protocol Stack 2) et avec l’aide par exemple du programme 216, remplace l’application 328 par l’application 368. Cet exemple présente l’inconvénient que les applications 328 ou 368 ont leur propre protocole de communication sans fil ce qui nécessite un espace mémoire conséquent car un protocole de communication sans fil 218 est déjà présent dans la mémoire 104. La FIG. 4 illustre un exemple de procédé de mise à jour de programme. Dans l’exemple représenté, le protocole de communication sans fil 218 (Wireless Protocol Stack) est stocké entre une adresse 0x02000 et une adresse 0x20000 de la mémoire 104 et le programme d’implémentation de mise à jour 348 (OTA App) est stocké entre l’adresse 0x01000 et l’adresse 0x02000. Les programmes 218 et 348 forment le programme de mise en oeuvre de mises à jour sans fil 308 (OTA Loader). Le programme de gestion de programmes 216 (BOOT MANAGER) est stocké au sein de la mémoire 104 entre une adresse 0x00000 et l’adresse 0x01000. Une application 420 (User App), construite en utilisant un catalogue 408 incluant tous les symboles des interfaces de programmation d’application (Application Programming Interface, API, en anglais) localisés dans le programme 308, est stockée par exemple entre l’adresse 0x20000 et l’adresse 0x60000. Lorsqu’une mise à jour est demandée, le programme de mise en oeuvre de mises à jour sans fil 308 télécharge depuis l’unité 150 une nouvelle application 430 construite en utilisant le même catalogue 408. Cet exemple ne permet pas que le programme 308 appelle des interfaces de programmation d’application depuis l’application 420, seul le contraire est possible. Pour pallier à ces inconvénients, les modes de réalisation prévoient un procédé de mise à jour d’un programme dans un microcontrôleur, le programme à mettre à jour contenant une première version d’un protocole de téléchargement dans le microcontrôleur et une première version d’une application, et la mise à jour contenant une deuxième version du protocole de téléchargement et une deuxième version de l’application, le procédé comprenant les étapes suivantes: - effacer la première version de l’application d’une première région ; - télécharger, dans la première région, la deuxième version du protocole de téléchargement en utilisant la première version du protocole de téléchargement présente dans une deuxième région ; - effacer le contenu de la deuxième région ; - télécharger la deuxième version de l’application en utilisant la deuxième version du protocole de téléchargement. Dans le texte, les termes « procédé de mise à jour d’un programme dans un microcontrôleur » signifient, de manière équivalente, « procédé de mise à jour d’un programme stocké dans un microcontrôleur ». Un avantage de ce procédé est qu’il devient possible de séparer un seul programme en plusieurs parties de sorte que la partie qui contient le protocole de téléchargement forme un programme de mise à jour, fonctionnel en lui-même sans avoir à appeler des éléments contenus dans d’autres parties du programme. Il est ainsi possible d’enlever une partie du programme, par exemple celle contenant l’ application, sans hypothéquer la possibilité de télécharger, sans fil, une mise à jour d’une partie de programme depuis l’unité 150 en exécutant le protocole de téléchargement. L’espace mémoire obtenu lorsqu’une partie du programme est enlevée devient alors disponible pour stocker la partie de programme téléchargée. Un autre avantage est qu’il est possible d’envisager que la partie contenant le protocole de téléchargement puisse appeler des éléments d’une autre partie. Un avantage additionnel est que les premières ou deuxièmes versions de l’application n’ont pas besoin de contenir elle-même de protocole de téléchargement ou de protocole de communication sans fil. Il ressort de ces avantages un gain sur l’espace mémoire nécessaire pour les mises à jour. Le programme à mettre à jour, ainsi que sa mise à jour, sont par exemple chacun sous la forme d’une image binaire. Les modes de réalisation proposent ainsi d’exécuter le programme à mettre à jour ou le programme mis à jour alors que leur image binaire respective comprend des parties manquantes. En effet, les parties correspondantes au protocole de téléchargement et à l’application sont téléchargées et exécutées séquentiellement. La FIG. 5 illustre un procédé de mise à jour de programme selon un mode de réalisation. Dans une étape 500 de la FIG. 5 , le programme à mettre à jour contient une première version d’un premier protocole de téléchargement 308 dans le microcontrôleur et une première version de l’application qui est par exemple semblable à l’application 220 (User App). La première version du premier protocole de téléchargement 308 comprend le protocole de communication sans fil 218 semblable, par exemple, à celui des figures 2 à 4 ainsi que le programme d’implémentation de mise à jour 348 (OTA App) semblable, par exemple, à celui des figures 3 ou 4. La première version de l’application 220 est stockée par exemple dans une première région 510 de la mémoire 104. La première version du premier protocole de téléchargement 308 est stockée dans une deuxième région 520 de la mémoire 104 par exemple. Dans l’exemple représenté, la première région est comprise entre l’adresse 0x2A000 et l’adresse 0x60000 de la mémoire 104, et la deuxième région est comprise entre l’adresse 0x01000 et l’adresse 0x2A000 de la mémoire 104. Dans un exemple, le programme à mettre à jour est constitué de la première version du premier protocole de téléchargement 308 dans le microcontrôleur et une première version de l’application 220. Ce programme est par exemple sous la forme d’une seule image binaire. Une image binaire est une suite d’instructions binaires, par exemple sous la forme hexadécimale, qui est exécutable par exemple par l’unité de traitement 110. Il est possible de demander à l’unité de traitement 110 d’exécuter les instructions comprises entre deux adresses de la mémoire 104 ou encore d’exécuter les instructions présentes dans plusieurs régions définies chacune par deux adresses. En construisant le programme à mettre à jour sous la forme d’une seule image binaire, et en regroupant dans une région les instructions du protocole de téléchargement 308 nécessaires a minima pour la mise en oeuvre d’une mise à jour, il est alors envisageable de supprimer une partie de l’image binaire qui n’est pas utilisée pendant une phase de la mise à jour. Dans une étape 502, qui est postérieure à l’étape 500, les instructions correspondant à la première version de l’ application sont supprimées par exemple en utilisant le programme 216. La première région 510 de la mémoire 104 se retrouve donc libre pour le stockage de nouvelles données. Dans une étape 504, qui est postérieure à l’étape 502, une mise à jour est demandée. Des instructions de la première version du premier protocole de téléchargement 308 contenues dans la deuxième région sont exécutées avec par exemple l’unité de traitement 110. Le premier protocole de téléchargement 308 étant autonome vis-à-vis de la première région pour mettre en oeuvre des phases de mise à jour, un deuxième protocole de téléchargement 508 est téléchargé depuis l’unité 150 et stocké dans la première région 510 de la mémoire 104. Le deuxième protocole de téléchargement 508 contient par exemple une deuxième version du protocole de communication sans fil 518 (New Wireless Protocol Stack) ainsi qu’une deuxième version du programme d’implémentation de mise à jour 548 (New OTA App). Le deuxième protocole de téléchargement 508 correspond par exemple à une deuxième version du premier protocole de téléchargement 308. Dans une étape 506, postérieure à l’étape 504, la deuxième région de la mémoire 104 est effacée, par exemple avec le programme 216 de sorte à ce que de nouvelles données peuvent être stockées dans cette deuxième région. Dans une étape 507, postérieure à l’étape 506, des instructions du deuxième protocole de téléchargement 508, contenues dans la première région, sont exécutées avec par exemple l’unité de traitement 110. Le deuxième protocole de téléchargement 508 contient toutes les instructions pour mettre en oeuvre les phases de mise à jour. Le deuxième protocole de téléchargement 508 télécharge la deuxième version de l’application 230 depuis l’unité 150 et puis elle est stockée dans la deuxième région 510 de la mémoire 104. Dans un autre exemple, après l’étape 502, le deuxième protocole de téléchargement utilisé peut être un protocole de téléchargement alternatif diffèrent d’une deuxième version du premier protocole de téléchargement 508. Ce protocole alternatif peut être plus petit en taille que les premières et/ou deuxièmes versions du premier protocole 308. Dans cet exemple, après l’étape 502, le protocole de téléchargement alternatif est téléchargé dans la région 510 par la première version du protocole de téléchargement 308. S’en suis un effacement de la première version du premier protocole de téléchargement 308 de la région 520 puis le téléchargement du deuxième protocole de téléchargement par le protocole de téléchargement alternatif dans la région 520. Le protocole de téléchargement alternatif est ensuite effacé de la région 510. Le protocole de téléchargement alternatif a pour objectif de permettre le téléchargement de la deuxième version du premier protocole de téléchargement, c’est-à-dire le deuxième protocole de téléchargement, qui sera lui en charge de télécharger la nouvelle version de l’application. L’utilisation du protocole de téléchargement alternatif, qui est par exemple complètement diffèrent d’une deuxième version du premier protocole de téléchargement 308 mais qui est plus petit en taille, permet de réaliser une mise à jour même si la mémoire 104 est plus petite que la somme des tailles de la première et de la deuxième versions du premier protocole de téléchargement 308,508. Dans un exemple, le protocole de téléchargement alternatif utilise un autre protocole de communication radiofréquence que celui qui est utilisé par la première ou la deuxième version du premier protocole de téléchargement principal 308,508. Dans un exemple, le protocole alternatif est une image binaire qui ne travaille pas avec une application. La FIG. 6 illustre un procédé de mise à jour de programme selon un mode de réalisation. Le procédé de la figure comprend les étapes 500 à 506 de la FIG. 5 ainsi que des étapes successives 610,612 et 614. Dans l’exemple de la FIG. 6 , l’unité de traitement 110 est configurée pour exécuter, lorsqu’une mise à jour est demandée, les instructions du protocole de téléchargement qui sont présentes uniquement dans la deuxième région 520. Dans l’étape 610, qui est postérieure à l’étape 506, le programme 216 copie la deuxième version du protocole de téléchargement 508, qui est présente dans la première région, pour qu’elle soit stockée dans la deuxième région 520. Dans l’étape 612, la première région est effacée par exemple avec le programme 216. Dans l’étape 614, la deuxième version de l’application 230 est téléchargée, depuis l’unité 150, par exécution de la deuxième version du protocole de téléchargement 508 stockée dans la deuxième région 520. La deuxième version de l’application 230 est ensuite stockée dans la première région 510. Dans les exemples des figures 5 et 6, l’espace de stockage de la mémoire 104 peut être égal ou supérieur à deux fois la taille du protocole de téléchargement 308 et/ou 508. Dans le cas où le protocole de téléchargement qui est téléchargé après l’étape 502 est différent d’une deuxième version du premier protocole de téléchargement alors la taille du protocole de téléchargement téléchargé peut être plus petite. Dans ce cas, la taille de l’espace de stockage de la mémoire 104 est potentiellement inférieure à deux fois la taille d’une des versions du premier protocole de téléchargement 308. La FIG. 7 illustre des étapes du procédé de mise à jour de programme de la FIG. 5 selon un mode de réalisation. L’exemple représenté illustre, pour des questions de clarté, plus particulièrement un mode de réalisation additionnel de l’étape 500. Dans l’exemple de l’étape 500 de la FIG. 7 , le protocole de communication sans fil 218 ne comprend plus qu’une partie minimale 718 (Wireless Protocol Stack (minimal)) de la première version du protocole de communication. Une partie complémentaire du protocole de communication sans fil 710 (Wireless Protocol Stack (extension)) est, dans cet exemple, stocké dans la première région avec la première version de l’application 220. Dans l’exemple représenté, la partie minimale 718 du protocole de communication sans fil est stockée entre les adresses 0x02000 et 0x13800 et la partie complémentaire du protocole de communication sans fil 710 est stockée entre les adresses 0x13800 et 0x2A000. Cette partie minimale 718 est configurée pour, pendant les phases de mise à jour, ne pas appeler d’éléments présents hors du premier protocole de téléchargement 308. Cependant, pendant une phase où l’application est exécutée, cette partie minimale 718 du protocole de communication peut appeler des interfaces de programmation d’application (API) de la partie complémentaire du protocole de communication sans fil 710. L’exemple de la FIG. 7 permet de réduire la taille mémoire prise par le protocole de communication sans fil et donc du premier protocole de téléchargement 308 et/ou du deuxième protocole de téléchargement 508. Cela peut être utile dans le cas où le protocole de téléchargement nécessite plus d’espace mémoire que l’application. Dans ce cas, en enlevant une partie du protocole de communication 710 qui n’est pas nécessaire pour les étapes de mise à jour, il est ainsi possible, lors d’une mise à jour, de pouvoir stocker la deuxième version du protocole de téléchargement dans l’espace libéré par la première version de l’application. Même si l’exemple de la FIG. 7 n’est appliqué qu’à l’étape 500, la personne de l’art pourra appliquer ce mode de réalisation aux autres étapes de la FIG. 5 ou également à l’exemple de la FIG. 6 . La FIG. 8 illustre des étapes du procédé de mise à jour de programme de la FIG. 5 selon un mode de réalisation. Plus particulièrement, la FIG. 8 représente un mode de réalisation de l’étape 500 de la FIG. 5 . Dans l’exemple représenté, la première et la deuxième région 510,520 et respectivement l’image binaire qui y est stockée, comprennent plusieurs segments, autrement dits fragments, non contigus, de la mémoire 104, délimités chacun par au moins deux adresses de la mémoire 104. Ainsi, la première version du protocole de téléchargement est stockée en plusieurs segments 808a (OTA App(1/2)) et 808b (OTA App(2/2) qui sont non contigus dans la mémoire 104, en d’autres termes les segments 808a et 808b ne se touchent pas dans la mémoire 104. La première version de l’application est stockée dans trois segments non contigus 820a (User App(1/3)), 820b (User App(2/3)), et 820c (User App (3/3)). La première version du protocole de communication sans fil est, elle, stockée sous la forme de deux segments non contigus 818a (Wireless Protocol Stack (1/2)) et 818b (Wireless Protocol Stack (2/2)). Dans l’exemple de la FIG. 8 , le segment 820b est compris, au niveau de ses adresses mémoire, entre le segment 808a et le segment 818b. Le segment 820c est compris entre le segment 818b et le segment 808b. Le segment 818a est compris entre les segments 808b et 820a. Dans l’exemple représenté, la première région 510 est formée par les segments 820a,820b,820c et la deuxième région 520 est formée par les segments 818a, 818b, 808a et 808b. Même si l’exemple de la FIG. 8 ne représente que l’étape 500, la personne de l’art pourra appliquer ce mode de réalisation aux autres étapes de la FIG. 5 ou également à l’exemple de la FIG. 6 . Un avantage de la FIG. 8 est qu’il est compatible avec l’utilisation des listes de symboles utilisés en FIG. 4 . Un autre avantage est qu’il est possible de stocker tous les fragments sécurisés dans une même région et les fragments avec un niveau de sécurisation différent dans d’autres régions. La FIG. 9 illustre des étapes du procédé de mise à jour de programme de la FIG. 5 selon un mode de réalisation. Plus particulièrement, la FIG. 9 représente un mode de réalisation de l’étape 500 de la FIG. 5 . Dans l’exemple représenté, des fragments (1/7), (2/7) et (3/7) comprenant respectivement les segments 808a, 808b, et 818a sont stockés dans une première région de la mémoire 104. Dans l’exemple représenté, des fragments (4/7), (5/7), (6/7) et (7/7) comprenant respectivement les segments 818b, 820a, 820b et 820c sont stockés dans une deuxième région de la mémoire 104. Dans l’exemple de la FIG. 9 , l’image binaire qui comprend le programme à mettre à jour est formée par différents segments séparés entre eux. Le premier protocole de téléchargement 308 contenu dans l’image binaire du programme à mettre à jour doit contenir a minima tous les segments requis pour mettre en oeuvre une mise à jour par exemple sans fil. Par contre le premier protocole de téléchargement 308 contenu dans l’image binaire du programme à mettre à jour peut contenir des segments autres que ceux requis a minima pour mettre en oeuvre la mise à jour de la première version du programme. Même si l’exemple de la FIG. 9 ne représente que l’étape 500, la personne de l’art pourra appliquer ce mode de réalisation aux autres étapes de la FIG. 5 ou également à l’exemple de la FIG. 6 . Le microcontrôleur décrit peut être utilisé pour l’industrie automobile. L’électrification des véhicules automobiles génères des hauts niveaux de microcontrôleurs dans les véhicules. L’automatisation de la conduite comprend également l’utilisation de microcontrôleurs. Le microcontrôleur décrit peut également être utilisé dans des équipements électroniques personnels, par exemple dans le but d’augmenter le contenu radio fréquence, dans les appareils à connexion 5G ou plus généralement dans les appareils connectés. L’appareil est par exemple un téléphone dit intelligent (smartphone en anglais) ou fait partie d’un réseau d’internet des objets. Le microcontrôleur est par exemple intégré dans un produit de communication radiofréquence connecté en 5G, NFC, WIFI, UWB (ultra wide band en anglais), à champ proche de type NFC (Near Field Communication en anglais), de type LORA, SIGFOX ou encore Bluetooth®. Le produit intégrant le microcontrôleur inclut potentiellement des filtres ou protections contre les champs magnétiques ou les décharges électriques. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. En particulier, même si les première et deuxième régions ont été décrites pour la mémoire 104, d’autres mémoires non volatiles pourront être utilisées. De plus, même s’il n’a été décrit que deux régions, la mise à jour pourrait mettre en jeux plus de deux régions du moment qu’une ou plusieurs régions comprend une version du protocole de téléchargement qui permette, lorsqu’elle est exécutée seule, de télécharger des parties de la mise à jour depuis l’unité 150. Ainsi on peut envisager plusieurs téléchargements séparés dans le temps de parties différentes de la mise à jour. De plus, les procédés de mise à jour décrits peuvent être répétés pour permettre plusieurs mises à jour successives. Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. En particulier, pour ce qui est du protocole de téléchargement qui, même s’il a été décrit dans le texte comme étant configuré pour la mise à jour sans fil, pourra être adapté pour des mises à jour filaires. Dans ce cas-là, la communication avec l’unité 150 se fera en filaire. Procédé de mise à jour d’un programme dans un microcontrôleur (100), le programme à mettre à jour contenant une première version d’un premier protocole de téléchargement (308) dans le microcontrôleur et une première version d’une application (220) et la mise à jour contenant un deuxième protocole de téléchargement (508) et une deuxième version de l’application (230), le procédé comprenant les étapes suivantes: - effacer la première version de l’application (220) d’une première région (510) ; - télécharger, dans la première région (510), le deuxième protocole de téléchargement (508) en utilisant la première version du premier protocole de téléchargement (308) présente dans une deuxième région (520) ; - effacer le contenu de la deuxième région (520) ; - télécharger la deuxième version de l’application (230) en utilisant le deuxième protocole de téléchargement (508). Procédé selon la revendication 1, dans lequel le téléchargement de la deuxième version de l’application (230) se fait dans la deuxième région (520). Procédé selon la revendication 1 ou 2, dans lequel, après l’effacement du contenu de la deuxième région (520) et avant le téléchargement de la deuxième version de l’application (230), le contenu de la première région (510) est transféré vers la deuxième région (520) puis le contenu de la première région (510) est effacé. Procédé selon la revendication 3, dans lequel le téléchargement de la deuxième version de l’application (230) se fait dans la première région (510). Procédé selon la revendication 1 à 4, dans lequel la première et la deuxième région (510,520) sont des régions d’une mémoire (104) du microcontrôleur. Procédé selon la revendication 5, dans lequel ladite mémoire (104) a une taille inférieure à la somme de la taille des premières et deuxièmes versions du premier protocole de téléchargement (308,508). Procédé selon la revendication 1 à 6, dans lequel la première version du premier protocole de téléchargement (308) ou le deuxième protocole de téléchargement (508) comprend un protocole de téléchargement de mises à jour sans fil (348,548) ainsi qu’un protocole de communication sans fil (218,518). Procédé selon la revendication 7, dans lequel le protocole de téléchargement de mises à jour sans fil (348,548) ainsi que le protocole de communication sans fil (218,518) sont configurés pour que, lorsqu’une mise à jour est demandée, être exécutables complètement sans faire appel à des éléments contenus dans la première région (510). Procédé selon la revendication 7 ou 8, dans lequel le protocole de communication sans fil (218,518) est configuré pour, lors de l’exécution de l’application (220,230), faire appel à des éléments d’une région différente de celle où il est stocké. Procédé selon la revendication 9, dans lequel lesdits éléments sont des parties du protocole de communication sans fil (218,518) qui ne sont pas nécessaires pendant une mise à jour. Procédé selon l’une quelconque des revendications 5 à 10, dans leur dépendance à la revendication 2, dans lequel ladite deuxième région (520) est délimitée par au moins deux adresses de la mémoire (104). Procédé selon l’une quelconque des revendications 5 à 10, dans leur dépendance à la revendication 2, dans lequel la deuxième région (520) comprend plusieurs segments non contigus de la mémoire (104), délimités chacun par au moins deux adresses de la mémoire. Procédé selon l’une quelconque des revendications 1 à 12, dans lequel une unité de traitement (216) du microcontrôleur est configurée pour, lorsqu’une mise à jour est demandée, exécuter des instructions du protocole de téléchargement (308, 508) écrites dans la deuxième région (520). Procédé selon l’une quelconque des revendications 5 à 13 dans leur dépendance à la revendication 4, dans lequel ladite première région (510) est délimitée par au moins deux adresses mémoires. Procédé selon l’une quelconque des revendications 5 à 14 dans leur dépendance à la revendication 4, dans lequel la première région (510) comprend plusieurs segments non contigus de la mémoire délimités chacun par au moins deux adresses mémoires. Procédé selon l’une quelconque des revendications 1 à 12, ou 14 à 15, dans lequel une unité de traitement (216) du microcontrôleur est configurée pour, lorsqu’une mise à jour est demandée, exécuter des instructions du protocole de téléchargement (308,508) écrites dans la première région (510). Procédé selon l’une quelconque des revendications 1 à 16, dans lequel : le programme à mettre à jour est sous la forme d’une première image binaire contenant la première version du premier protocole de téléchargement (308) et la première version de l’application (220) ; et la mise à jour est sous la forme d’une deuxième image binaire contenant le deuxième protocole de téléchargement (508) et la deuxième version de l’application (230). Procédé selon l’une quelconque des revendications 1 à 17, dans lequel le deuxième protocole de téléchargement (508) est une deuxième version du premier protocole de téléchargement (308). Procédé selon l’une quelconque des revendications 1 à 18, dans lequel le téléchargement du deuxième protocole de téléchargement (508) comprend le téléchargement d’un protocole de téléchargement alternatif utilisé par la première version du premier protocole de téléchargement (308) pour télécharger le deuxième protocole de téléchargement (508). Microcontrôleur (100) comprenant un programme contenant une première version d’un premier protocole de téléchargement (308) dans le microcontrôleur et une première version d’une application (220), le microcontrôleur (100) étant configuré pour mettre en œuvre le procédé selon l’une quelconque des revendications précédentes. Système (80) comprenant une unité de mise à jour (150) et un microcontrôleur (100) selon la revendication 20, l’unité de mise à jour (150) étant configurée pour transmettre, au microcontrôleur (100) et lors d’une mise à jour, séquentiellement, le deuxième protocole de téléchargement (508) et la deuxième version de l’application (230).