Brevet FR2638867A1 — publié le 19900511

PROCEDE ET CIRCUIT DE REINITIALISATION DU FONCTIONNEMENT D'UN CIRCUIT L'invention concerne les circuits à microprocesseur et plus généralement les circuits fonctionnant sous la commande de séries d'instructions. Les programmes de commande de tels circuits, généralement stockés en mémoire morte (ROM), comportent des séquences de réinitialisation pour faire redémarrer le fonctionnement du circuit en cas de défaut ou d'interruptions, volontaires ou non. Les défauts et interruptions peuvent provenir de différentes sources liées au fonctionnement interne du circuit ou à l'environnement. Par exemple, une chute anormale de la tension d'alimentation est un défaut; l'enfoncement d'un bouton de restauration est une interruption volontaire. Selon la nature du défaut ou de l'interruption, un programme d'instructions ou un autre sera mis en oeuvre en vue de redémarrer le fonctionnement du circuit. Toujours à titre d'exemple, on peut concevoir que si l'interruption est une interruption volontaire par enfoncement d'un bouton de restauration, un premier programme d'instructions sera appliqué au microprocesseur pour réinitialiser le fonctionnement, alors que si l'interruption provient de la détection d'un défaut d'alimentation, un deuxième programme sera lancé. Sous l'appellation premier ou deuxième programme, on comprendra qzeil peut s'agir aussi d'un meme programme dont certaines parties (sous-programmes) se déroulent différemment dans les deux cas. Les circuits a microprocesseur comportent donc généralement un circuit dit "circuit de restauration" dont la fonction est de recevoir des signaux électriques d'interruption et de fournir d'autres signaux électriques assurant le lancement de programmes de réinitialisation. Dans la technique connue pour des circuits a microprocesseur relativement simples tels que ceux qui servent à piloter des appareils grand public (radios, magnétoscopes, machines à laver, etc.) la solution adoptée pour la réinitialisation en cas de défaut d'alimentation est la suivante : le circuit de restauration reçoit des signaux en provenance d'un détecteur de défaut d'alimentation et en provenance de diverses sources d'interruption. Lorsqu'il reçoit un signal quelconque d'interruption, que ce soit du détecteur de défaut d'alimentation ou d'une autre source, il fournit un ordre de réinitialisation. Cet ordre initialise par exemple un compteur de programme a une position correspondant à la première instruction d'un programme général de réinitialisation contenu dans une mémoire morte.Le programme général se déroule et contient a un moment une séquence de test d'un bit drapeau stocké dans un registre spécifié présent matériellement dans le circuit. Or un bit drapeau a été inscrit dans ce registre par un comparateur connecté à un registre témoin. le registre témoin comporte un grand nombre de cases, par exemple 80 cases binaires (10 octets) qui sont en principe toutes dans le même état. Le comparateur examine l'état des 80 bits et, s'il en trouve un au moins qui est différent des autres, il vient forcer dans un état spécifié le bit drapeau. La raison en est la suivante : on considère que si un bit (ou plusieurs) sur les 80 n'est plus dans le même état que les autres, alors qu'on n'a rien fait volontairement pour le changer d'état, c'est qu'il y a eu un problème d'alimentation. Si au contraire les bits sont restés tous identiques c'est qu'il n'y a pas eu de problème d'alimentation. Le programme de réinitialisation vient donc tester l'état du bit du registre de bit drapeau, lequel est le résultat de l'examen du registre témoin. Selon l'état du bit drapeau, on effectue un branchement ou un autre dans le programme de réinitialisation. Par exemple, s'il y a eu un problème d'alimentation, on effectue une réinitialisation du contenu de certaines mémoires dynamiques (RAM) car ce contenu n'est plus fiable; on réintroduit dans la mémoire dynamiques des données contenues par exemple dans la mémoire morte ou calculées par programme. Sinon, si l'interruption vient d'une autre source, on effectue le programme de réinitialisation sans passer par la séquence de réintroduction en mémoire dynamique de données sauvegardées en mémoire morte.Les données présentes étant considérées comme issues de calculs valides. Pour simplifier la constitution des circuits de réinitialisation (notamment en supprimant le registre témoin de 80 bits) et pour rendre plus sûre la réinitialisation de tout ce qui doit être réinitialisé, la présente invention propose de commander l'inscription du bit drapeau par la sortie du détecteur de défaut d'alimentation (celui qui sert à fournir un signal de déclenchement de programme de réinitialisation), pour forcer dans le registre de bit drapeau un état déterminé des lors que le détecteur détecte un défaut nécessitant une réinitialisation. Autrement dit, on ne modifie pas le programme de réinitialisation avec ses branchements et la séquence de test du bit drapeau, mais au lieu que le contenu du registre drapeau soit le résultat de l'examen des bouleversements éventuels des bits d'un registre témoin de 80 bits, ce contenu est forcé par le détecteur de défauts d'alimentation lui-même. Le défaut qui donne lieu a une réinitialisation reste mémorisé dans le registre de bit drapeau même après disparition du signal de sortie du détecteur qui a déclenché une procédure de réinitialisation. Plus précisément, l'invention propose un procédé de réinitialisation d'un circuit commandé par des séries d'instructions, ce procédé comprenant les étapes consistant à - recevoir un signal d'interruption qui provient soit d'une sortie d'un détecteur de défaut d'alimentation, soit d'une autre source d'interruption, - faire inscrire par le détecteur de défaut d'alimentation un bit dans un registre drapeau lorsque le détecteur de défaut d'alimentation émet un signal d'interruption, - faire déclencher par un circuit de restauration un programme de restauration lors de la réception par le circuit de restauration d'un signal d'interruption quelle que soit sa provenance, - tester au cours du programme l'état du bit drapeau, - effectuer un branchement de programme en fonction du résultat du test. Exprimée sous forme de circuiterie, l'invention propose un circuit électrique comprenant un circuit principal commandé par instructions, un circuit de détection de défauts d'alimentation, un circuit de restauration recevant comme entrées d'une part la sortie du circuit de détection et d'autre part d'autres signaux d'entrée susceptibles de déclencher un programme de restauration du fonctionnement du circuit principal, le circuit de restauration étant apte à déclencher l'exécution d'un programme de restauration exécutable par le circuit principal, le programme de restauration comportant d'une part une étape de vérification de l'état d'un bit drapeau et d'autre part des séquences d'instructions différentes selon l'état de ce bit, caractérisé en ce que le bit drapeau est stocké dans un registre relié à la sortie du circuit de détection de défauts d'alimentation, ce bit représentant une information sur le fait que la restauration est due à une coupure d'alimentation. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence au dessin annexé dans lequel la figure unique représente un schéma bloc permettant de mieux comprendre l'invention. On a représenté symboliquement sur la figure un circuit 10 contrôlé par un microprocesseur dont l'unité centrale est désignée par la référence UC. Le microprocesseur est contrôlé lui-même par un programme d'instructions stocké par exemple dans une mémoire morte (ROM). L'unité centrale fonctionne en coopération étroite avec la mémoire morte ou mémoire de programme, avec au moins une mémoire vive (RAN) ou mémoire dynamique, et enfin avec d'autres éléments de circuits , notamment des périphériques d'entrée-sortie. Tous ces éléments qui coopèrent avec l'unité centrale sont interconnectés entre eux par un bus B de plusieurs conducteurs fournissant et recevant des signaux selon un protocole bien déterminé. La mémoire de programme contient un programme de restauration du fonctionnement du circuit, ce programme étant prévu pour faire redémarrer le circuit 10 après un incident. Ce programme est mis en route de manière automatique après un incident grâce à un circuit de restauration 12 qui est couplé à l'unité centrale UC. Par exemple, le circuit de restauration 12 fournit un signal qui remet à zéro (ou à une autre valeur bien déterminée) un compteur d'instructions de l'unité centrale. Ce compteur sert à l'adressage de la mémoire de programme et l'adresse correspondant au contenu du compteur (remis à zéro ou réinitialisé à une valeur de départ connue) est pointée; å cette adresse est inscrite dans la mémoire de programme la première instruction d'un programme de restauration du fonctionnement du circuit 10. Les incidents qui peuvent engendrer, à travers le circuit de restauration 12, un signal de réinitialisation du compteur de programme de itunité centrale sont de plusieurs sortes. Dans l'exemple représenté, une porte OU à plusieurs entrées reçoit différents signaux dont chacun pris individuellement doit pouvoir déclencher l'émission par le circuit de restauration 12 d'un signal de réinitialisation. Un des signaux d'entrée de la porte OU est issu d'une borne de restauration du circuit 10; ce signal est désigné par Rse sur la figure. Le signal RSe est un signal d'interruption volontaire de fonctionnement, provenant de l'extérieur du circuit 10. Un autre signal d'entrée susceptible de provoquer la restauration est désigné par la référence RSa; il provient d'un circuit 14 de surveillance d'alimentation faisant partie du circuit 10; ce signal RSa provoque la restauration dans le cas ou le circuit de surveillance détecte que la tension d'alimentation Vdd du circuit 10 est au dessous d'une valeur minimale admissible pour un fonctionnement correct du circuit. Enfin, d'autres signaux susceptibles de provoquer la restauration sont désignés globalement par la référence RSd; ils proviennent de l'intérieur ou de l'extérieur du circuit 10 et correspondent soit à des interruptions volontaires soit à des détections de divers fonctionnements anormaux du circuit. La série d'instructions contenue en mémoire morte et correspondant à un programme de restauration du fonctionnement du circuit 10 comprend une première partie qui correspond å des étapes de réinitialisations commune à tous les cas d'interruptions envisagés; en d'autres mots, la première partie du programme de restauration est la même, que l'interruption vienne du signal RSe (restauration par ltextérieur), du signal RSa (détection par le circuit 14 d'une insuffisance d'alimentation), ou du signal Rsd (autres). Cette partie correspond par exemple à l'exécution d'instructions telles que - remise à zéro de certains registres, - remise à zéro de certains compteurs, - tests de l'état de certains conducteurs du bus, - etc. Lorsque cette partie du programme a été exécutée, on arrive à une instruction de test du contenu d'un registre spécial à un bit, désigné par la référence DR sur la figure. Ce registre contient un bit drapeau, c'est-à-dire un bit indiquant un état particulier que le programme doit prendre en compte avant de se poursuivre. Le registre de bit drapeau est mis & l'état logique zéro (par exemple) lors d'un fonctionnement normal du circuit. La fin du programme de restauration du fonctionnement du circuit 10 comprend d'ailleurs & cet effet une instruction de remise à zéro du contenu du registre de bit drapeau DR. Mais le contenu du registre de bit drapeau DR est mis & l'état logique 1 par le circuit 14 de surveillance d'alimentation des que celui-ci détecte une chute de tension trop importante pour que le circuit 10 continue à fonctionner de manière fiable. Lors du déroulement du programme de restauration, on arrive donc å une étape de test du bit drapeau du registre DR. S'il est à zéro, cela signifie que la restauration en cours est due & autre chose qu'une insuffisance de tension d'alimentation, et on court-circuite certaines étapes du programme de restauration; on court-circuite ces étapes grâce à une instruction de branchement conditionnel prévue dans le programme, la condition étant le contenu du registre de bit drapeau. Si au contraire le bit drapeau est à l'état logique 1, cela veut dire que la restauration en cours a été nécessitée par une insuffisance d'alimentation, et il est alors nécessaire de procéder à un programme de restauration plus complet. L'instruction de branchement conditionnel aiguille alors le programme vers l'exécution d'une partie de programme omise dans le cas précédent. Par exemple, la partie de programme additionnel de restauration, qu'il faut exécuter dans le cas où la restauration fait suite & une insuffisance de tension d'alimentation, comprend des instructions d'écriture dans la mémoire de travail (RAM) de données, coefficients, constantes, etc. qui sont initialement contenues en mémoire morte (ROT) ou issues de calculs antérieurs correspondant au contexte précédent le défaut d'alimentation, mais dont le microprocesseur a besoin de disposer en mémoire vive pour fonctionner. On considère que la chute de tension d'alimentation a entraîné un risque de perte de ces données dans la mémoire vive (ou elles avaient été installées lors du démarrage précédent). Il faut les y réinstaller, et c'est l'objet des étapes de programme additionnelles. Au contraire on ne procède pas à cette réinstallation lorsque la restauration était due à une autre cause car alors on sait que les données sont toujours présentes en mémoire RUM. Après l'exécution des instructions additionnelles dues à l'état 1 du bit drapeau du registre DR, le programme de restauration reprend un déroulement commun indépendant de la cause initiale qui a déclenché la restauration. Ce programme commun comprend notamment la remise à zéro du registre de bit drapeau DR. REVENDICATIONS 1. Procédé de réinitialisation d'un circuit commandé par des séries d'instructions, ce procédé comprenant les étapes consistant à - recevoir un signal d'interruption (Rsa, Rsd,-Rse) qui provient soit d'une sortie d'un détecteur de défaut d'alimentation (14), soit d'une autre source d'interruption, - faire inscrire par le détecteur de défaut d'alimentation un bit dans un registre drapeau (DR) lorsque le détecteur de défaut d'alimentation émet un signal d'interruption, - faire déclencher par un circuit de restauration (12) un programme de restauration lors de la réception par le circuit de restauration d'un signal d'interruption quelle que soit sa provenance, - tester au cours du programme l'état du bit drapeau, - effectuer un branchement de programme en fonction du résultat du test. 2. Circuit électrique comprenant un circuit principal (10) commandé par instructions, un circuit de détection de défauts d'alimentation (14), un circuit de restauration (12) recevant comme entrées d'une part la sortie du circuit de détection et d'autre part d'autres signaux d'entrée susceptibles de déclencher un programme de restauration du fonctionnement du circuit principal, le circuit de restauration étant apte å déclencher l'exécution d'un programme de restauration exécutable par le circuit principal, le programme de restauration comportant d'une part une étape de vérification de l'état d'un bit drapeau et d'autre part des séquences d'instructions différentes selon l'état de ce bit, caractérisé en ce que le bit drapeau est stocké dans un registre (DR) relié à la sortie du circuit de détection de défauts d'alimentation, ce bit représentant une information sur le fait que la restauration est due à une coupure d'alimentation.