Brevet FR2977340A1 — publié le 20130104

i PROCEDE DE TRAITEMENT DE DEFAILLANCES DANS UN MICROCONTROLEUR La présente invention concerne la détection et le traitement d'erreurs dans une unité de contrôle. La présente invention s'applique notamment à des appareils comportant des circuits de puissance commandés par une unité de contrôle exécutant un programme stocké dans une mémoire. s Ainsi l'invention peut s'appliquer aux appareils électroménagers, aux systèmes industriels, aux appareils médicaux, comportant des circuits de puissance assurant le fonctionnement d'un ou plusieurs actionneurs électriques tels que des moteurs électriques, des solénoïdes, des électrovannes, etc. io De tels appareils comportent généralement une unité contrôle commandant les actionneurs selon une ou plusieurs séquences déterminées. L'unité de contrôle, par exemple de type microcontrôleur, est connectée ou comprend des mémoires comportant au moins une mémoire non volatile mémorisant un programme exécuté par l'unité de contrôle, et ls une mémoire non volatile permettant l'exécution du programme. Certaines normes comme IEC 60335 et IEC 60730 requièrent que les mémoires des unités de contrôle d'appareils électroménagers soient testées afin de déclencher en cas de détection d'une défaillance, l'exécution d'une procédure d'arrêt des circuits de puissance, assurant notamment l'arrêt des 20 actionneurs et la coupure des circuits de puissance. Le test des mémoires est généralement effectué par l'unité de contrôle qui exécute une procédure de test en tâche de fond de tâches principales. Cette procédure de test consiste généralement à sauvegarder le contenu d'une zone mémoire à tester dans une zone libre, écrire un mot de test dans tous les 25 emplacements de la zone à tester, lire les mots écrits dans la zone à tester, comparer chaque mot lu avec le mot de test, et restituer le contenu d'origine de la zone mémoire, avant de passer au test d'une autre zone de la mémoire. Si une erreur est détectée, la procédure d'arrêt est exécutée. Cette procédure de test s'avère trop lente et ne permet pas de 30 détecter une erreur de lecture de la mémoire par une tâche principale. En effet, la zone mémoire en cours de test ne peut pas être une zone mémoire utilisée par une tâche principale, car son contenu est modifié par la procédure de test. Par conséquent, si une erreur de lecture de la mémoire se produit lors d'une opération d'une tâche principale, cette erreur ne pourra être détectée que bien plus tard, lors du test de la zone mémoire où s'est s produite l'erreur de lecture. La procédure d'arrêt ne sera donc exécutée que bien après l'apparition de l'erreur de lecture. En outre, si l'erreur de lecture entraine un dysfonctionnement de l'unité de contrôle, la procédure de test et donc la procédure d'arrêt peuvent ne pas être exécutées. Certaines mémoires par exemple de type volatile (RAM) associent un io bit de parité à chaque mot qu'elles mémorisent, et comprennent un circuit d'interface procédant au test de ce bit de parité à chaque lecture d'un mot pour détecter des erreurs éventuelles de parité. Si une telle erreur de parité est détectée lors de la lecture d'un mot, le circuit d'interface émet un signal d'erreur. Par ailleurs, certaines mémoires de type non volatile (EEPROM ou ls Flash) associent des bits de correction d'erreur à chaque mot qu'elles mémorisent. Lors de la lecture d'un mot, un circuit d'interface de ces mémoires exploite les bits de correction d'erreur pour corriger le mot lu si nécessaire. Si les erreurs affectant un mot lu sont trop étendues pour pouvoir être corrigées, le circuit d'interface émet un signal d'erreur. 20 Il a déjà été proposé d'exploiter ce signal d'erreur pour lever une exception ou une interruption dans l'unité de contrôle. L'interruption déclenche l'exécution par l'unité de contrôle d'une routine d'interruption incluant la procédure d'arrêt des circuits de puissance. Cependant, il peut arriver que l'exécution de la routine d'interruption se bloque en raison d'un 25 accès erroné à un mot de la mémoire ou en raison d'une défaillance de la mémoire où est stockée cette routine. Il en résulte que la procédure d'arrêt peut ne pas être exécutée en cas de détection d'une erreur par une mémoire. Il est donc souhaitable de pouvoir détecter une défaillance d'une 30 mémoire lors d'un accès défectueux à la mémoire par une tâche principale exécutée par l'unité de contrôle. Il est également souhaitable d'assurer le déclenchement de l'exécution de la procédure d'arrêt des circuits de puissance dès qu'une défaillance d'une mémoire est détectée. Il est également souhaitable d'éviter d'occuper les ressources de l'unité de 35 contrôle à mémoriser et exécuter des procédures de test, et d'éviter d'alourdir les tâches de développement du programme exécuté par l'unité de contrôle par la nécessité de développer de telles procédures de test. Des modes de réalisation concernent un procédé de traitement de défaillances dans une unité de contrôle, le procédé comprenant des étapes s consistant à : à chaque requête de lecture d'une donnée dans une première mémoire, reçue par un premier circuit d'interface d'accès à la première mémoire, calculer par le premier circuit d'interface, un mot de contrôle à partir de la donnée lue, si le mot de contrôle calculé est différent d'un mot de contrôle lu dans la mémoire en association avec la donnée lue, activer un io signal d'erreur par le premier circuit d'interface, et transmettre le signal d'erreur à un circuit de sortie de l'unité de contrôle, sans faire intervenir de circuits de l'unité de contrôle, susceptibles d'émettre une requête d'accès à la première mémoire. Selon un mode de réalisation, le procédé comprend une étape ls d'application par le premier circuit d'interface d'un calcul de parité à la donnée lue pour calculer le mot de contrôle. Selon un mode de réalisation, le procédé comprend des étapes consistant à : à chaque requête de lecture d'une donnée dans une seconde mémoire, reçue par un second circuit d'interface d'accès à la seconde 20 mémoire, détecter par un second circuit d'interface d'accès à la seconde mémoire, des erreurs dans la donnée lue à l'aide de bits de correction d'erreur lus dans la mémoire en association avec la donnée lue, si des erreurs non corrigibles sont détectées dans la donnée lue, par le second circuit d'interface, activer un signal d'erreur par le second circuit d'interface, 25 et transmettre le signal d'erreur du second circuit d'interface vers le circuit de sortie, sans faire intervenir de circuits de l'unité de contrôle, susceptibles d'émettre une requête d'accès à la seconde mémoire. Selon un mode de réalisation, le circuit de sortie reçoit au moins un autre signal d'erreur appartenant à l'ensemble comprenant un signal d'erreur 30 d'alimentation de l'unité de contrôle, un signal de comparaison à un seuil d'un signal d'entrée de l'unité de contrôle, un signal d'erreur matérielle, un signal de déclenchement manuel d'arrêt d'urgence, et un signal d'erreur d'horloge système de l'unité de contrôle. Selon un mode de réalisation, chaque signal d'erreur est transmis au 35 circuit de sortie s'il est non masqué par un circuit de masquage. Selon un mode de réalisation, le procédé comprend des étapes d'initialisation du circuit de masquage à un état non masqué dans lequel chaque signal d'erreur est transmis au circuit de sortie, de masquage d'un signal d'erreur, et d'interdiction de démasquage d'un signal d'erreur pour transmettre à nouveau un signal d'erreur qui était masqué. Selon un mode de réalisation, le procédé comprend une étape s d'exécution par le circuit de sortie d'une procédure d'arrêt de circuits de puissance reliés au circuit de sortie, déclenchée par la réception par le circuit de sortie d'un signal d'erreur. Des modes de réalisation concernent également une unité de contrôle comprenant : un premier circuit d'interface d'accès à une première Io mémoire, au moins un circuit susceptible d'émettre une requête d'accès à la première mémoire, et un circuit de sortie, l'unité de contrôle étant configurée pour mettre en oeuvre le procédé tel que décrit précédemment. Selon un mode de réalisation, la première mémoire est une mémoire is volatile. Selon un mode de réalisation, l'unité de contrôle comprend un second circuit d'interface d'accès à une seconde mémoire. Selon un mode de réalisation, la seconde mémoire est une mémoire non volatile. 20 Selon un mode de réalisation, les circuits de l'unité de contrôle, susceptibles d'émettre une requête d'accès à la première ou à la seconde mémoire, comprennent une unité de traitement, et éventuellement au moins un circuit de transfert de bloc de donnée vers ou à partir d'une mémoire. Selon un mode de réalisation, l'unité de contrôle comprend un circuit 25 de masquage de signaux d'erreur configuré pour ne transmettre au circuit de sortie que des signaux d'erreur non masqués. Selon un mode de réalisation, le circuit de masquage est configuré pour recevoir au moins un autre signal d'erreur appartenant à l'ensemble comprenant un signal d'erreur d'alimentation de l'unité de contrôle, un signal 30 de comparaison à un seuil d'un signal d'entrée de l'unité de contrôle, un signal d'erreur matérielle, un signal de déclenchement manuel d'arrêt d'urgence, et un signal d'erreur d'horloge système de l'unité de contrôle. Des modes de réalisation concernent également un appareil comprenant des circuits de puissance et une unité de contrôle telle que 35 définie précédemment, le circuit de sortie de l'unité de contrôle étant relié aux circuits de puissance. 2977340 s Des exemples de réalisation de l'invention seront décrits dans ce qui suit, à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente des circuits d'un appareil, comprenant une unité de contrôle et des circuits de puissance, selon un mode de réalisation, s la figure 2 représente un circuit de l'unité de contrôle, selon un mode de réalisation. La figure 1 représente des circuits d'un appareil tel qu'un appareil électroménager. Les circuits représentés sur la figure 1 comprennent une unité de contrôle MC, des commutateurs de puissance PSW commandés io par l'unité MC, et des circuits de puissance LDC connectés aux commutateurs PSW. L'unité MC comprend une unité de traitement PU et une matrice d'interconnexion de bus BMX connectée l'unité PU. L'unité MC peut également comprendre notamment un ou plusieurs circuits DMA1, DMA2 de transfert de blocs de données vers ou à partir d'une mémoire, ls connectés à la matrice BMX, et d'autres circuits OBM pouvant requérir des accès à la matrice BMX. L'unité MC comprend également une mémoire volatile VM, par exemple de type RAM, et une mémoire non volatile NVM, par exemple de type EEPROM ou Flash. La mémoire VM est reliée au bus BMX par l'intermédiaire d'un circuit d'interface IVM assurant notamment un 20 contrôle de parité. La mémoire NVM est reliée au bus BMX par l'intermédiaire d'un circuit d'interface INV assurant notamment des fonctions de détection et de correction d'erreur des mots lus dans la mémoire. L'unité MC peut être un microcontrôleur ou un microprocesseur. Les mémoires NV, NVM peuvent être internes ou externes à l'unité MC. Les 25 commutateurs de puissance PSW comprennent par exemple des transistors bipolaires à grille isolée IGBT (Insulated Gate Bipolar Transistor). Le circuit IVM est configuré pour calculer une somme de contrôle de type CRC (Cyclic Redundancy Check) d'un mot lu dans la mémoire NV et pour comparer la somme de contrôle calculée avec une somme de contrôle 30 stockée dans la mémoire NV en association avec le mot lu. Si la somme de contrôle calculée ne correspond pas à celle lue dans la mémoire VM en association avec le mot lu, le circuit IVM active le signal d'erreur PS. La somme de contrôle est par exemple un calcul de parité et fournit un résultat sur 1 bit dit de "parité". Dans cet exemple, chaque mot stocké dans la 35 mémoire VM est donc associé à un bit de parité. Le circuit INV est configuré pour mettre en oeuvre un algorithme de détection et de correction d'erreur, par exemple un algorithme basé sur les codes de Hamming. Chaque mot stocké dans la mémoire NVM est associé à plusieurs bits de parité dont le nombre est choisi en fonction du nombre s d'erreurs dans un mot susceptibles d'être corrigées et du nombre d'erreurs susceptibles d'être détectées. Si le circuit INV détecte sur un mot lu des erreurs qu'il ne peut pas corriger, il active un signal d'erreur ES. L'unité de contrôle MC comprend également des circuits de comptage horaire TMR (timers) générant des signaux de comptage horaire ou des io signaux de modulation de largeur d'impulsion PWM (Pulse Width Modulation), et un circuit logique de commande OLC recevant des signaux de sortie des circuits TMR. Le circuit OLC comprend des sorties connectées chacune à une entrée de commande d'un des commutateurs de puissance PSW. Le circuit OLC commande les commutateurs PSW selon des ls séquences prédéterminées cadencées à l'aide des signaux issus des circuits de comptage TMR. Selon un mode de réalisation, chacun des signaux d'erreur émis par les circuits IVM et INV est transmis à un circuit logique de gestion d'erreurs FLC pouvant recevoir par ailleurs des signaux d'erreur émis par d'autres 20 circuits (non représentés) de l'unité MC. Le circuit FLC est connecté en sortie à une entrée du circuit OLC prévue pour recevoir un signal d'arrêt SS qui commande l'exécution de séquences d'arrêt commandant les commutateurs PSM pour arrêter d'une manière adéquate les différents actionneurs des circuits de puissance LDC, et couper l'alimentation des 25 circuits de puissance. Le circuit FLC est configuré pour activer le signal d'arrêt SS, lors de la réception d'un signal d'erreur actif, et éventuellement pour masquer certains signaux d'erreur afin qu'ils ne déclenchent pas la procédure d'arrêt. La figure 2 représente le circuit logique FLC selon un mode de 30 réalisation. Le circuit FLC comprend un registre de masquage MSK, plusieurs portes logiques AG1-AG7 de type ET, et une porte logique OG1 de type OU. Chaque porte AG1-AG7 reçoit sur une entrée un bit respectif d'une cellule du registre MSK et sur une autre entrée l'un des signaux d'erreur fourni en entrée du circuit FLC. La sortie de chaque porte AG1-AG7 est 35 connectée en sortie à une entrée respective de la porte OG1. La sortie de la porte OG1 fournit le signal d'arrêt SS commandant le circuit OLC. Chaque cellule du registre MSK peut donc prendre soit un état masqué (à 0 dans l'exemple de la figure 2), soit un état non masqué (à 1) autorisant que le signal d'erreur associé par l'une des portes AG1-AG7 à la cellule, entraine s l'activation du signal d'arrêt SS et donc l'exécution de la séquence d'arrêt par le circuit OLC. Le registre MSK peut être relié au bus BMX pour être accessible en écriture notamment par l'unité PU. Les signaux d'erreur comprennent les signaux PS, ES fournis par les circuits IVM et INV, et peuvent comprendre également, notamment un signal d'erreur PVD Io provenant d'un circuit de supervision d'alimentation de l'unité MC, des signaux CMP issus de comparateurs prévus pour comparer à des seuils des signaux d'entrée de l'unité MC, des signaux d'erreurs matérielles HFT, un signal BKI de déclenchement manuel d'arrêt d'urgence, et un signal d'erreur CKS d'horloge système de l'unité MC. Lorsque le signal SS est actif, il ls correspond donc à au moins un signal d'erreur actif et non masqué. Chaque cellule à l'état masqué du registre MSK empêche ainsi l'exécution de la séquence d'arrêt par le circuit OLC lorsque le signal d'erreur associé devient actif. Le registre MSK peut être protégé en écriture de manière à autoriser seulement le passage de chacune de ses cellules à l'état 20 masqué, et donc à interdire le passage de celles-ci à l'état non masqué. Chaque cellule du registre MSK peut être initialisée à l'état non masqué lors de I'initialisation de l'unité MC, puis chargée par un mot de masquage lu dans la mémoire NVM par une procédure de démarrage de l'unité MC, par exemple exécutée par l'unité PU. Le programme exécuté par l'unité MC peut 25 ensuite seulement passer les cellules du registre MSK à l'état masqué. Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications. En particulier, l'invention n'est pas limitée aux circuits décrits précédemment et couvre également une unité de contrôle connectée à des mémoires 30 externes. En outre, l'unité de contrôle ne comporte pas nécessairement un circuit de masquage. En effet, dans certaines applications il peut ne pas être nécessaire de masquer les signaux d'erreur. Par ailleurs, l'unité de contrôle n'est pas nécessairement reliée à des circuits de puissance. Par ailleurs, le contrôle de la parité de données lues en mémoire n'est 35 pas nécessairement effectué sur une mémoire volatile, mais peut bien entendu être effectué sur une mémoire non volatile. Les opérations de détection et correction d'erreur peuvent également être effectuées sur une mémoire volatile. REVENDICATIONS1. Procédé de traitement de défaillances dans une unité de contrôle, le procédé comprenant des étapes consistant à : à chaque requête de lecture d'une donnée dans une première mémoire (VM), reçue par un premier circuit d'interface (IVM) d'accès à la s première mémoire, calculer par le premier circuit d'interface (IVM), un mot de contrôle à partir de la donnée lue, si le mot de contrôle calculé est différent d'un mot de contrôle lu dans la mémoire en association avec la donnée lue, activer un signal d'erreur (PS) par le premier circuit d'interface, et io transmettre le signal d'erreur à un circuit de sortie (OLC) de l'unité de contrôle, sans faire intervenir de circuits (PU, DMA1, DMA2, OBM) de l'unité de contrôle (MC), susceptibles d'émettre une requête d'accès à la première mémoire. ls 2. Procédé selon la revendication 1, comprenant une étape d'application par le premier circuit d'interface (IVM) d'un calcul de parité à la donnée lue pour calculer le mot de contrôle. 3. Procédé selon la revendication 1 ou 2, comprenant des étapes 20 consistant à : à chaque requête de lecture d'une donnée dans une seconde mémoire (NVM), reçue par un second circuit d'interface (IVM) d'accès à la seconde mémoire, détecter par un second circuit d'interface (INV) d'accès à la seconde mémoire, des erreurs dans la donnée lue à l'aide de bits de 25 correction d'erreur lus dans la mémoire en association avec la donnée lue, si des erreurs non corrigibles sont détectées dans la donnée lue, par le second circuit d'interface, activer un signal d'erreur (ES) par le second circuit d'interface, et transmettre le signal d'erreur du second circuit d'interface vers le 30 circuit de sortie (OLC), sans faire intervenir de circuits (PU, DMA1, DMA2, OBM) de l'unité de contrôle (MC), susceptibles d'émettre une requête d'accès à la seconde mémoire. 9 2977340 io 4. Procédé selon l'une des revendications 1 à 3, dans lequel le circuit de sortie (OLC) reçoit au moins un autre signal d'erreur appartenant à l'ensemble comprenant un signal d'erreur (PVD) d'alimentation de l'unité de contrôle (MC), un signal de comparaison (CMP) à un seuil d'un signal d'entrée de l'unité de contrôle, un signal d'erreur matérielle (HFT), un signal (BKI) de déclenchement manuel d'arrêt d'urgence, et un signal d'erreur (CKS) d'horloge système de l'unité de contrôle. 5. Procédé selon l'une des revendications 1 à 4, dans lequel chaque io signal d'erreur est transmis au circuit de sortie (OLC) s'il est non masqué par un circuit de masquage (FLC). 6. Procédé selon la revendication 5, comprenant des étapes d'initialisation du circuit de masquage (FLC) à un état non masqué dans 15 lequel chaque signal d'erreur est transmis au circuit de sortie (OLC), de masquage d'un signal d'erreur, et d'interdiction de démasquage d'un signal d'erreur pour transmettre à nouveau un signal d'erreur qui était masqué. 7. Procédé selon l'une des revendications 1 à 6, comprenant une 20 étape d'exécution par le circuit de sortie (OLC) d'une procédure d'arrêt de circuits de puissance (LDC) reliés au circuit de sortie, déclenchée par la réception par le circuit de sortie d'un signal d'erreur. 8. Unité de contrôle (MC) comprenant : 25 un premier circuit d'interface (IVM) d'accès à une première mémoire (VM), au moins un circuit (PU, DMA1, DMA2, OBM) susceptible d'émettre une requête d'accès à la première mémoire, et un circuit de sortie (OLC), 30 caractérisée en ce qu'elle est configurée pour mettre en oeuvre le procédé selon l'une des revendications 1 à 6. 9. Unité de contrôle selon la revendication 8, dans laquelle la première mémoire (VM) est une mémoire volatile. 35ii 10. Unité de contrôle selon la revendication 8 ou 9, comprenant un second circuit d'interface (INV) d'accès à une seconde mémoire (NVM). 11. Unité de contrôle selon la revendication 10, dans laquelle la s seconde mémoire (VM) est une mémoire non volatile. 12. Unité de contrôle selon l'une des revendications 8 à 11, dans laquelle les circuits (PU, DMA1, DMA2, OBM) de l'unité de contrôle (MC), susceptibles d'émettre une requête d'accès à la première ou à la seconde io mémoire, comprennent une unité de traitement (PU), et éventuellement au moins un circuit de transfert de bloc de donnée vers ou à partir d'une mémoire (DMA1, DMA2). 13. Unité de contrôle selon l'une des revendications 8 à 12, ls comprenant un circuit de masquage (FLC) de signaux d'erreur configuré pour ne transmettre au circuit de sortie que des signaux d'erreur non masqués. 14. Unité de contrôle selon la revendication 13, dans lequel le circuit 20 de masquage (FLC) est configuré pour recevoir au moins un autre signal d'erreur appartenant à l'ensemble comprenant un signal d'erreur (PVD) d'alimentation de l'unité de contrôle (MC), un signal de comparaison (CMP) à un seuil d'un signal d'entrée de l'unité de contrôle, un signal d'erreur matérielle (HFT), un signal (BKI) de déclenchement manuel d'arrêt 25 d'urgence, et un signal d'erreur (CKS) d'horloge système de l'unité de contrôle. 15. Appareil comprenant des circuits de puissance (LDC) et une unité de contrôle (MC) selon l'une des revendications 8 à 14, le circuit de sortie 30 (OLC) de l'unité de contrôle étant relié aux circuits de puissance. 16. Appareil selon la revendication 15, dans lequel le circuit de sortie (OLC) est relié aux circuits de puissance (LDC) par l'intermédiaire de commutateurs de puissance (PSW) commandés par le circuit de sortie, lecircuit de sortie étant configuré pour exécuter une procédure d'arrêt des circuits de puissance (LDC) sur réception de chaque signal d'erreur.