Brevet FR3104276A1 — publié le 20210611

Procédé de contrôle d’alimentation La présente description concerne un procédé de contrôle d’alimentation d’une puce mémoire (106) comportant au moins deux blocs mémoire (116a, 116b), dans lequel chaque bloc mémoire reçoit une commande (SLEEP_U0, SLEEP_U1) de mise en mode de veille distincte de celle de l’autre bloc mémoire, de sorte à être individuellement mis en mode de veille. Figure pour l'abrégé : Fig. 3 Procédé de contrôle d’alimentation La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les microcontrôleurs. Un microcontrôleur comporte généralement un processeur permettant l’exécution d’un programme. Ce processeur est souvent associé à une mémoire, par exemple une mémoire flash, faisant également partie du microcontrôleur. La mémoire flash permet, en particulier, de stocker le programme exécuté par le processeur et d’enregistrer des variables utilisées lors de cette exécution. Les microcontrôleurs actuels sont majoritairement destinés à équiper des systèmes embarqués disposant de sources d’énergie restreintes. Afin que ces systèmes embarqués bénéficient d’une autonomie maximale, on cherche notamment à développer des microcontrôleurs toujours plus économes en énergie. Il existe un besoin de réduire la consommation énergétique des microcontrôleurs. Un mode de réalisation pallie tout ou partie des inconvénients des procédés de contrôle d’alimentation des microcontrôleurs connus. Un mode de réalisation prévoit un procédé de contrôle d’alimentation d’une puce mémoire comportant au moins deux blocs mémoire, dans lequel chaque bloc mémoire reçoit une commande de mise en mode de veille distincte de celle de l’autre bloc mémoire, de sorte à être individuellement mis en mode de veille. Selon un mode de réalisation, chaque bloc mémoire reçoit une demande d’accès distincte de celle de l’autre bloc mémoire, de sorte à être individuellement sorti du mode de veille. Selon un mode de réalisation, un processeur est configuré pour transmettre à chaque bloc mémoire : la commande de mise en mode de veille ; et la demande d’accès. Selon un mode de réalisation, la puce mémoire et le processeur font partie d’un même microcontrôleur. Selon un mode de réalisation, un retard d’une durée supérieure à 5 µs est introduit entre la réception de la demande d’accès et la sortie du mode de veille du bloc mémoire concerné. Selon un mode de réalisation, une mémoire non volatile, distincte des blocs mémoire, stocke des données représentatives de la commande de mise en mode de veille de chaque bloc mémoire. Selon un mode de réalisation, les données représentatives de la commande de mise en mode de veille de chaque bloc mémoire sont stockées dans un registre. Selon un mode de réalisation, la puce mémoire comporte exactement deux blocs mémoire correspondant chacun à une région physique différente à l’intérieur de la puce mémoire. Selon un mode de réalisation, chaque bloc mémoire de la puce mémoire est alimenté sous une tension environ égale à 3,3 V. Selon un mode de réalisation, chaque bloc mémoire consomme, en mode de veille, un courant électrique d’une intensité environ égale à 0,1 µA. Selon un mode de réalisation, chaque bloc mémoire consomme, hors du mode de veille, un courant électrique d’une intensité environ cinq cents fois plus grande qu’en mode de veille. Selon un mode de réalisation, la puce mémoire est une puce mémoire flash. Selon un mode de réalisation, chaque bloc mémoire est associé à une machine d’états. Un mode de réalisation prévoit une machine d’états configurée pour mettre en œuvre le procédé tel que décrit. Un mode de réalisation prévoit un circuit comprenant au moins une puce mémoire configurée pour mettre en œuvre le procédé tel que décrit. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation et modes de mise en œuvre particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, de façon schématique et sous forme de blocs, un exemple de microcontrôleur du type auquel s’appliquent, à titre d’exemple, les modes de mise en œuvre décrits ; la figure 2 représente, de façon schématique, un exemple de bloc mémoire du type auquel s’appliquent, à titre d’exemple, les modes de mise en œuvre décrits ; la figure 3 illustre, de façon schématique, un mode de mise en œuvre d’un procédé de contrôle d’alimentation d’une puce mémoire flash ; la figure 4 illustre, sous forme d’un organigramme, un mode de mise en œuvre d’un procédé de contrôle d’alimentation d’un microcontrôleur ; la figure 5 illustre, sous forme d’un organigramme, un autre mode de mise en œuvre d’un procédé de contrôle d’alimentation d’un microcontrôleur ; et la figure 6 représente, de façon très schématique et sous forme de blocs, un exemple de système embarqué. 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 et modes de mise en œuvre 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 et modes de mise en œuvre décrits ont été représentés et sont détaillés. En particulier, les données susceptibles d’être écrites, lues et effacées par le processeur dans la mémoire flash ne sont pas détaillées. 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 % près, de préférence à 5 % près. La figure 1 représente, de façon schématique et sous forme de blocs, un exemple de microcontrôleur 100 du type auquel s’appliquent, à titre d’exemple, les modes de mise en œuvre décrits. En figure 1, le microcontrôleur 100 comporte une unité de traitement 102 (CPU). L’unité de traitement 102 est, par exemple, un processeur destiné à exécuter des instructions de code d’un programme informatique. Le microcontrôleur 100 comporte, en outre, une puce mémoire flash 104 (SYS MEM), également appelée mémoire système 104 dans la suite de la description. De façon générale, la mémoire système 104 sert principalement à stocker des données liées au fonctionnement intrinsèque du microcontrôleur 100. Ces données permettent typiquement au microcontrôleur 100 de fonctionner indépendamment de l’application retenue. À titre d’exemple, la mémoire système 104 contient notamment des données associées à un « chien de garde » (watchdog) permettant de contrôler la durée d’exécution, par le processeur 102, des instructions de code du programme informatique. Le microcontrôleur 100 comporte une autre puce mémoire flash 106 (USR MEM), également appelée mémoire utilisateur 106 dans la suite de la description. De façon générale, la mémoire utilisateur 106 sert principalement à stocker des données spécifiques à l’application retenue. À titre d’exemple, la mémoire 106 contient les instructions de code du programme informatique exécuté par le processeur 102 ainsi que des constantes liées à cette exécution. La mémoire système 104 possède un contenu qui est généralement paramétré en usine, par exemple par le fabriquant du microcontrôleur 100. La mémoire utilisateur 106 possède en revanche un contenu qui est souvent configuré ultérieurement, de façon spécifique pour répondre à chaque application dans laquelle le microcontrôleur 100 est utilisé. La puce mémoire flash 106 peut comporter une pluralité de blocs mémoire 116, ou banques de mémoire 116. Dans l’exemple illustré en figure 1, la mémoire utilisateur 106 du microcontrôleur 100 comporte deux blocs mémoire 116a (U0) et 116b (U1). De façon analogue, la puce mémoire flash 104 peut comporter une pluralité de blocs mémoire 118, ou banques de mémoire 118. Dans l’exemple illustré en figure 1, la mémoire système 104 du microcontrôleur 100 comporte deux blocs mémoire 118a (S0) et 118b (S1). En pratique, chaque bloc mémoire 116, 118 correspond physiquement à une sous-entité ou région matérielle distincte à l’intérieur de la puce mémoire flash 106, 104 dont il fait partie. Dans l’exemple de la figure 1, le microcontrôleur 100 comporte par ailleurs : un ou plusieurs bus 108 de données, d’adresses et/ou de commandes entre les différents éléments internes au microcontrôleur 100 ; une interface d’entrée/sortie 110 (I/O) de communication avec l’extérieur du microcontrôleur 100 ; et une ou plusieurs autres mémoires de stockage volatil et/ou non volatil, symbolisées en figure 1 par un bloc 112 (MEM), par exemple une mémoire vive (Random Access Memory - RAM) permettant de stocker des variables dynamiques liées à l’exécution du programme par le processeur 102. En fonction de l’application visée, le microcontrôleur 100 peut aussi inclure divers autres circuits. Ces circuits sont, en figure 1, symbolisés par un unique bloc 114 (FCT). À titre d’exemple, l’unité de traitement 102, la mémoire système 104, la mémoire utilisateur 106, l’interface d’entrée/sortie 110, les autres mémoires 112 et les autres circuits 114 sont réalisés sur un même substrat et forment une architecture de type « système sur puce » (System on Chip - SoC). Dans des applications où le microcontrôleur 100 est destiné à équiper un dispositif comportant une source d’énergie restreinte, par exemple un système embarqué, on cherche généralement à faire en sorte que le microcontrôleur 100 engendre une consommation énergétique la plus faible possible. Afin de diminuer la consommation énergétique du microcontrôleur 100, on pourrait penser mettre en mode de veille un ou plusieurs éléments du microcontrôleur 100, par exemple lorsque ces éléments ne sont pas utilisés. On pourrait en particulier envisager de mettre en mode de veille la mémoire utilisateur 106 du microcontrôleur 100 lors de périodes d’inactivité de cette mémoire utilisateur 106. De telles périodes d’inactivité de la mémoire utilisateur 106 peuvent notamment survenir lorsque le processeur 102 du microcontrôleur 100 n’a pas besoin d’y accéder. Dans la plupart des applications, le processeur 102 a toutefois fréquemment besoin d’accéder à la mémoire utilisateur 106 pour écrire, lire ou effacer son contenu. L’exécution d’un programme par le processeur 102 entraîne notamment des accès répétés à la mémoire utilisateur 106, par exemple pour y lire des instructions et/ou des constantes. Chaque accès demandé par le processeur 102 à la mémoire utilisateur 106 provoque une sortie du mode de veille de la mémoire utilisateur 106. Il en résulte que le fait de mettre en mode de veille la mémoire utilisateur 106 ne permet généralement pas d’atteindre un gain énergétique significatif. La figure 2 représente, de façon schématique, un exemple de bloc mémoire 116a du type auquel s’appliquent, à titre d’exemple, les modes de mise en œuvre décrits. Le bloc mémoire 116a de la puce mémoire flash 106 comporte, comme illustré en figure 2, une matrice de points mémoire 202. Ces points mémoire 202, ou cellules mémoire 202, sont organisés en lignes et en colonnes de la matrice de cellules mémoire 202. Dans un souci de clarté, seules quelques cellules mémoire 202 ont été représentées en figure 2 étant entendu que, en pratique, le bloc mémoire 116a peut comporter un nombre quelconque de cellules mémoire 202, par exemple plusieurs milliers ou plusieurs millions de cellules mémoire 202. Chaque cellule mémoire 202 du bloc mémoire 116a stocke un bit prenant une valeur correspondant à un état logique parmi deux états logiques possibles, notés par exemple « 0 » et « 1 ». À l’intérieur du bloc mémoire 116a, plusieurs cellules mémoire 202 peuvent être regroupées. En particulier, plusieurs cellules mémoire 202, par exemple 137 cellules mémoire 202 adjacentes, peuvent être regroupées pour former un mot de 137 bits. Chaque mot de 137 bits est, par exemple, constitué de 128 bits de données et de 9 bits formant un code correcteur d’erreur (Error Correction Code - ECC). À l’intérieur du bloc mémoire 116a de la mémoire utilisateur 106, les lignes de la matrice de cellules mémoire 202 comportent par exemple chacune 8 mots de 137 bits chacun. En outre, toujours à l’intérieur du bloc mémoire 116a, plusieurs lignes peuvent être regroupées. En particulier, plusieurs lignes du bloc mémoire 116a, par exemple 512 lignes consécutives, peuvent être regroupées pour former une page du bloc mémoire 116a. Le bloc mémoire 116a de la puce mémoire flash 106 du microcontrôleur 100 possède, par exemple, une capacité totale de 1 MB (un mégabyte). Les autres blocs mémoire du microcontrôleur 100, autrement dit le bloc mémoire 116b de la puce mémoire flash 106 et les blocs mémoire 118a et 118b de la puce mémoire flash 104, peuvent présenter une structure similaire à celle du bloc mémoire 116a tel que décrite ci-dessus. En figure 2, on a arbitrairement symbolisé par une case hachurée une cellule mémoire 202 servant à stocker une information, par exemple un fragment de programme exécuté par le processeur 102 du microcontrôleur 100, et par une case non hachurée une cellule mémoire 202 ne servant pas à stocker d’information. Les cellules mémoire 202 qui servent à stocker une information contiennent chacune un bit dont la valeur correspond à l’un ou l’autre des états binaires 0 et 1, cette valeur pouvant varier d’une cellule mémoire 202 à l’autre. Les cellules mémoire 202 qui ne servent pas à stocker une information sont généralement toutes mises dans le même état binaire, par exemple 1. Comme cela est représenté en figure 2, les informations sont par exemple stockées à l’intérieur du bloc mémoire 116a dans des cellules mémoire 202 adjacentes. Dans l’orientation de la figure 2, les cellules mémoire 202 situées dans la partie supérieure du bloc mémoire 116a servent à stocker une ou plusieurs informations, tandis que les cellules mémoire 202 situées dans la partie inférieure du bloc mémoire 116a ne stockent pas d’information. En d’autres termes, le bloc mémoire 116a comporte, dans sa partie inférieure, une zone libre non affectée au stockage d’informations. La figure 3 illustre, de façon schématique, un mode de mise en œuvre d’un procédé de contrôle d’alimentation d’une puce mémoire flash. Selon ce mode de mise en œuvre, les blocs mémoire 116a (U0) et 116b (U1) de la puce mémoire flash 106 (USR MEM) sont individuellement mis en mode de veille en fonction d’un signal de commande de mise en mode de veille. Plus précisément, comme illustré en figure 3 : un signal, noté SLEEP_U0, commande la mise en mode de veille du bloc mémoire 116a de la mémoire 106 ; et un autre signal, noté SLEEP_U1, commande la mise en mode de veille du bloc mémoire 116b de la mémoire 106. Selon un mode de mise en œuvre, la puce mémoire flash 106 (figure 1) comporte un plot de connexion (non représenté) auquel est reliée, de préférence connectée, une liaison véhiculant les signaux SLEEP_U0 et SLEEP_U1 de commande de mise en mode de veille des blocs mémoire 116a et 116b, respectivement. En variante, chaque signal SLEEP_U0, SLEEP_U1 est physiquement transmis à la puce mémoire flash 106 par l’intermédiaire d’une liaison distincte de celle permettant de transmettre l’autre signal, chaque liaison étant reliée, de préférence connectée, à un plot de connexion dédié de la puce mémoire flash 106. En d’autres termes, le signal SLEEP_U0 commande la mise en mode de veille du bloc mémoire 116a indépendamment de l’état, en mode de veille ou hors du mode de veille, du bloc mémoire 116b. De façon analogue, le signal SLEEP_U1 commande la mise en mode de veille du bloc mémoire 116b indépendamment de l’état, en mode de veille ou hors du mode de veille, du bloc mémoire 116a. Selon un mode de mise en œuvre, une bascule 302a, dont la sortie (Q) est reliée à la puce mémoire flash 106, fournit le signal SLEEP_U0 de commande de mise en mode de veille du bloc mémoire 116a. La bascule 302a reçoit, comme illustré en figure 3 : un signal SLEEPREG_U0, sur une entrée (D) de donnée ; et un signal CLK de synchronisation, ou signal d’horloge, sur une entrée (>) de synchronisation. De façon analogue, une bascule 302b, dont la sortie (Q) est reliée à la puce mémoire flash 106, fournit le signal SLEEP_U1 de commande de mise en mode de veille du bloc mémoire 116b. La bascule 302b reçoit, comme illustré en figure 3 : un signal SLEEPREG_U1, sur une entrée (D) de donnée ; et le signal CLK de synchronisation, ou signal d’horloge, sur une entrée (>) de synchronisation. Selon un mode de mise en œuvre, les signaux SLEEPREG_U0 et SLEEPREG_U1 sont transmis aux bascules 302a et 302b de façon asynchrone, par exemple à l’initiative du processeur 102 du microcontrôleur 100 de la figure 1. Les bascules 302a et 302b permettent alors de synchroniser les signaux SLEEPREG_U0 et SLEEPREG_U1 par rapport au signal d’horloge CLK. Selon un mode de mise en œuvre, des données permettant de commander l’état de chaque signal SLEEPREG_U0, SLEEPREG_U1 sont stockées dans un registre, par exemple un registre d’état. Ce registre d’état est, de préférence, stocké dans la mémoire système 104, par exemple dans le bloc 108a (figure 1) de la mémoire système 104. Un avantage du mode de mise en œuvre décrit en relation avec la figure 3 réside dans le fait que les blocs mémoire 116a et 116b peuvent être individuellement mis en mode de veille. Dans des applications où les informations à stocker dans la mémoire utilisateur 106 n’excèdent pas la capacité d’un seul bloc mémoire 116a, 116b, on peut alors stocker toutes les informations dans un même bloc mémoire, par exemple le bloc mémoire 116a. Cela permet de laisser libre l’autre bloc mémoire, le bloc mémoire 116b dans cet exemple. Le bloc mémoire 116b peut alors avantageusement être mis en mode de veille indépendamment du bloc mémoire 116a. La mise en mode de veille du bloc mémoire 116b permet en particulier de réduire la consommation énergétique du bloc mémoire 116b et, par conséquent, la consommation énergétique de la puce mémoire flash 106 et du microcontrôleur 100. En d’autres termes, on tire profit du fait que les blocs mémoire 116a, 116b peuvent être individuellement mis en mode de veille pour réduire la consommation énergétique d’un bloc mémoire non utilisé. Chaque bloc mémoire est, de préférence, alimenté sous une tension environ égale à 3,3 V, par exemple une tension de polarisation continue égale à 3,3 V. Dans ce cas, chaque bloc mémoire 116a, 116b de la puce mémoire flash 106 consomme, par exemple : en mode de veille, un courant électrique d’une intensité environ égale à 0,1 µA ; et hors du mode de veille, un courant électrique d’une intensité environ égale à 50 µA. De manière plus générale, chaque bloc mémoire 116a, 116b de la puce mémoire flash 106 consomme, hors du mode de veille, un courant électrique d’une intensité environ cinq cents fois plus grande que l’intensité consommée par ce même bloc mémoire 116a, 116b en mode de veille. En d’autres termes, chaque bloc mémoire 116a, 116b de la puce mémoire flash 106 consomme, en mode de veille, un courant électrique d’une intensité environ cinq cents fois plus faible que l’intensité consommée par ce même bloc mémoire 116a, 116b hors du mode de veille. La figure 4 illustre, sous forme d’un organigramme, un mode de mise en œuvre d’un procédé de contrôle d’alimentation d’un microcontrôleur. Le mode de mise en œuvre exposé en relation avec la figure 4 permet, plus précisément, un contrôle d’alimentation d’un ou plusieurs blocs mémoire d’une même puce mémoire flash, par exemple le bloc mémoire 116a de la puce mémoire flash 106 du microcontrôleur 100 (figure 1). Toutefois, ce qui est exposé ci-dessous en relation avec un exemple de contrôle d’alimentation du bloc mémoire 116a est notamment transposable par l’homme du métier à un contrôle d’alimentation du bloc mémoire 116b de la puce 106 et des blocs mémoire 118a et 118b de la puce 104. On considère arbitrairement que le bloc 116a de la puce mémoire flash 106 se trouve initialement dans un état (bloc 402, AWAKE) hors du mode de veille. Dans la suite de la description, l’état 402 est qualifié de mode actif, par opposition au mode de veille. Selon un mode de mise en œuvre, le bloc mémoire 116a se trouve par défaut dans l’état 402. Cet état correspond, par exemple, à une configuration initiale du microcontrôleur 100 en sortie d’usine ou après réception, par le processeur 102 et/ou la puce mémoire flash 106, d’une commande de réinitialisation (flèche 404, HResetn). Dans un cas où la bascule 302a (figure 3) commande la mise en mode de veille du bloc mémoire 116a, où aucun accès mémoire n’est en cours dans le bloc mémoire 116a et où une sortie du mode de veille n’est pas demandée, le bloc mémoire 116a passe alors (flèche 406, SLEEP_U0 && No access ongoing && Rdy_ss=0) dans un autre état (bloc 408, SLEEP_XY_LOW). L’état 408 correspond, par exemple, à un état intermédiaire ou transitoire entre le mode actif 402 et encore un autre état (bloc 410, SLEEP). L’état 408 est maintenu, de préférence, pendant un seul cycle d’horloge avant le passage (flèche 412) dans l’état 410. L’état 410 correspond, de préférence, au mode de veille du bloc mémoire 116a. Dans le mode de veille 410, la consommation énergétique du bloc mémoire 116a, autrement dit la puissance électrique consommée par le bloc mémoire 116a, est réduite par rapport au mode actif 402. Lorsqu’il se trouve en mode de veille 410, le bloc mémoire 116a peut recevoir une demande d’accès. Cette demande d’accès entraîne automatiquement le passage (flèche 414, Access detected) depuis le mode de veille 410 du bloc mémoire 116a vers encore un autre état (bloc 416, WAKEUP). Depuis l’état 416, un signal, noté Rdy_ss, de sortie du mode de veille est transmis au bloc mémoire 116a consécutivement à la demande d’accès. Selon un mode de mise en œuvre préféré, un retard d’une durée supérieure à 5 µs est introduit entre la réception de la demande d’accès et la transmission du signal Rdy_ss de sortie du mode de veille 410 du bloc mémoire 116a. Le signal Rdy_ss est, de préférence, un signal binaire dont un état correspond à une demande de mise en mode de veille et dont l’autre état correspond à une demande de sortie du mode de veille. Un changement d’état du signal Rdy_ss succède donc, dans un délai supérieur à 5 µs, à chaque demande d’accès au bloc mémoire 116a. Selon un mode de mise en œuvre préféré, la sortie du mode de veille 410 du bloc mémoire 116a est provoquée par : une demande d’accès en lecture dans le bloc mémoire 116a ; une demande d’accès en écriture dans le bloc mémoire 116a ; ou une demande d’effacement dans le bloc mémoire 116a, à l’exception d’une demande d’effacement simultané des deux blocs mémoire 116a et 116b de la puce mémoire flash 106. Toujours selon ce mode de mise en œuvre préféré, les blocs mémoire 116a et 116b de la puce mémoire flash 106 sont tous deux sortis du mode de veille en cas : de demande d’effacement simultané des deux blocs mémoire 116a et 116b de la puce mémoire flash 106 ; de demande d’opérations d’écriture et d’effacement successives ; ou de demande de mise sous tension, notée OBL_LAUNCH, permettant de lire une configuration du microcontrôleur 100 depuis la puce mémoire flash 104. Selon un mode de mise en œuvre, on vérifie la validité des demandes d’accès listées ci-dessus avant de les transmettre au(x) bloc(s) mémoire concerné(s). Cela permet avantageusement d’éviter une sortie du mode de veille d’un bloc mémoire dans un cas où la demande d’accès à ce bloc mémoire est erronée. Depuis l’état 416, le changement d’état du signal Rdy_ss entraîne le passage (flèche 418, Rdy_ss=1) depuis l’état 416 vers encore un autre état (bloc 420, WAKEUP_XY_HIGH). L’état 420 correspond, par exemple, à un état intermédiaire ou transitoire entre l’état 416 et l’état actif 402. L’état 420 est maintenu, de préférence, pendant un seul cycle d’horloge avant le passage (flèche 422) dans l’état actif 402. Selon un mode de mise en œuvre, le passage à l’état actif 402 du bloc mémoire 116a entraîne un changement d’état du signal Rdy_ss. Un avantage du mode de mise en œuvre du procédé de contrôle d’alimentation décrit ci-dessus en relation avec la figure 4 réside dans le fait que ce procédé est compatible avec les mémoires flash existantes qui comportent au moins deux blocs mémoire. En effet, une demande d’accès à un bloc mémoire suffit à provoquer sa sortie du mode de veille. Aucun programme logiciel n’est en particulier utilisé pour gérer la sortie du mode de veille de chaque bloc mémoire. Selon un mode de mise en œuvre, les deux blocs mémoire 116a et 116b de la puce mémoire flash 106 du microcontrôleur 100 (figure 1) sont en mode actif 402 après réinitialisation (reset) du microcontrôleur 100. Dans une application où l’on souhaite charger dans la puce mémoire flash 106 un programme d’une taille n’excédant pas le contenu d’un seul bloc mémoire 116a, 116b, on charge ce programme dans l’un des deux blocs mémoire, par exemple le bloc mémoire 116a. Le bloc mémoire 116b est alors supposé vide et non utilisé. On peut donc mettre en mode de veille le bloc mémoire 116b. En cas de mise à jour du programme stocké dans le bloc mémoire 116a, on peut transférer une nouvelle version de ce programme dans le bloc mémoire 116b de la puce mémoire flash 106. Le bloc mémoire 116b est alors sorti du mode de veille pour que des données correspondant à la nouvelle version du programme soient écrites dans le bloc mémoire 116b. On peut ensuite mettre en mode de veille le bloc mémoire 116a contenant l’ancienne version du programme et exécuter la nouvelle version du programme depuis le bloc mémoire 116b. Cela permet avantageusement de ne pas supprimer une ancienne version d’un programme lors du chargement d’une nouvelle version d’un programme. On conserve donc une possibilité de revenir à l’ancienne version du programme, par exemple en cas de problème lors du transfert ou de l’exécution de la nouvelle version du programme, ce qui permet notamment de conserver un microcontrôleur 100 fonctionnel à l’issue d’un échec d’une procédure de mise à jour. La figure 5 illustre, sous forme d’un organigramme, un autre mode de mise en œuvre d’un procédé de contrôle d’alimentation d’un microcontrôleur. Le mode de mise en œuvre de la figure 5 comprend des étapes et des transitions communes avec le mode de mise en œuvre de la figure 4. Ces étapes et transitions communes ne seront pas à nouveau décrites ci-après. Dans le mode de mise en œuvre de la figure 5, une mémoire non volatile (non représentée), distincte des blocs mémoire 116a et 116b de la puce mémoire flash 106, stocke des données représentatives des commandes SLEEP_U0 et SLEEP_U1 de mise en mode de veille des blocs mémoire 116a et 116b, respectivement. Ces données sont, de préférence, stockées chacune sous forme d’un bit dans un registre de l’un des blocs mémoire 118a, 118b de la puce mémoire 104 (figure 1). Dans un cas où l’on souhaite garder le bloc mémoire 116a en mode de veille, le stockage du bit représentatif de la commande SLEEP_U0 de mise en mode de veille du bloc mémoire 116a permet de faire en sorte que le bloc mémoire 116a soit directement mis en mode de veille après une réinitialisation. Le bit représentatif de la commande SLEEP_U0 est, de préférence, égal à : une valeur, par exemple 1, en cas de commande de mise en mode de veille du bloc mémoire 116a ; et une autre valeur, par exemple 0, en cas de commande de sortie du mode de veille du bloc mémoire 116a. Dans la suite de la description, on note SLEEP0_OPT un signal binaire dont l’état est fonction de la valeur du bit représentatif de la commande SLEEP_U0. On considère arbitrairement que le signal SLEEP0_OPT est à l’état haut lorsque le bit représentatif de la commande SLEEP_U0 vaut 1, et à l’état bas lorsque le bit représentatif de la commande SLEEP_U0 vaut 0. En figure 5, une porte logique ET 450, permettant de mettre le bloc mémoire 116a en mode de veille 410, reçoit : sur une entrée (A), le signal de réinitialisation (HResetn) ; et sur une autre entrée (B), le signal SLEEP0_OPT. Une autre porte logique ET 452, permettant de mettre le bloc mémoire 116a en mode actif 402, reçoit : sur une entrée (A), le signal de réinitialisation (HResetn) ; et sur une autre entrée (B), l’inverse (not SLEEP0_OPT) du signal SLEEP0_OPT. On suppose que le signal HResetn est à l’état haut en cas de réinitialisation. À chaque réinitialisation, la porte logique ET 450 permet ainsi de mettre le bloc mémoire 116a directement en mode de veille 410 si le signal SLEEP0_OPT est à l’état haut. Dans le cas contraire, si le signal SLEEP0_OPT est à l’état bas, le bloc mémoire 116a est mis en mode actif 402 par la porte logique 452. En d’autres termes, le signal SLEEP0_OPT permet de faire en sorte que, après une réinitialisation, le bloc mémoire 116a soit par défaut directement mis soit en mode de veille 410, soit en mode actif 402. Le mode de mise en œuvre du procédé exposé ci-dessus en relation avec la figure 5 permet de réduire davantage la consommation énergétique du microcontrôleur 100, en particulier par rapport à une situation où les blocs mémoire 116a et 116b de la puce mémoire 106 sont par défaut sortis du mode de veille à chaque réinitialisation du processeur 102 du microcontrôleur 100. Les procédés exposés ci-dessus en relation avec les figures 4 et 5 sont, de préférence, mis en œuvre par une machine d’états. De façon analogue, d’autres machines d’états mettant en œuvre des procédés similaires peuvent être prévues pour contrôler la mise en mode de veille des blocs mémoire 116b, 118a et 118b du microcontrôleur 100 de la figure 1. Le cas échéant, on a, de préférence, une machine d’états par bloc mémoire 116a, 116b, 118a, 118b. La figure 6 représente, de façon très schématique et sous forme de blocs, un exemple de système embarqué 500. Le système embarqué 500 est, par exemple, un drone. Le drone 500 comporte une source d’énergie (bloc 502, BAT), par exemple une batterie. La batterie 502 alimente notamment un ou plusieurs moteurs représentés en figure 6 par un bloc 504 (MOT). La batterie 502 alimente également le microcontrôleur 100 (µC), par exemple par l’intermédiaire d’un convertisseur d’énergie (non représenté en figure 6). Le microcontrôleur 100 est, en particulier, utilisé comme contrôleur de vol du drone 500, c’est-à-dire que le microcontrôleur 100 est configuré pour piloter les moteurs 504 du drone 500. Le drone 500 peut aussi inclure divers autres éléments. Ces éléments sont, en figure 6, symbolisés par un bloc 506 (FCT). Les procédés de contrôle d’alimentation exposés ci-dessus en relation avec les figures 4 et 5 permettent notamment d’optimiser la consommation énergétique du microcontrôleur 100. La batterie 502 se décharge ainsi à une vitesse inférieure par rapport à un cas où les procédés de contrôle d’alimentation décrits ne sont pas mis en œuvre. On obtient ainsi un drone 500 possédant une autonomie améliorée. Divers modes de réalisation, modes de mise en œuvre et variantes ont été décrits. L’homme de l’art comprendra que certaines caractéristiques de ces divers modes de réalisation, modes de mise en œuvre et variantes pourraient être combinées, et d’autres variantes apparaîtront à l’homme de l’art. En particulier, ce qui est exposé plus particulièrement en relation avec un exemple d’application à une puce mémoire flash s’applique plus généralement à tout type de mémoire. Enfin, la mise en œuvre pratique des modes de réalisation, modes de mise en œuvre et variantes décrits est à la portée de l’homme du métier à partir des indications fonctionnelles données ci-dessus. En particulier, la gestion des états des différents signaux et la génération du signal Rdy_ss sont à la portée de l’homme du métier à partir des indications ci-dessus. Procédé de contrôle d’alimentation d’une puce mémoire (106) comportant au moins deux blocs mémoire (116a, 116b), dans lequel chaque bloc mémoire reçoit une commande (SLEEP_U0, SLEEP_U1) de mise en mode de veille (410) distincte de celle de l’autre bloc mémoire, de sorte à être individuellement mis en mode de veille. Procédé selon la revendication 1, dans lequel chaque bloc mémoire (116a, 116b) reçoit une demande d’accès (414) distincte de celle de l’autre bloc mémoire, de sorte à être individuellement sorti du mode de veille (410). Procédé selon la revendication 2, dans lequel un processeur (102) est configuré pour transmettre à chaque bloc mémoire (116a, 116b) : la commande (SLEEP_U0, SLEEP_U1) de mise en mode de veille ; et la demande d’accès (414). Procédé selon la revendication 3, dans lequel la puce mémoire (106) et le processeur (102) font partie d’un même microcontrôleur (100). Procédé selon l'une quelconque des revendications 2 à 4, dans lequel un retard d’une durée supérieure à 5 µs est introduit entre la réception de la demande d’accès (414) et la sortie du mode de veille (410) du bloc mémoire (116a, 116b) concerné. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel une mémoire non volatile (104), distincte des blocs mémoire (116a, 116b), stocke des données représentatives de la commande (SLEEP_U0, SLEEP_U1) de mise en mode de veille de chaque bloc mémoire. Procédé selon la revendication 6, dans lequel les données représentatives de la commande (SLEEP_U0, SLEEP_U1) de mise en mode de veille (410) de chaque bloc mémoire (116a, 116b) sont stockées dans un registre. Procédé selon l'une quelconque des revendications 1 à 7, dans lequel la puce mémoire (106) comporte exactement deux blocs mémoire (116a, 116b) correspondant chacun à une région physique différente à l’intérieur de la puce mémoire. Procédé selon l'une quelconque des revendications 1 à 8, dans lequel chaque bloc mémoire (116a, 116b) de la puce mémoire (106) est alimenté sous une tension environ égale à 3,3 V. Procédé selon l'une quelconque des revendications 1 à 9, dans lequel chaque bloc mémoire (116a, 116b) consomme, en mode de veille (410), un courant électrique d’une intensité environ égale à 0,1 µA. Procédé selon l'une quelconque des revendications 1 à 10, dans lequel chaque bloc mémoire (116a, 116b) consomme, hors du mode de veille (410), un courant électrique d’une intensité environ cinq cents fois plus grande qu’en mode de veille. Procédé selon l'une quelconque des revendications 1 à 11, dans lequel la puce mémoire (106) est une puce mémoire flash. Procédé selon l’une quelconque des revendications 1 à 12, dans lequel chaque bloc mémoire (116a, 116b) est associé à une machine d’états. Machine d’états configurée pour mettre en œuvre le procédé selon l’une quelconque des revendications 1 à 13. Circuit comprenant au moins une puce mémoire (106) configurée pour mettre en œuvre le procédé selon l'une quelconque des revendications 1 à 13.