FR 3149702 A1 20241213 FR 2305920 A 20230612 Un contrôleur (110) d’un compteur intelligent (102) comporte un processeur intégrant un module de débogage configuré pour stopper l’exécution des instructions sur détection d’atteinte d’un point d’arrêt et pour générer une interruption matérielle associée. Pour appliquer un correctif à un jeu d’instructions, le contrôleur (110) : reçoit un message de nouveau correctif via un réseau de communication (103), ledit message fournissant le correctif à appliquer et un point d’arrêt d’application du correctif dans le jeu d’instructions exécuté par ledit contrôleur (110) ; enregistre des instructions de nouveau correctif en mémoire non-volatile, en vue d’un prochain redémarrage du compteur intelligent (102), ainsi qu’en mémoire vive, en vue d’une prise en compte à la volée ; configure le module de débogage avec ledit point d’arrêt d’application du correctif ; et applique le correctif sur détection d’une interruption matérielle associée audit point d’arrêt d’application du correctif. Figure à publier avec l’abrégé : Fig. 1 PROCEDE D’APPLICATION DE CORRECTIF A DES INSTRUCTIONS DE COMPTEUR INTELLIGENT La présente invention concerne une application d’un correctif, à la volée, à des instructions exécutées par un compteur intelligent (« smart meter » en anglais). L’application d’un correctif permet de corriger des anomalies constatées dans les instructions exécutées par le compteur intelligent et/ou d’enrichir des opérations réalisées par exécution des instructions par le compteur intelligent. ETAT DE LA TECHNIQUE ANTERIEURE De nos jours, les compteurs d’eau, de gaz, d’électricité sont devenus des compteurs intelligents, c’est-à-dire qu’ils intègrent des traitements de données et des interfaces de communication de manière à pouvoir échanger avec un serveur centralisé. Ce serveur centralisé permet notamment d’effectuer des relèves de comptage effectué par ces compteurs intelligents. Ce serveur centralisé permet aussi notamment de réaliser des mises à jour logicielles de ces compteurs intelligents, afin de corriger des anomalies constatées dans les instructions exécutées par les compteurs intelligents et/ou d’enrichir des opérations réalisées par exécution des instructions par les compteurs intelligents. Une mise à jour logicielle ( e.g ., FOTA (« Firmware Over-The-Air » en anglais)) est une suite d’opérations particulièrement lourde. Particulièrement, un nouveau jeu d’instructions complet (nouveau logiciel) doit être fourni à chaque compteur intelligent à mettre à jour. Une grande quantité de données doit être transmise depuis le serveur centralisé à destination de chaque compteur intelligent à mettre à jour, ce qui entraîne une grande consommation de ressources réseau. De plus, lorsque les compteurs intelligents sont des compteurs d’eau ou de gaz, ces compteurs intelligents fonctionnement sur batterie, de manière à disposer d’une alimentation énergétique autonome. Or, de telles opérations de mise à jour logicielle impactent grandement la durée de vie de la batterie. En outre, ces mises à jour logicielles requièrent un redémarrage du compteur intelligent une fois que le nouveau jeu d’instructions est téléchargé, de sorte que ce nouveau jeu d’instructions puisse être exécuté par un processeur dudit compteur intelligent, ce qui entraîne une interruption de service. Il est alors souhaitable de pallier ces inconvénients de l’état de la technique par une solution qui permette notamment d’appliquer un correctif à la volée (sans interruption de service). Il est proposé ici un procédé pour appliquer un correctif à un jeu d’instructions exécuté par un contrôleur d’un compteur intelligent, ledit contrôleur comportant un processeur intégrant un module de débogage configuré pour stopper l’exécution des instructions sur détection d’atteinte d’un point d’arrêt et pour générer une interruption matérielle associée, le procédé étant implémenté par ledit contrôleur et comportant les étapes suivantes : recevoir un message de nouveau correctif via un réseau de communication, ledit message fournissant le correctif à appliquer et un point d’arrêt d’application du correctif dans le jeu d’instructions exécuté par ledit contrôleur ; enregistrer des instructions de nouveau correctif en mémoire non-volatile, en vue d’un prochain redémarrage du compteur intelligent, ainsi qu’en mémoire vive, en vue d’une prise en compte à la volée ; configurer le module de débogage avec ledit point d’arrêt d’application du correctif ; et appliquer le correctif sur détection d’une interruption matérielle associée audit point d’arrêt d’application du correctif. Ainsi, il est possible d’appliquer, à la volée, un correctif à un jeu d’instructions exécuté par un contrôleur d’un compteur intelligent, et ce correctif sera aussi pris en compte lors d’un éventuel redémarrage ultérieur du compteur intelligent. De plus, en procédant ainsi, l’essentiel du jeu d’instructions peut rester inchangé, ce qui limite la consommation de ressources réseau pour transmettre/recevoir le correctif. Selon un mode de réalisation particulier, le correctif est parmi les correctifs suivants : un saut d’instruction ou d’un ensemble d’instructions ; un changement d’au moins un argument de fonction ; un changement d’ordre d’exécution d’instructions ; un ajout d’au moins une instruction ; une substitution d’au moins une instruction. Ainsi, le procédé est adapté à une multitude de correctifs. Selon un mode de réalisation particulier, le message de nouveau correctif comporte des informations qui permettent de dériver des instructions de correctif à appliquer. Ainsi, le message est de taille réduite. Selon un mode de réalisation particulier, le correctif à appliquer est inclus dans le message de nouveau correctif sous forme d’instructions en langage machine. Ainsi, des correctifs complexes peuvent être appliqués. Selon un mode de réalisation particulier, au démarrage du compteur intelligent, le contrôleur effectue les étapes suivantes : configurer le module de débogage avec tout point d’arrêt pour chaque correctif éventuellement reçu précédemment ; se mettre en attente de détection d’une éventuelle interruption matérielle correspondant à un dit point d’arrêt ; se mettre en attente de réception d’un éventuel message de nouveau correctif. Ainsi, chaque correctif est pris en compte au démarrage, et de nouveaux correctifs peuvent être reçus et intégrés à la volée. Il est aussi proposé ici un programme d’ordinateur comportant des instructions de code de programme causant une implémentation du procédé, lorsque lesdites instructions sont exécutées par un processeur de compteur intelligent. Il est aussi proposé ici un support de stockage d’informations stockant de telles instructions de code de programme. Il est aussi proposé ici un compteur intelligent configuré pour appliquer un correctif à un jeu d’instructions exécuté par un contrôleur du compteur intelligent, le contrôleur comportant un processeur intégrant un module de débogage configuré pour stopper l’exécution des instructions sur détection d’atteinte d’un point d’arrêt et pour générer une interruption matérielle associée, le contrôleur étant configuré pour : recevoir un message de nouveau correctif via une interface dudit compteur intelligent avec un réseau de communication, ledit message fournissant le correctif à appliquer et un point d’arrêt d’application du correctif dans le jeu d’instructions exécuté par ledit contrôleur ; enregistrer des instructions de nouveau correctif en mémoire non-volatile, en vue d’un prochain redémarrage du compteur intelligent, ainsi qu’en mémoire vive, en vue d’une prise en compte à la volée ; configurer le module de débogage avec ledit point d’arrêt d’application du correctif ; et appliquer le correctif sur détection d’une interruption matérielle associée audit point d’arrêt d’application du correctif. Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'au moins un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels : illustre schématiquement un système de communication dans lequel la présente invention peut être implémentée ; illustre schématiquement un algorithme d’application d’un correctif à un jeu d’instructions exécuté par un compteur intelligent du système de communication ; illustre schématiquement un algorithme de prise en compte, à la volée, d’un correctif à appliquer à un jeu d’instructions exécuté par un compteur intelligent du système de communication ; et illustre schématiquement un exemple d’agencement matériel d’un contrôleur de compteur intelligent du système de communication. EXPOSE DETAILLE DE MODES DE REALISATION La illustre schématiquement un système de communication dans lequel la présente invention peut être implémentée. Le système de communication comprend un premier dispositif D1 101, ainsi qu’un deuxième dispositif D2 102, reliés par un réseau de communication 103. Le deuxième dispositif D2 102 est un compteur intelligent. Par exemple, le deuxième dispositif D2 102 est un compteur d’électricité. Dans un mode de réalisation préférentiel, le deuxième dispositif D2 102 est un compteur d’eau ou de gaz. Le premier dispositif D1 101 est adapté et configuré pour transmettre, via le réseau de communication 103, des correctifs à appliquer à un jeu d’instructions exécuté par le deuxième dispositif D2 102. Le premier dispositif D1 101 est typiquement relié à une multitude de compteurs intelligents via le réseau de communication 103, afin de permettre d’effectuer des mises à jour logicielles desdits compteurs intelligents. Par exemple, lorsque le deuxième dispositif D2 102 est un compteur d’électricité, le réseau de communication 103 est un réseau par courants porteurs en ligne (PLC, « PowerLine Communications » en anglais) et le premier dispositif D1 101 est un concentrateur de données (DC, « Data Concentrator » en anglais) ou un système informatique connecté à un tel concentrateur de données. Selon un autre exemple, lorsque le deuxième dispositif D2 102 est un compteur d’eau ou de gaz, le réseau de communication 103 est un réseau étendu à faible puissance (LPWAN, « Low Power Wide Area Network » en anglais), c’est-à-dire un réseau sans fil à longue portée et à basse consommation comme utilisé dans l’Internet des Objets (IoT, « Internet of Things » en anglais) et le premier dispositif D1 101 est une passerelle ou un système informatique connecté à une telle passerelle. Pour effectuer des opérations de comptage (consommation d’eau, de gaz, d’électricité), le dispositif D2 102 comporte un module de métrologie M 120. Pour communiquer via le réseau de communication 103 et plus particulièrement avec le dispositif D1 101, le dispositif D2 102 comporte une interface de communication I 140. Pour réaliser des traitements de données, comme par exemple pour constituer des relevés de consommation à partir des opérations de comptage du module de métrologie M 120 et constituer des statistiques de consommation, le dispositif D2 102 comporte un contrôleur C 110. Lorsque le deuxième dispositif D2 102 est un compteur d’eau ou de gaz, le dispositif D2 102 comporte une batterie B 130 permettant d’alimenter électriquement le deuxième dispositif D2 102. La batterie B est typiquement calibrée pour avoir une durée de vie d’une quinzaine ou d’une vingtaine d’années. D’éventuels lourds transferts de données via l’interface de communication I peuvent nuire à cette durée de vie (bien que la batterie ait été calibrée pour en autoriser quelques-uns), ce que la présente invention vise à éviter. La illustre schématiquement un algorithme d’application d’un correctif à un jeu d’instructions exécuté par le dispositif D2 102. Dans une étape 201, le dispositif D2 102 est mis sous tension et le dispositif D2 102 effectue un démarrage logiciel. Le contrôleur C 110 copie alors en mémoire vive des instructions stockées en mémoire non-volatile. Le contrôleur C 110 lit les instructions depuis la mémoire vive et les exécute. Les instructions correspondent à un programme principal et éventuellement à un ou plusieurs correctifs appliqués au programme principal. Le contrôleur C 110 inclut un processeur (par exemple de type ARM (« Advanced RISC (Reduced Instruction Set Computer) Machine » en anglais)) intégrant un module de débogage configuré pour stopper l’exécution des instructions sur détection d’atteinte d’un point d’arrêt, et pour générer une interruption matérielle associée. L’interruption matérielle est alors associée à des instructions de correctif, qui correspondent à une routine de gestion de l’interruption en question qui déroute le contrôleur C 110 vers un correctif à appliquer. Le programme principal est suspendu pour appliquer le correctif, comme détaillé ci-après. Dans une étape 202, le dispositif D2 102 configure le module de débogage, de sorte que chaque correctif précédemment reçu par le dispositif D2 102 de la part du dispositif D1 101 soit pris en compte. Ainsi, un point d’arrêt est défini pour chaque correctif à appliquer. Dans une étape 203, le dispositif D2 102 active son service de correction et le met en attente de détection d’une éventuelle interruption matérielle indiquant que l’exécution des instructions du programme principal a atteint un dit point d’arrêt. Dans une étape 204, le dispositif D2 102 vérifie si une telle interruption matérielle est détectée. Si une telle interruption matérielle est détectée, cela signifie typiquement qu’un registre (appelé compteur de programme (PC, « Program Counter » en anglais)), qui pointe sur l’adresse en mémoire vive de la prochaine instruction à exécuter, a atteint ledit point d’arrêt. Une étape 205 est alors effectuée. Sinon, le service de correction reste en attente de détection d’une telle éventuelle interruption matérielle, dans l’étape 203. Dans l’étape 205, le dispositif D2 102 suspend l’exécution du programme principal, et dans une étape 206, le dispositif D2 102 exécute les instructions du correctif associé à l’interruption matérielle détectée. La valeur du registre compteur de programme (PC) peut être utilisée pour déterminer quel correctif est concerné. Il convient de noter que, dès lors que l’accès aux registres à usages généraux (R0, ..., Rn) est possible sous interruption, de nombreux types de correctifs peuvent être appliqués. Selon un premier mode de réalisation, le correctif est un saut d’instruction ou d’un ensemble d’instructions (section de code). C’est le cas notamment lorsque l’instruction ou l’ensemble d’instructions en question a été identifié(e) comme inutile ou incorrect(e). A titre d’exemple : une mauvaise manipulation d’un port d’entrée-sortie de type GPIO (« General Purpose Input/Output » en anglais), ou une activation non nécessaire d’un périphérique, qui induit une surconsommation énergétique. Un correctif possible consiste alors à changer la valeur d’un registre (appelé registre de liaison (LR, « Link Register » en anglais)), qui pointe sur l’adresse en mémoire vive d’une instruction de retour de fonction, en accord avec le saut à réaliser. Un autre correctif possible est d’incrémenter la valeur du registre compteur de programme (PC), en accord avec le saut à réaliser. Selon un deuxième mode de réalisation, le correctif est un changement d’au moins un argument de fonction. A titre d’exemple, une fonction de configuration d’un port d’entrée-sortie de type GPIO utilise un mauvais argument ( e.g. , numéro de port d’entrée-sortie de type GPIO incorrect). Un correctif possible consiste alors à changer la valeur d’un ou plusieurs registres parmi des registres à usages généraux destinés à stocker des arguments de fonction (souvent dénommés R0, ..., Rn (avec par exemple, n = 12)). Selon un troisième mode de réalisation, le correctif est un changement d’ordre d’exécution d’instructions. A titre d’exemple, reconfigurer l’état d’un port d’entrée-sortie de type GPIO doit se faire après l’avoir initialisé et non le contraire. Un correctif possible consiste alors à lister les instructions dans le bon ordre et à changer la valeur du registre de liaison (LR) pour revenir au programme principal (étape 207) à l’instruction qui suit les instructions qui étaient mal ordonnées. Selon un quatrième mode de réalisation, le correctif est un ajout d’au moins une instruction. A titre d’exemple : insérer une initialisation d’un port d’entrée-sortie de type GPIO qui a été omise dans le programme principal. Un correctif possible consiste alors à fournir des instructions initialisation du port d’entrée-sortie de type GPIO en question, sans changer la valeur du registre de liaison (LR). Selon un cinquième mode de réalisation, le correctif est une substitution d’instructions. A titre d’exemple : une réécriture d’une fonction complexe, ou une introduction de nouvelles opérations dans une fonction. Les instructions du correctif sont alors reçues sous la forme d’une fonction binaire compilée, c’est-à-dire directement des instructions en langage machine. Le correctif modifie en outre la valeur du registre de liaison (LR) pour revenir au programme principal (étape 207) à l’instruction qui suit les instructions qui font l’objet de la substitution. Ensuite, le service de correction se remet en attente de détection d’une éventuelle détection d’une interruption matérielle indiquant que l’exécution des instructions du programme principal a atteint un dit point d’arrêt, dans l’étape 203. La illustre schématiquement un algorithme de prise en compte, à la volée, d’un correctif à appliquer à un jeu d’instructions exécuté par le dispositif D2 102. Dans une étape 301, le dispositif D2 102 est mis sous tension et le dispositif D2 102 effectue un démarrage logiciel. L’étape 301 est la même que l’étape 201. Dans une étape 302, le dispositif D2 102 active son service de correction (comme à l’étape 203) et le met en attente de détection d’une éventuelle réception de message de nouveau correctif. Le message de nouveau correctif est un message qui requiert d’appliquer un correctif au programme principal. Le message de nouveau correctif comporte une valeur de point d’arrêt concerné par le correctif à appliquer. Dans un mode de réalisation particulier, le message comporte des informations qui permettent de dériver des instructions de correctif à appliquer, comme des valeurs de registres. Cela permet d’avoir des tailles réduites (quelques octets) de messages de nouveaux correctifs, ce qui est particulièrement avantageux lorsque les transmissions depuis le dispositif D1 101 vers le dispositif D2 102 disposent d’une faible bande passante (comme c’est le cas dans les réseaux de type LPWAN). Dans un mode de réalisation particulier, le message comporte des instructions en langage machine correspondant au correctif à appliquer. Cela permet aisément de transmettre des correctifs plus complexes. Dans une étape 303, le dispositif D2 102 vérifie si un tel message de nouveau correctif est reçu. Si tel est le cas, une étape 304 ; est effectuée ; sinon, le service de correction reste en attente de détection d’une éventuelle réception d’un tel message, dans l’étape 302. Dans l’étape 304, le dispositif D2 102 enregistre en mémoire non volatile des instructions correspondant au nouveau correctif. Ainsi, lors d’un prochain redémarrage du dispositif D2 102, le correctif est pris en compte dans la configuration du module de débogage (étape 202). En outre, dans l’étape 304, le dispositif D2 102 enregistre en mémoire vive des instructions correspondant au nouveau correctif. Dans une étape 305, le dispositif D2 102 configure le module de débogage, de sorte que le correctif nouvellement reçu par le dispositif D2 102 de la part du dispositif D1 101 soit pris en compte. Ainsi, un point d’arrêt est défini pour ce nouveau correctif à appliquer. L’enregistrement en mémoire vive (étape 304) des instructions correspondantes permet une mise en place à la volée du correctif, c’est-à-dire sans avoir à redémarrer le dispositif D2 102. Ensuite, le service de correction se remet en attente de détection d’une éventuelle réception d’un message de nouveau correctif, dans l’étape 302. La illustre schématiquement un exemple d’agencement du contrôleur C 110. Le contrôleur C 110 comporte, reliés par un bus de communication 410 : un processeur ou CPU (« Central Processing Unit » en anglais) 401 ; une mémoire vive RAM (« Random-Access Memory » en anglais) 402 ; une mémoire non volatile, par exemple de type EEPROM (« Electrically-Erasable Programmable Read Only Memory » en anglais) ou de type Flash 403 ; une unité de stockage, telle qu’un support de stockage SM 404, par exemple un disque dur HDD, ou un lecteur de support de stockage, tel qu’un lecteur de cartes SD (« Secure Digital » en anglais) ; et un gestionnaire d’interfaces I/f 405. Le processeur ou CPU 401 intègre le module de débogage utilisé pour générer des interruptions matérielles sur des points d’arrêt préalablement définis. Le gestionnaire d’interfaces I/f 405 permet au contrôleur C 110 d’interagir avec d’autres éléments du dispositif D2 102 (compteur intelligent), notamment le module de métrologie M 120 et l’interface de communication I 140 (pour recevoir des messages de nouveaux correctifs du dispositif D1 101) Le processeur ou CPU 401 est capable d’exécuter des instructions chargées dans la mémoire vive 402, notamment à partir de la mémoire non volatile 303 ou du support de stockage (tel qu’une carte SD) 304, ou sur réception de message de nouveau correctif (comme décrit en relation avec la ). Lorsque le contrôleur C 110 est mis sous tension, le processeur ou CPU 401 est ainsi capable de lire de la mémoire vive 302 des instructions et de les exécuter. Ces instructions peuvent être mises à jour à la volée par application d’un nouveau correctif, comme déjà décrit. Ces instructions forment un programme d’ordinateur causant notamment l’implémentation, par le processeur ou CPU 401, des étapes et comportements décrits ici. Procédé pour appliquer un correctif à un jeu d’instructions exécuté par un contrôleur (110) d’un compteur intelligent (102), ledit contrôleur (110) comportant un processeur (401) intégrant un module de débogage configuré pour stopper l’exécution des instructions sur détection d’atteinte d’un point d’arrêt et pour générer une interruption matérielle associée, le procédé étant implémenté par ledit contrôleur (110) et comportant les étapes suivantes : - recevoir (303) un message de nouveau correctif via un réseau de communication, ledit message fournissant le correctif à appliquer et un point d’arrêt d’application du correctif dans le jeu d’instructions exécuté par ledit contrôleur (110) ; - enregistrer (304) des instructions de nouveau correctif en mémoire non-volatile, en vue d’un prochain redémarrage du compteur intelligent, ainsi qu’en mémoire vive, en vue d’une prise en compte à la volée ; - configurer (305) le module de débogage avec ledit point d’arrêt d’application du correctif ; et - appliquer (206) le correctif sur détection d’une interruption matérielle associée audit point d’arrêt d’application du correctif. Procédé selon la revendication 1, dans lequel le compteur intelligent (102) est un compteur d’eau ou de gaz, et le réseau de communication est de type LPWAN. Procédé selon l’une des revendications 1 et 2, dans lequel le correctif est parmi les correctifs suivants : - un saut d’instruction ou d’un ensemble d’instructions ; - un changement d’au moins un argument de fonction ; - un changement d’ordre d’exécution d’instructions ; - un ajout d’au moins une instruction ; - une substitution d’au moins une instruction. Procédé selon l’une quelconque des revendications 1 à 3, dans lequel le message de nouveau correctif comporte des informations qui permettent de dériver des instructions de correctif à appliquer Procédé selon l’une quelconque des revendications 1 à 3, dans lequel le correctif à appliquer est inclus dans le message de nouveau correctif sous forme d’instructions en langage machine. Procédé selon l’une quelconque des revendications 1 à 5, dans lequel au démarrage du compteur intelligent (102), le contrôleur (110) effectue les étapes suivantes : - configurer (202) le module de débogage avec tout point d’arrêt pour chaque correctif éventuellement reçu précédemment ; - se mettre en attente (203) de détection d’une éventuelle interruption matérielle correspondant à un dit point d’arrêt ; - se mettre en attente (302) de réception d’un éventuel message de nouveau correctif. Produit programme d’ordinateur comportant des instructions de code de programme causant une implémentation du procédé selon l’une quelconque des revendications 1 à 6, lorsque lesdites instructions sont exécutées par un processeur (401) de compteur intelligent (102). Support de stockage d’informations stockant des instructions de code de programme causant une implémentation du procédé selon l’une quelconque des revendications 1 à 6, lorsque lesdites instructions sont lues et exécutées par un processeur (401) de compteur intelligent (102). Compteur intelligent (102) configuré pour appliquer un correctif à un jeu d’instructions exécuté par un contrôleur (110) du compteur intelligent (102), le contrôleur (110) comportant un processeur (401) intégrant un module de débogage configuré pour stopper l’exécution des instructions sur détection d’atteinte d’un point d’arrêt et pour générer une interruption matérielle associée, le contrôleur (110) étant configuré pour : - recevoir (303) un message de nouveau correctif via une interface dudit compteur intelligent avec un réseau de communication, ledit message fournissant le correctif à appliquer et un point d’arrêt d’application du correctif dans le jeu d’instructions exécuté par ledit contrôleur (110) ; - enregistrer (304) des instructions de nouveau correctif en mémoire non-volatile, en vue d’un prochain redémarrage du compteur intelligent, ainsi qu’en mémoire vive, en vue d’une prise en compte à la volée ; - configurer (305) le module de débogage avec ledit point d’arrêt d’application du correctif ; et - appliquer (206) le correctif sur détection d’une interruption matérielle associée audit point d’arrêt d’application du correctif. Compteur intelligent (102) selon la revendication 9, où le compteur intelligent (102) est un compteur d’eau ou de gaz, et le réseau de communication est de type LPWAN.