Brevet FR2742246A1 — publié le 19970613

PROCEDE DE DETECJION~D'ERREU S D' EXECUTION D'UN MICROPROCESSEUR La présente invention concerne un procédé dc détection d'erreurs d'exécution d'un programme, comprenant un programme principal et un programme d'interruption, dans un microprocesseur. Dans un grand nombre de systèmes de commande classiques, les programmes sont exécutés à l'aide microprocesseurs et différents procédés de détection d'erreurs d'exécution ont éte proposés afin d'éviter des erreurs de fonctionnement des microprocesseurs. Par exemple, le brevet japonais (kokoku) N" 60-42341 décrit un système de commande électronique servant 9 commander des moteurs a combustion interne, qui peuvent rétablir leur fonctionnenent normal même Si leur programme a cessé d'être exécuté normalement. L'un de ces systèmes est indiqué brièvement ci-après en se référant aux figures 4 et 5. Le circuit de détection d'erreurs d'exécution du système de commande comprend un microprocesseur 11 et une horloge 12 comme illustré sur la figure 4, et un signal impulsionnel d'une période prescrite est transmis d'une borne de rythmer contrôleur de séquence WD (chien de garde) du microprocesseur 11 à l'horloge 12. L'horloge 12 fournit un signal de remise à l'état initial au microprocesseur 11, lorsqu'il ne parvient pas à recevoir le signal du chien de garde WD, pendant une période supérieure à une période de temps prescrite. En se référant à la figure 5 qui représente une partie du programme du microprocesseur 11, l'état de sortie du signal du chien de garde WD est déterminé a une étape ST41 du programme principal du programme. Lorsque la sortie du signal du chien de garde WD est interrompue, 1 e le déroulement du programme passe à une étape ST42 et la sortie du signal du chien de garde XD est mise en service. Si la sortie du signal du chien de garde WD est en service à l'étape 41, le déroulement du programme passe à une étape ST43 et la sortie du signal du chien de garde WD est mise hors service. Un signal impulsionnel d'une période prescrite est produit de manière que le programme principal soit exécuté normalement. L'horloge 12 est ainsi remise à l'état initial en continu par ce signal impulsionnel et ne remet pas à l'état initial le microprocesseur 11 tant qu'il continue à recevoir ce signal ;*pulsionnel. Lorsque le déroulement du programme ne parvient pas à retourner d'un programme d'interruption au programme principal par une erreur d'exécution, le signal du chien de garde WD est maintenu à niveau fixe et le signal impuisionnel cesse d'être produit par la sortie du chien de garde WD. Comme ceci équivaut au fait de ne présenter aucun signal du chien de garde WD, si cet état a persisté pendant une période supérieure à une période de temps prescrite, un signal de remise à l'état initial est transmis de l'horloge 12 au microprocesseur 11 afin de l'initialiser, permettant de ce fait, au programme principal d'être exécuté. Cependant, selon ce procédé de commande classique, bien qu'il soit possible de détecter une erreur d'exécution et de réinitialiser le microprocesseur lorsque le déroulement du programme ne parvient à retourner d'un programme d'interruption au programme principal, il peut être impossible de détecter une erreur d'exécution lorsque le déroulement du programme ne parvient pas à passer du programme ne parvient pas à passer du programme principal au programme d'interruption. Au vu de ces problèmes de l'art antérieur, un but principal de la présente invention est de proposer un procédé de détection d'erreurs d'exécution d'un programme, comprenant un programme principal et un programme d'interruption, qui permet au microprocesseur d'exécuter le programme afin d'être remis à l'état initial à chaque fois qu'une défaillance quelconque a lieu lors de l'exécution du programme. Un deuxième but de la présente invention est de proposer un procéde de détection d'erreurs d'exécution d'un programme, qui permet au microprocesseur d'être remis à l'état initial sans aucune défaillance, indépendamment du fait qu'une erreur d'exécution a eu lieu dans le programme principal ou dans le programme d'interruption. Un troisième but de la présente invention est de proposer un procédé de détection d'erreurs lors de l'exécution d'un programme, qui puisse améliorer la fiabilité de l'exécution du programme à un coup minime. Selon la présente invention, de tels buts peuvent être atteints en fournissant un procédé de détection d'erreurs lors de l'exécution d'un programme, comprenant un premier programme et un deuxième programme dans un microprocesseur, le microprocesseur étant pourvu, intérieurement ou extérieurement, d'un chien de garde qui remet à l'état initial le microprocesseur lors du comptage d'une première période de temps, mais qui peut être lui-même remis à l'état initial par un code d'annulation, comprenant les étapes de : démarrage d'un temporisateur d'annulation de contrôle de séquence lors d'une étape initiale d'un premier programme; démarrage de l'exécution des étapes restantes du premier programme, les étapes restantes comprenant l'étape d'entrée d'un code d'annulation dans des données à valeur variable; exécution d'un deuxième programme à la demande, jusqu'à ce que l'horloge d'annulation de contrale de séquence compte une deuxième période de temps qui est sensiblement plus courte que la première période de temps; et lorsque l'horloge d'annulation de contrôle de séquence compte la deuxième période de temps lors du deuxième programme, amenée du contenu des données à valeur variable aux chiens de garde, redémarrage de l'horloge d'annulation de contrôle de séquence dans le deuxième programme, entrée d'un code initial différent du code d'annulation dans les données à valeur variable lors du deuxième programme, et retour à l'une des étapes restantes du premier programme. Typiquement, le premier programme consiste en un programme principal et le deuxième programme consiste en un programme d'interruption. Dans le cas d'une erreur d'exécution empêchant le déroulement du programme de passer du programme principal au programme d'interruption, les données à valeur variable ne sont pas fournies au chien de garde et le temps de contrôle de séquence peut par conséquent remettre à l'état initial le microprocesseur. Dans le cas d'une erreur d'exécution empêchant le déroulement du programme de retourner du programme d'interruption au programme principal, les données à valeur variable peuvent être fournies au chien de garde, mais du fait que les données à valeur variable continuent à conserver le code initial au lieu du code de remise à l'état initial, le temps de contrôle de séquence peut de nouveau remettre à l'état initial le microprocesseur. Par conséquent, dans chaque cas, le chien de garde n'est pas annulé et le microprocesseur est remis à l'état initial sans aucune défaillance par le chien de garde. En variante, le chien de garde peut être conçu de nanière à pouvoir être lui-nême remis à l'état initial par un signal impulsionnnel prescrit. Dans ce cas, le contenu des données à valeur variable peut être fourni au chien de garde après l'étape d'entrée d'un code initial différent du code d'annulation dans les données à valeur variable, dans le deuxième programme, lorsque l'horloge d'annulation de contrôle de séquence compte la deuxième période de temps lors du deuxième programme. Un tel mode de réalisation peut obtenir une fonction de contrôle de séquence encore plus fiable. L'horloge d'annulation du contrôle de séquence peut consister en un compteur logiciel qui est incrémenté à chaque cycle d'exécution du deuxième programme. En effet, le procéde de la présente invention peut être au moins en partie mis en oeuvre par un logiciel. La présente invention est décrite ci-après en se référant aux dessins annexés, dans lesquels la figure 1(a) est un ordinogramme représentant une partie d'un programme principal d'un programme de commande d'allumage pour un moteur à combustion interne de véhicule automobile, auquel est appliquée la présente invention; la figure 1(b) est un ordinogramme analogue représentant une partie d'un programme d'interruption; la figure 2 est un schéma à blocs simplifié, représentant une partie de la structure du microprocesseur auquel est appliqué la présente invention; les figures 3(a) et (b) sont des vues analogues aux figures 1(a) et 1(b), représentant un deuxième mode de réalisation de la présente invention; la figure 4 est un schéma à bloc représentant une partie d'un circuit de commande classique; et la figure 5 est un ordinogramme représentant une partie d'un procédé de commande classique. Les figures 1(a) et 1(b) sont des ordinogrammes représentant une partie du programme de commande d'allumage d'un moteur à combustion interne de véhicule automobile, et la figure 2 illustre la structure d'un microprocesseur 1 qui exécute le programme. Comme représenté sur la figure 2, le microprocesseur 1 incorpore un circuit du chien de garde 2 qui produit un signal d'initialisation ou un signal de remise à l'état initial pour le microprocesseur 1, lorsque le circuit du chien de garde peut compter une première période de temps sans être remise à l'état initial. Le programme principal représenté sur la figure 1(a) est exécuté comme suit. la valeur de comptage TC d'une horloge d'annulation de contrôle de séquence, qui typiquement incorporé dans le microprocesseur 1, est établi à la valeur zéro à l'étape ST1, et une valeur initiale consistant en la valeur zéro est substituée dans les données à valeur variable DT est stockée dans la mémoire du microprocesseur 1, à une étape ST2. L'exécution du programme d'interruption est ensuite approuvée à une étape ST3. Cette dernière est une étape d'initialisation permettant à un programme d'interruption d'être exécuté à la demande durant l'exécution du programme principal. Un certain nombre d'autres étapes de commande non représentées sur le dessin, sont ensuite exécutées dans le programme principal et au cours de l'exécution du programme principal, un code d'annulation pour le circuit du chien de garde 2 est substitué à un certain intervalle dans les données DT. Ceci est représenté par une étape 504. Le programme d'interruption représenté sur la figure 1(b) est exécuté comme suit. La valeur de comptage TC du temporisateur d'annulation de contrôle de séquence est incrémentée de la valeur un à une étape ST11 et il est déterminé si la valeur de comptage TC a atteint ou non une valeur prescrite Td à une étape ST12. La valeur prescrite Td correspond à un nombre prescrit d'exécutions du programme d'interruption, et le fait que la valeur de comptage TC a atteint la valeur prescrite Td signifie qu'une deuxième période tempos s'est écoulée. En d'autres termes, le programme d'interruption est exécuté à la demande, mais, lors de l'écoulement de la deuxième période de temps, le déroulement du programme passe finalement à une étape ST13, lorsque le programme d'interruption est exécuté. La deuxième période de temps est sélectionnée de manière à être sensiblement plus courte que la première période de temps associée au circuit du chien de garde 2 afin de remettre à l'état initial le microprocesseur 1. Le contenu des données à valeur variable DT est fourni au circuit du chien de garde 2 à une étape ST13. la valeur de comptage TC est établie à la valeur zéro à une étape ST14 et les données à valeur variable DT sont réduites à la valeur zéro à une étape ST15. Si la valeur de comptage TC n'avez pas atteint la valeur prescrite Td à l'étape ST12, le programme d'interruption est porté à terme sans exécuter les étapes ST13 à ST15. Dans ce programme, après que la valeur de conptage TC et les données à valeur variable DT aient été établies à la valeur zéro dans le programme principal, un code d'annulation destiné au circuit du chien de garde 2 est substitué dans les données et la valeur de comptage TC est incrémentée de la valeur un à chaque fois que le programme d'interruption est exécuté. Lorsque la valeur de comptage TC a atteint la valeur prescrit (après que la deuxième période de temps se soit écoulée), la valeur actuelle des données à valeur variable DT est fournie au circuit du chien de garde 2. Ceci remet à l'état initial le circuit du chien de garde 2 et l'empêche de réinitialiser le microprocesseur 1. En d'autres termes, le microprocesseur 1 peut fonctionner normalement. Apres la mise à l'état initial de la valeur de comptage TC et des données à valeur variable DT à la valeur zero, le déroulenent du programme retourne au programme principal. Par conséquent, dans le cas d'une erreur d'exécution qui empêche le déroulement du programme de retourner du programme d'interruption au programme principal, un premier signal de remise à l'état initial peut être fourni au circuit du chien de garde 2 (à l'étape ST13, nais, ensuite, du fait que les données à valeur variable DT sont remplacées par un code d'annulation à une valeur zero à l'étape ST15, le circuit du chien de garde 2 n'est pas remis à l'état initial même après l'écoulement de la deuxième période de temps. Par conséquent, le circuit du chien de garde 2 fournit un signal de remise à l'état initial au microprocesseur 1, lors de l'écoulement de la première période de temps à partir du démarrage du circuit du chien de garde 2. Par conséquent, une erreur d'exécution peut être détectée et le microprocesseur est remis à l'état initial . dans le cas d'une erreur d'exécution qui empêche le déroulement du programme de passer du programme principal au programme d'interruption bien que le code d'annulation puisse être substitué dans les données à valeur variable à l'étape ST4, cette valeur n'est jamais fournie au circuit du chien de garde 2 et le signal d'initialisation servant à remettre à l'état initial le microprocesseur 1 est par conséquent de nouveau produit lors de l'écoulement de la première période de tenps à partir du démarrage du circuit du chien de garde 2. Par conséquent une erreur d'exécution peut être détectée et le microprocesseur peut être remis à l'étant initial de manière appropriée. De cette manière, un erreur d'exécution peut être détectée indépendamment du fait qu'elle a eu lieu dans le programme principal ou dans le programme d'interruption, et le microprocesseur peut être rapidement initiale sans aucune défaillance. Selon le mode de réalisation décrit ci-dessus, le microprocesseur a été initialisé en utilisant le signal initialisation du circuit du chien de garde 2, mais il est également possible d'utiliser un rythmeur séparé et d'initialiser le microprocesseur selon le comptage de ce rythmeur. En d'autres termes, une valeur de signal équivalente au code d'annulation de l'horloge peut être substituee dans les données à valeur variable DT à l'étape ST4, et la valeur de code d'annulation peut être fournie au circuit d'horloge à l'étape ST13, si bien que l'on peut obtenir le même résultat en initialisant répétitivement le chien de garde 2 avant que le signal d'initialisation soit produit par le comptage de l'horloge. Un autre mode de réalisation de la présente invention est décrit ci-après en se référant à la figure 3. La figure 3(a) représente un programme principal analogue au programme principal représenté sur la figure 1(a), et la figure 3(b) représente un programme d'interruption analogue au programme d'interruption de la figure 1(b). Comme représenté sur la figure 3(a), des étapes St21 à ST23 sont analogues aux étapes ST1 à ST3 du premier mode de réalisation, mais la valeur "1", au lieu du code RC de remise à l'état initial du circuit rythmeur contrôleur de séquence 2, est substituée dans les données à valeur variable DT à une étape ST24. Dans le programme d'interruption représenté sur la figure 3(b), des étapes ST31 à ST35 sont analogues aux étapes STI1 à ST15 du premier mode de réalisation, mais une étape ST36 est placée après l'étape ST35 afin de fournir la valeur actuelle des données à valeur variable DT au circuit rythmeur contraleur de séquence 2. Si la valeur de comptage TC n'a pas atteint la valeur prescrite Td à l'étape ST32, le programme d'interruption est porté à terme sans exécuté les étapes ST33 à ST36. Ainsi, la valeur "1" est substituée dans les données DT à l'étape ST24 du programme principal tandis que dans le programme d'interruption, la valeur actuelle des données DT est produite à l'étape ST33, et après que la valeur ait été fournie aux données DT à l'étape ST35, la valeur actuelle (zéro) des données DT est produite à l'étape ST36. Par conséquent, lorsque le programme est exécuté nornalement, la sortie de données consiste en un signal impulsionnel d'une période prescrite, si bien que le circuit rythmeur contrôleur de séquence 2 peut déterminer le fonctionnement normal du microprocesseur et qu'aucun signal d'initialisation n'est produit par le circuit rythmeur contrôleur de séquence 2. Dans le cas d'une erreur d'exécution qui empêche le déroulement du programme de retourner du programme d'interruption au programme principal, la valeur des sorties des donnés DT est nulle à la fois à l'étape ST33 et l'étape ST36 et le signal impulsionnel d'une période prescrite est par conséquent par produit. Dans le cas d'une erreur d'exécution qui empêche le déroulement du programme de passer du programme principal au programme d'interruption, il n'existe aucune sortie des données DT et le circuit du chien de garde 2 peut de ce fait détecter une erreur d'exécution. Selon la présente invention, du fait qu'une valeur prescrite qui a été entrée sous la forme de données dans le programme principal est produite par le programme d'interruption, tandis que les données sont remises à l'état initiale en même temps, après l'écoulement d'une certaine période de temps, la valeur des données ne varie pas apres l'écoulement de la certaine période de temps à chaque fois qu'une erreur d'exécution a eu lieu dans le programme principal ou dans le programme d'interruption. Par conséquent, le programme de la présente invention permet de détecter une erreur d'exécution indépendamment du fait qu'elle a eu lieu dans le programme principal ou dans le programme d'interruption. Bien que la présente invention ait été décrite en terme de ses modes de réalisation spécifiques, il est possible de modifier et de changer des détails de cette dernière sans sortir de l'esprit de la présente invention. REVEDIÇAOIONS 1. - Procédé de détection d'erreurs lors de l'exécution d'un programme, comprenant un premier programme et un deuxième programme dans un microprocesseur (1), ledit microprocesseur (1) étant pourvu, intérieurement ou exterieurement, d'un rythmeur contraleur de séquence (chien de garde) (2) qui remet à l'état initial ledit microprocesseur (1) lors du comptage d'une première période de temps, mais qui peut être lui-nêne remis à l'état initial par un code d'annulation, comprenant les étapes de démarrage d'une horloge d'annulation de contrôle de séquence lors d'une étape initiale d'un premier programme; démarrage de l'exécution des étapes restantes du premier programme, les étapes restantes comprenant l'étape d'entrée d'un code d'annulation dans des données à valeur variable (DT); exécution d'un deuxième programme à la denande, jusqu'a ce que l'horloge d'annulation de contrôle de séquence compte une deuxième période de temps qui est sensiblement plus courte que ladite première période de temps; et lorsque ladite horloge d'annulation de contrôle de séquence compte ladite deuxième période de temps lors du deuxième programme, amenée du contenu desdites données à valeur variable (DT) auxdits chiens de garde, redémarrage de ladite horloge d'annulation de contrôle de séquence dans le deuxième programme, entrée d'un code initial différent du code d'annulation dans lesdites données à valeur variable (DO) lors du deuxième programme, et retour à l'une desdites étapes restantes du premier programme. 2. - Procédé de détection d'erreurs lors de l'exécution d'un programme selon la revendication 1, dans lequel le premier programme consiste en un programme principal et le deuxième programme consiste en un programme d'interruption. 3. - Procédé de détection d'erreurs lors de l'exécution d'un programme selon la revendication 1, dans lequel ladite horloge d'annulation de contrôle de séquence consiste en une horloge logicielle qui est incrémentée à chaque cycle d'exécution du deuxième programme. 4. - Procédé de détection d'erreurs lors de l'exécution d'un programme, comprenant un premier programme et un deuxième programme dans un microprocesseur (1), ledit microprocesseur (1) étant pourvu, intérieurement ou extérieurement > d'un chien de garde (2) qui remet à l'état initial ledit microprocesseur (1) lors du comptage d'une première période de temps mais qui peut être lui-mêze remis à l'état initial par un signal impulsionnel prescript, comprenant les étapes de démarrage d'une horloge d'annulation de contrôle de séquence lors d'une étape initiale d'un premier programme; démarrage de l'exécution des étapes restantes du premier programme, lesdites étapes restantes comprenant l'étape d'entrée d'un code d'annulation dans les données à valeur variable (DO); exécution d'un deuxième programme à la demande, jusqu'a ce que ladite horloge d'annulation de contrôle de séquence compte une deuxième période de temps qui est sensiblement plus courte que ladite période de temps; et lorsque ladite horloge d'annulation de contrôle de séquence compte ladite deuxième période de temps lors du deuxibne programme, amenée du contenu desdites données à valeur variable (DT) audit chien de garde (2), redémarrage dudit temporisateur d'annulation de contrôle de séquence dans le deuxième programme, entrée d'un code initial différent dudit code d'annulation dans lesdites données à valeur variable (DT) lors du deuxième programme, amenée du contenu desdites données à valeur variable (DT) audit chien de garde (2) et retour à l'une desdites etapes restantes du premier programme. 5. - Procedé de détection d'erreurs lors de l'exécution d'un programme selon la revendication 3, dans lequel le premier programme consiste en un programme principal et le deuxième programme consiste en un programme d'interruption. 6. - Procédé de détection d'erreurs lors de l'exécution d'un programme selon la revendication 3, dans lequel ladite horloge d'annulation de contrôle de séquence consiste en une horloge logicielle qui est incrémentée à chaque cycle d'exécution du deuxième programme.