FR 3061565 A1 20180706 FR 1750058 A 20170104 1 FONCTIONNEMENT D'UN MICROCONTROLEUR EN MODE BASSE PUISSANCE Domaine La présente demande concerne le domaine des dispositifs de traitement de données, par exemple des microcontrôleurs, et plus particulièrement leur fonctionnement en mode basse puissance durant 5 des périodes de faible activité. Exposé de l'art antérieur Une des problématiques importantes pour la fabrication d'appareils électroniques est la diminution de la consommation électrique. Ceci est tout particulièrement vrai dans des domaines où 10 une longue autonomie est un avantage, comme par exemple le domaine de la téléphonie mobile. En période de forte activité, la consommation des processeurs est inévitablement élevée. En période de faible activité, par exemple en période de veille, la consommation due au 15 fonctionnement chute de manière importante. Il demeure toutefois des courants de fuite qui forment alors une part importante de la consommation totale du processeur, en période de faible activité. La valeur totale de ces courants de fuite est liée au nombre de transistors présents dans le processeur et est donc d'autant plus 20 importante que le processeur possède une forte puissance de calcul, c'est-à-dire un grand nombre de transistors. Pour atténuer la perte d'énergie durant les périodes de faible activité, les courants de fuite peuvent par exemple être 3061565 2 diminués en abaissant le courant d'alimentation durant la veille. Il serait néanmoins souhaitable de diminuer encore la consommation du processeur en période de faible activité. Résumé Ainsi, un mode de réalisation prévoit un système comprenant : des premier et second processeurs, le second étant capable de traiter uniquement un sous-ensemble du jeu d'instructions traitable par le premier ; un circuit de gestion de puissance adapté à sélectionner l'un ou l'autre des premier et second processeurs et à le rendre actif ou le mettre en veille ; un premier périphérique adapté à générer un signal d'interruption ; un commutateur adapté à diriger le signal d'interruption soit vers le premier processeur, soit vers le second processeur, selon celui qui est sélectionné ; et une première mémoire adaptée à stocker une routine d'interruption associée au signal d'interruption, le processeur actif étant adapté à exécuter cette routine d'interruption en réponse au signal d'interruption. Selon un mode de réalisation, le circuit de gestion de puissance est adapté à générer un signal appliqué au commutateur 20 pour commander la sélection du processeur. Selon un mode de réalisation, le système comprend plusieurs autres périphériques, dont certains sont adaptés à générer un signal d'interruption. Selon un mode de réalisation, le second processeur n'est 25 pas apte à recevoir des signaux d'interruption générés par tout ou partie des autres périphériques. Selon un mode de réalisation, le système comprend une seconde mémoire accessible par le premier processeur et contenant un vecteur d'interruption fournissant l'adresse, dans la première 30 mémoire, de la routine d'interruption associée au premier périphérique. Selon un mode de réalisation, la première mémoire est une mémoire volatile et la seconde mémoire est une mémoire non volatile. Selon un mode de réalisation, la seconde mémoire est 35 adaptée à stocker des données à copier dans la première mémoire, 3061565 3 lesdites données comprenant la routine d'interruption et le vecteur d'interruption associée au premier périphérique. Selon un mode de réalisation, le second processeur est de taille inférieure au premier processeur. 5 Un autre mode de réalisation prévoit un dispositif mobile comprenant le système ci-dessus. Un autre mode de réalisation prévoit un procédé d'actionnement d'un système comprenant un premier processeur, un second processeur, une première mémoire et un premier périphérique, 10 le procédé comprenant les étapes suivantes : sélectionner, par un circuit de gestion de puissance, le second processeur capable de traiter un premier jeu d'instructions ou le premier processeur capable de traiter un sous-ensemble du premier jeu d'instructions ; rendre actif ou mettre en veille, par un circuit de gestion de 15 puissance, le processeur sélectionné ; générer, par un périphérique, un signal d'interruption pouvant être traité par chacun des premier et second processeurs ; diriger le signal d'interruption vers le processeur sélectionné parmi les premier et second processeurs ; et accéder, par le processeur sélectionné, à une routine d'interruption contenue dans la première mémoire et associée au signal d'interruption et la traiter. Selon un mode de réalisation, le procédé comprend : accéder, par le premier processeur, en réponse au signal d'interruption, à un vecteur d'interruption stocké dans une seconde mémoire et fournissant l'adresse, dans la première mémoire, de la routine d'interruption. Brève description des dessins Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de 30 réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : les figures lA et lB sont des vues schématiques d'un mode de réalisation d'un système comprenant un microcontrôleur ; et la figure 2 illustre un diagramme de fonctionnement du 35 système des figures lA et lB. 3061565 4 Description détaillée Par souci de clarté, seuls les éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. En particulier, certains composants du 5 microcontrôleur des figures lA et 1B ne sont pas représentés. La figure lA représente schématiquement et partiellement un mode de réalisation d'un système comprenant un dispositif de traitement de données 1, par exemple un microcontrôleur. Le microcontrôleur 1 comprend deux processeurs CPUO et CPUl. Le 10 processeur CPU1 est de taille inférieure au processeur CPUO. Le processeur CPUO est un processeur principal du microcontrôleur 1. Le processeur CPUO possède une relativement forte puissance de calcul, c'est-à-dire qu'il possède un relativement grand nombre de transistors, correspondant par exemple à un nombre de portes 15 logiques compris entre 150 k et 200 k. Il peut ainsi gérer un jeu d'instructions relativement large. Le processeur CPU1 est un processeur auxiliaire du microcontrôleur 1. Il possède une relativement faible puissance de calcul, c'est-à-dire qu'il est composé d'un nombre de transistors relativement plus faible que le 20 processeur CPUO, correspondant par exemple entre 20 k et 50 k portes logiques, et ne peut gérer qu'un jeu d'instructions plus petit que celui traité par le processeur CPUO. Le jeu d'instructions gérable par le processeur CPU1 est un sous-ensemble du jeu d'instructions gérable par le processeur CPUO. 25 Le processeur CPUO peut être par exemple un processeur Cortex-M4 de la société ARM. Le processeur CPU1 peut par exemple être un processeur Cortex-MO de la société ARM. Le microcontrôleur 1 est associé à un bloc de gestion de puissance 2. Ce bloc 2 est relié aux deux processeurs et est adapté à activer et désactiver les processeurs CPUO et CPU1, de telle manière que les deux processeurs ne soient généralement pas actifs en même temps. Ce bloc 2 est, de plus, adapté à générer un signal LP (Low Power ou Basse Puissance). Le signal LP prend une première valeur lorsque le processeur CPUO est actif ou en veille et que le 35 processeur CPU1 est désactivé. Le signal LP prend une deuxième valeur lorsque le système est en mode de fonctionnement basse 3061565 5 puissance, c'est-à-dire lorsque le processeur CPUO est désactivé et que le processeur CPU1 est actif ou en veille. Le microcontrôleur 1 est associé à des groupes de périphériques 4 (PERIPHÉRIQUES 1) et 6 (PERIPHÉRIQUES 2). Le groupe 5 de périphériques 4 comprend M périphériques Pl à PM, certains périphériques étant adaptés à générer des signaux d'interruption. Ces signaux sont fournis sur des lignes de sortie 5 du bloc 4. Le groupe de périphériques 6 comprend N périphériques Pl' à PN', certains étant adaptés à générer des signaux d'interruption. Ces 10 signaux sont fournis sur des lignes de sortie 7 du bloc 6. Bien que cela ne soit pas représenté, certains périphériques du groupe 4 peuvent générer des interruptions ne pouvant être traitées que par le processeur CPUO, par exemple pour forcer son activation. Les périphériques du groupe 4 sont couplés aux deux 15 processeurs CPUO et CPU1 à travers un commutateur 8. Le commutateur 8 comprend des entrées recevant les lignes de sortie 5, des premières sorties 9a, des secondes sorties 9b et une entrée de contrôle. L'entrée de contrôle du commutateur 8 reçoit le signal LP généré par le bloc de gestion de puissance 2. Les lignes de sortie 20 9a du commutateur 8 sont couplées au processeur CPUO et les lignes de sortie 9b du commutateur 8 sont couplées au processeur CPUl. Si le signal LP est à la première valeur, le processeur CPUO est sélectionné et le commutateur 8 transfère un signal présent sur l'une des lignes à son entrée vers l'une correspondante des lignes à 25 sa sortie 9a. Si le signal LP est à la seconde valeur, le processeur CPU1 est sélectionné et le commutateur 8 transfère le signal présent sur l'une des lignes à son entrée vers l'une correspondante des lignes à sa sortie 9b. Ainsi, si le processeur CPUO est actif ou en veille, le signal LP est à la première valeur et le processeur CPUO 30 reçoit les signaux d'interruption provenant des périphériques du groupe 4. Lorsque le microcontrôleur passe en mode basse puissance, le processeur CPUO est désactivé, le signal LP prend la seconde valeur et les signaux d'interruption provenant des périphériques du groupe 4 sont traités par le processeur CPUl. Les périphériques du groupe 6 ne sont couplés qu'au processeur CPUO. Les périphériques des groupes 4 et 6 peuvent par exemple être des minuteries, divers 3061565 6 capteurs tels que des capteurs de pression, de température, etc... L'un des périphériques peut être un système de communication permettant la réception et la transmission de données entre le microcontrôleur et un autre dispositif. 5 Le microcontrôleur 1 comprend par exemple un bloc mémoire principal 10 accessible par le processeur CPUO. Le microcontrôleur 1 comprend aussi, par exemple, un bloc mémoire auxiliaire 12 accessible aux processeurs CPUO et CPUl. Ainsi, le bloc 10 n'est accessible que par le processeur principal CPUO et le bloc 12 est 10 accessible par les processeurs CPUO et CPUl. Dans cet exemple de réalisation, le bloc 10 est une mémoire non volatile, par exemple une mémoire dite "Flash", et le bloc 12 est une mémoire volatile, par exemple une mémoire dite "SRAM". La figure lB représente de manière simplifiée le système 15 des figures lA et lB. En particulier, les groupes de périphériques 4 et 6 sont représentés sous la forme de deux blocs non détaillés. A chaque démarrage du système, le bloc mémoire 12 est vide de toute donnée. Des codes sont copiés dans le bloc mémoire 12 à partir du bloc mémoire 10. Le bloc mémoire 12 est maintenu sous 20 tension pour que les données qu'il contient soient conservées quel que soit le processeur actif. Le bloc mémoire 12 contient en particulier des routines d'interruption 14 (ISR ou "Interrupt Service Routine"), associées aux périphériques du groupe 4. Les routines d'interruption 14 ont été copiées depuis un emplacement 16 25 dans le bloc mémoire 10. De même, les vecteurs d'interruption associés aux périphériques du groupe 4 sont copiés dans un emplacement 18 du bloc mémoire 12 depuis un emplacement 20 du bloc mémoire 10. Le bloc mémoire 10 contient aussi les vecteurs 30 d'interruption et des routines d'interruption associés aux périphériques du groupe 6. D'autres codes peuvent éventuellement être copiés dans le bloc mémoire 12, par exemple des codes d'initialisation du processeur CPUl. Le processeur CPU1 n'ayant accès qu'au bloc mémoire 12, les codes d'initialisation sont par 35 exemple transférés dans le bloc mémoire 12 avant d'activer le processeur CPUl. 3061565 7 Lorsqu'une interruption survient au niveau d'un périphérique du groupe 4, elle est traitée par le processeur sélectionné selon le signal LP généré par le circuit de gestion de puissance 2. Le processeur CPUO, lorsqu'il est sélectionné, traite 5 la même routine d'interruption, associée à l'interruption survenue au niveau d'un des périphériques du groupe 4, que le processeur CPU1 lorsqu'il est sélectionné. Ce fonctionnement est décrit plus en détail en relation avec la figure 2. Une interruption survenant au niveau d'un périphérique du 10 groupe 6 ne peut être traitée que si le processeur CPUO est actif ou en veille. Les périphériques du groupe 6 peuvent par exemple être désactivés lors de la désactivation du processeur CPUO pour éviter des pertes d'énergie. Lorsqu'une interruption survient au niveau d'un 15 périphérique du groupe 6, un signal d'interruption i est envoyé vers le processeur CPUO. Le périphérique d'où vient l'interruption détermine le vecteur d'interruption (non représenté), situé dans le bloc mémoire 10, lu par le processeur CPUO. Le vecteur d'interruption contient l'adresse à laquelle est située la routine à 20 exécuter par le processeur CPUO en réponse à l'interruption. Le processeur CPUO accède ensuite, par l'adresse obtenue, aux routines d'interruption situées elles aussi dans le bloc mémoire 10 pour les traiter. La figure 2 représente le fonctionnement du système de la 25 figure 1 dans le cas d'une interruption survenant au niveau d'un périphérique du groupe 4. Lorsque survient un événement au niveau d'un des périphériques du groupe 4, un signal d'interruption i est envoyé vers le commutateur 8. A une étape 22, il est déterminé si le 30 processeur CPU1 est sélectionné, selon la valeur du signal LP fourni au commutateur 8 par le bloc de gestion de puissance 2. Si le signal LP est à la première valeur, c'est-à-dire que le processeur CPU1 n'est pas sélectionné (branche 23 : NON), le processeur principal CPUO est sélectionné et le signal 35 d'interruption i lui est transmis (étape 24). Le processeur CPUO accède ensuite au vecteur d'interruption correspondant au signal 3061565 8 d'interruption i reçu (étape 26). Ce vecteur d'interruption est situé à l'emplacement 20, lui-même situé par exemple dans le bloc mémoire 10. Ce vecteur contient l'adresse à laquelle est située la routine d'interruption associée à l'interruption i à laquelle le 5 processeur accède (étape 28). Cette routine d'interruption est située parmi les routines 14 dans le bloc mémoire 12. Cette routine comprend des instructions qui sont ensuite exécutées par le processeur CPUO (étape 30). Le fonctionnement, dans ce cas, est similaire au fonctionnement du système lorsque l'interruption vient 10 d'un périphérique du groupe 6. Une différence est que les routines d'interruption associées au groupe de périphériques 4 sont stockées dans le bloc mémoire 12, et non dans le bloc mémoire 10. Si le signal LP est à la seconde valeur, c'est-à-dire que le processeur CPU1 est sélectionné (branche 31 : OUI), le système 15 est en mode basse puissance et le processeur actif est le processeur auxiliaire CPU1. Le signal d'interruption i est transmis au processeur CPU1 (étape 32). Le processeur CPU1 accède au vecteur d'interruption associé au signal d'interruption i (étape 34). Le vecteur d'interruption est contenu à l'emplacement 18, dans le bloc 20 mémoire 12. Le vecteur d'interruption contient l'adresse de la routine d'interruption correspondant au signal d'interruption i permettant au processeur CPU1 d'accéder à cette routine (étape 36). Pour un même signal d'interruption i, il s'agit de la même routine que la routine traitée à l'étape 28. Le processeur CPU1 peut alors 25 exécuter la routine (étape 38). Si la routine nécessite une puissance de calcul supérieure à celle du processeur CPU1, le processeur CPUO peut par exemple être activé. En période de faible activité, durant des périodes séparant diverses interruptions, une faible puissance de calcul est 30 suffisante pour maintenir le système en fonctionnement. La puissance de calcul étant liée à la consommation électrique, tout particulièrement durant les périodes de faible activité, le processeur principal CPUO entraine, s'il est maintenu actif, une consommation élevé pour une puissance de calcul inutile. Le 35 processeur CPU1 possède une puissance de calcul suffisante au 3061565 9 fonctionnement durant un période de faible activité, et une consommation plus faible. Lors d'une interruption, l'utilisation du processeur CPU1, s'il est suffisant au traitement de l'interruption, permet de garder 5 une faible consommation électrique. Si la routine associée à cette interruption le prévoit, le processeur CPUO est activé mais ne reste par exemple actif que durant la période nécessaire au traitement de l'interruption. Ainsi, la consommation électrique du système, durant de 10 longues périodes de faible activité entrecoupées de gestion d'interruptions, est diminuée. Un avantage du système décrit ici, et de son mode de fonctionnement, réside non seulement dans l'économie d'énergie mais également dans la simplicité de codage. Les routines d'interruption 15 14 sont identiques et dans le même espace mémoire quel que soit le processeur actif. Ainsi, lors de la programmation, il n'est pas nécessaire pour le concepteur du code de prendre en considération le processeur qui accèdera aux routines d'interruption. Le concepteur compile les routines d'interruption associées aux périphériques du 20 groupe 4 avec le jeu d'instructions du processeur CPU1. Le temps de codage du système décrit est inférieur au temps de codage de deux processeurs ayant chacun son propre code. Des modes de réalisation particuliers ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. 25 En particulier, le bloc mémoire 12, accessible par les deux processeurs CPUO et CPU1, peut être un type de mémoire volatile autre qu'une mémoire SRAM, ou peut être une mémoire non volatile. Dans le cas d'une mémoire non volatile, l'écriture des codes et données liés au fonctionnement du processeur auxiliaire CPU1 et liés 30 à la gestion des périphériques du groupe 4, dans cette mémoire non volatile, n'est faite qu'une fois et non à chaque démarrage du système. De même, le bloc mémoire 10 peut être un type de mémoire non volatile autre qu'une mémoire Flash. Les blocs mémoire 10 et 12 peuvent aussi n'être qu'une seule mémoire. REVENDICATIONS1. Système comprenant : des premier (CPUO) et second (CPU1) processeurs, le second étant capable de traiter uniquement un sous-ensemble du jeu d'instructions traitable par le premier ; un circuit de gestion de puissance (2) adapté à sélectionner l'un ou l'autre des premier et second processeurs (CPUO, CPU1) et à le rendre actif ou le mettre en veille ; un premier périphérique (4) adapté à générer un signal d'interruption ; un commutateur (8) adapté à diriger le signal d'interruption soit vers le premier processeur, soit vers le second processeur, selon celui qui est sélectionné ; et une première mémoire (12) adaptée à stocker une routine d'interruption associée au signal d'interruption, le processeur 15 actif étant adapté à exécuter cette routine d'interruption en réponse au signal d'interruption. 2. Système selon la revendication 1, dans lequel le circuit de gestion de puissance (2) est adapté à générer un signal (LP) appliqué au commutateur (8) pour commander la sélection du 20 processeur. 3. Système selon la revendication 1 ou 2, comprenant plusieurs autres périphériques (4, 6), dont certains sont adaptés à générer un signal d'interruption. 4. Système selon la revendication 3, dans lequel le second 25 processeur (CPU1) n'est pas apte à recevoir des signaux d'interruption générés par tout ou partie (6) des autres périphériques (6). 5. Système selon l'une quelconque des revendications 1 à 4, comprenant une seconde mémoire (10) accessible par le premier 30 processeur (CPUO) et contenant un vecteur d'interruption fournissant l'adresse, dans la première mémoire (12), de la routine d'interruption associée au premier périphérique. 6. Système selon la revendication 5, dans lequel la première mémoire (12) est une mémoire volatile et la seconde mémoire 35 (10) est une mémoire non volatile. 3061565 11 7. Système selon la revendication 6, dans lequel la seconde mémoire (10) est adaptée à stocker des données à copier dans la première mémoire (12), lesdites données comprenant la routine d'interruption et le vecteur d'interruption associée au premier 5 périphérique. 8. Système selon l'une quelconque des revendications 1 à 7, dans lequel le second processeur (CPU1) est de taille inférieure au premier processeur (CPUO). 9. Dispositif mobile comprenant le système selon l'une 10 quelconque des revendications 1 à 8. 10. Procédé d'actionnement d'un système comprenant un premier processeur (CPUO), un second processeur (CPU1), une première mémoire (12) et un premier périphérique (4), le procédé comprenant les étapes suivantes : sélectionner, par un circuit de gestion de puissance (2), le second processeur (CPUO) capable de traiter un premier jeu d'instructions ou le premier processeur (CPU1) capable de traiter un sous-ensemble du premier jeu d'instructions ; rendre actif ou mettre en veille, par un circuit de gestion 20 de puissance, le processeur sélectionné ; générer, par un périphérique (4), un signal d'interruption pouvant être traité par chacun des premier et second processeurs (CPUO, CPU1) ; diriger le signal d'interruption vers le processeur 25 sélectionné parmi les premier (CPUO) et second (CPU1) processeurs ; et accéder, par le processeur sélectionné, à une routine d'interruption contenue dans la première mémoire (12) et associée au signal d'interruption, et la traiter. 30 11. Procédé selon la revendication 10, comprenant : accéder, par le premier processeur (CPUO), en réponse au signal d'interruption, à un vecteur d'interruption stocké dans une seconde mémoire (10) et fournissant l'adresse, dans la première mémoire (12), de la routine d'interruption.