Brevet FR2982066A1 — publié le 20130503

PROCEDE DE COMPENSATION DE LA CORRUPTION D'UNE MEMOIRE D'UN CALCULATEUR ELECTRONIQUE La présente invention se rapporte à un procédé de compensation de la corruption d'une mémoire d'un calculateur électronique. La présente invention se rapporte également à un calculateur électronique et à un véhicule automobile adaptés à mettre en oeuvre un tel procédé. L'invention appartient au domaine des calculateurs électroniques qui communiquent entre eux via un bus de communication. Elle s'applique notamment, mais non exclusivement, aux véhicules automobiles. Les causes possibles de corruption d'une mémoire électronique, par exemple du type EEPROM (mémoire non volatile programmable effaçable électriquement, en anglais "Electrically Erasable Programmable Read-Only Memory"), sont nombreuses. Par exemple, une opération d'écriture dans la mémoire peut se terminer de façon erronée, ou bien le composant peut subir toute autre défaillance. Lorsque la mémoire corrompue est comprise dans un calculateur électronique et si ce calculateur est par exemple inclus dans un véhicule automobile, le calculateur fonctionne alors en mode dégradé, ce qui peut entraîner l'indisponibilité partielle, voire complète du véhicule. Cette situation est gênante et peut même présenter des risques pour la sécurité des occupants du véhicule. La présente invention a pour but de remédier à ces inconvénients. Dans ce but, la présente invention propose un procédé de compensation de la corruption d'une mémoire d'un calculateur électronique contenu dans un système comportant une pluralité de calculateurs électroniques ayant tous la même structure et le même fonctionnement et ayant chacun une mémoire, dans lequel les calculateurs communiquent entre eux par l'intermédiaire d'un bus de communication et dans lequel un seul des calculateurs comporte une mémoire corrompue, ce procédé étant remarquable en ce qu'il comporte des étapes suivant lesquelles : préalablement à toute communication entre les calculateurs, on attribue un numéro distinct à chacun des calculateurs et on mémorise ce numéro dans la mémoire de ce calculateur, ce numéro étant utilisé par les calculateurs pour calculer un identifiant à inclure dans des données émises par le calculateur auquel est attribué le numéro correspondant ; chaque calculateur, avant d'émettre ou de recevoir des données, effectue une procédure d'initialisation ; si, lors de cette procédure d'initialisation, un calculateur détecte que sa mémoire est corrompue, il recherche sur le bus de communication, pendant une durée prédéterminée, les identifiants inclus dans les données qui circulent sur le bus ; et si, après écoulement de la durée prédéterminée, le calculateur ayant une mémoire corrompue a trouvé les identifiants de tous les calculateurs sauf un, il détermine l'identifiant manquant, en déduit le numéro correspondant et se l'attribue, de façon à pouvoir communiquer avec les autres calculateurs. Ainsi, la stratégie proposée par l'invention permet de compenser la présence d'une mémoire corrompue et de sortir du mode dégradé pour poursuivre la communication entre les différents calculateurs. Lorsque ces calculateurs sont compris dans un véhicule automobile, l'invention permet donc de rendre le véhicule disponible jusqu'à la mise en maintenance du système, dans l'hypothèse où un seul calculateur présente une mémoire défaillante. Selon une caractéristique particulière, la procédure d'initialisation comporte des étapes suivant lesquelles : le calculateur consulte sa mémoire de façon à détecter, soit que ses données sont valides, soit que sa mémoire est corrompue ; et si ses données sont valides, le calculateur calcule l'identifiant précité. Selon une caractéristique particulière, la mémoire de chaque 25 calculateur est une mémoire non volatile programmable effaçable électriquement EEPROM. Selon une caractéristique particulière, les données sont organisées sous forme de trames et l'identifiant précité est inclus dans chaque trame. Dans le même but que celui indiqué plus haut, la présente invention 30 propos également un calculateur électronique adapté à mettre en oeuvre un procédé tel que succinctement décrit ci-dessus. Toujours dans le même but, la présente invention propose également un véhicule automobile comportant une pluralité de calculateurs électroniques ayant tous la même structure et le même fonctionnement, 35 ayant chacun une mémoire et communiquant entre eux via un bus de communication, ce véhicule étant remarquable en ce que les calculateurs sont adaptés à mettre en oeuvre des étapes d'un procédé tel que succinctement décrit ci-dessus. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description qui suit de modes particuliers de réalisation, donnés à titre d'exemples non limitatifs et en référence aux dessins qui l'accompagnent, dans lesquels : - la figure 1 est une représentation schématique d'un système à plusieurs calculateurs du type considéré dans le cadre de la présente invention, dans un mode particulier de réalisation ; et - la figure 2 est un organigramme illustrant les principales étapes d'un procédé de compensation de la corruption d'une mémoire conforme à la présente invention, dans un mode particulier de réalisation. On considère dans le cadre de la présente invention un système du type illustré sur la figure 1, dans lequel un nombre N de calculateurs électroniques 101, 102, ..., 10N, ayant tous la même structure électronique et le même logiciel de fonctionnement dialoguent entre eux par l'intermédiaire d'un bus de communication 12. Chacun des calculateurs 101, 102, ..., 10N comporte en particulier une mémoire 1001, 1002, ..., 100N. Cette mémoire est par exemple une mémoire non volatile programmable effaçable électriquement (EEPROM). On se place dans l'hypothèse où un seul des calculateurs 101, 102, ..., 10N comporte une mémoire corrompue i.e. défaillante. La stratégie de compensation de la corruption de cette mémoire proposée par la présente invention, qui constitue une stratégie de sortie de mode dégradé lorsque le système à plusieurs calculateurs fait partie d'un véhicule automobile, va maintenant être décrite en liaison avec la figure 2. Conformément à la présente invention, chaque calculateur ne se différencie des autres que par un numéro, configuré une seule fois et valable pendant toute la durée de vie du calculateur. Ce numéro peut avoir tout format prédéterminé jugé approprié. Comme le montre la figure 2, lors d'une étape préliminaire 200, préalablement à toute communication entre les calculateurs 101, 102, ..., 10N, on attribue ainsi un numéro distinct à chacun des calculateurs et on mémorise ce numéro dans la mémoire respective 1001, 1002, ..., 100N de ce calculateur. On peut ainsi attribuer par exemple le numéro 1, 2, ..., N respectivement au calculateur 101, 102, ..., 10N. Ce numéro est utilisé par les calculateurs pour calculer un ou plusieurs identifiants à inclure dans des données émises par le calculateur auquel est attribué ce numéro. En effet, lorsqu'un calculateur émet des informations sur le bus de communication, il utilise un ou plusieurs identifiants qui lui sont propres, c'est-à-dire qu'aucun autre calculateur n'émet ces mêmes identifiants. L'identifiant dépend donc du numéro de chaque calculateur et peut également dépendre des données à émettre. Il peut être calculé suivant toute méthode jugée appropriée. Un identifiant peut par exemple se présenter sous la forme suivante : Ox1n0, où x représente un ou plusieurs chiffres et n est un chiffre correspondant au numéro du calculateur ayant émis cet identifiant. Le chiffre n est donc par exemple compris entre 0 et N, N désignant le nombre de calculateurs. Ainsi, l'identifiant Ox1n0 est émis par le n-ième calculateur. Tant qu'un calculateur n'a pas de données à émettre ou à recevoir, il est dans un état dit "non réveillé". A chaque réveil, c'est-à-dire avant d'émettre ou de recevoir des données, chaque calculateur effectue une procédure d'initialisation (étape 202). Cette procédure d'initialisation peut par exemple consister, pour le calculateur, à consulter sa mémoire 1001, 1002, ..., 100N, de façon à détecter (test 204), soit que ses données sont valides, soit que sa mémoire est corrompue. Si la mémoire du calculateur n'est pas corrompue i.e. ses données sont valides, le calculateur termine la procédure d'initialisation en calculant un identifiant à partir de son numéro. Il peut alors communiquer avec les autres calculateurs (étape 206) et il inclura l'identifiant calculé dans les données qu'il émettra sur le bus de communication 12. Par exemple, si les données sont organisées sous forme de trames, le calculateur inclut un tel identifiant dans chaque trame de données, par exemple dans l'en-tête de la trame, c'est-à-dire au début de la trame, avant les données utiles. En revanche, si, lors de la procédure d'initialisation, un calculateur détecte que sa mémoire est corrompue, il lance une temporisation (étape 208) d'une durée prédéterminée, pendant laquelle il recherche, sur le bus de communication 12, les identifiants inclus dans les données qui circulent sur le bus 12 (étape 210). Il effectue cette recherche tant que la temporisation n'est pas écoulée (c'est-à-dire tant que le test 212 est négatif). Si, après écoulement de la durée prédéterminée (test 212 positif), le calculateur dont la mémoire est corrompue a trouvé les identifiants de tous les calculateurs sauf un, il détermine l'identifiant manquant (test 214 positif), en déduit le numéro de calculateur correspondant et se l'attribue (étape 216). II peut alors communiquer avec les autres calculateurs (étape 206). A titre d'exemple nullement limitatif, supposons que huit calculateurs identiques soient présents sur un même bus de communication (tel qu'un bus CAN dans le cadre d'une application à un véhicule automobile). Supposons également que le calculateur n° 5 présente une 10 défaillance de son EEPROM. Les actions suivantes sont effectuées par les calculateurs n° 1 à 4 et 6 à 8, dont les EEPROMs sont valides : - le calculateur n° 1 se réveille, lit son EEPROM, conclut que ses données sont valides et qu'il est le calculateur n° 1 et calcule l'identifiant 15 d'une trame qu'il doit émettre sur le bus CAN. Cet identifiant est par exemple 0x110, suivant le format donné plus haut à titre d'exemple non limitatif ; - le calculateur n° 2 se réveille, lit son EEPROM, conclut que ses données sont valides et qu'il est le calculateur n° 2 et calcule l'identifiant d'une trame qu'il doit émettre sur le bus CAN. Cet identifiant est par exemple 20 Ox120 ; - les mêmes actions sont effectuées par les calculateurs 3, 4, 6, 7 et 8 qui calculent respectivement leurs identifiants 0x130, 0x140, 0x160, 0x170 et 0x180. Quant au calculateur n° 5, il se réveille, lit son EEPROM et conclut 25 que ses données sont corrompues. Il se met alors "à l'écoute" du bus CAN pendant un durée prédéterminée à la recherche des identifiants 0x110, 0x120, 0x130, 0x140, 0x150, 0x160, 0x170 et 0x180. Si, lorsque la durée prédéterminée est écoulée, le calculateur s'aperçoit que l'identifiant 0x150 n'est jamais reçu, il peut en conclure que le calculateur manquant est le 30 numéro 5 et s'auto-configurer en s'attribuant le numéro 5. En revanche, si, après écoulement de la durée prédéterminée, le calculateur dont la mémoire est corrompue n'a pas trouvé les identifiants de tous les calculateurs sauf un et n'a donc pas pu déterminer l'identifiant manquant (test 214 négatif), il peut par exemple lancer une nouvelle 35 temporisation et poursuivre la recherche d'identifiants parmi les données qui circulent sur le bus (reprise du processus à partir de l'étape 208). On peut par exemple décider que si les identifiants de tous les calculateurs sauf un n'ont pas été trouvés après lancement d'un nombre prédéterminé de temporisations par le calculateur dont la mémoire est corrompue, on arrête le processus. La présente invention est particulièrement utile dans son application à un véhicule automobile, car elle assure la disponibilité du véhicule malgré la défaillance d'une mémoire d'un calculateur, dans l'hypothèse où un seul calculateur présente une mémoire défaillante. REVENDICATIONS1. Procédé de compensation de la corruption d'une mémoire d'un calculateur électronique contenu dans un système comportant une pluralité de calculateurs électroniques (101, 102, ..., 10N) ayant tous la même structure et le même fonctionnement et ayant chacun une mémoire (1001, 1002, ..., 100N), dans lequel lesdits calculateurs communiquent entre eux par l'intermédiaire d'un bus de communication (12) et dans lequel un seul des calculateurs comporte une mémoire corrompue, ledit procédé étant caractérisé en ce qu'il comporte des étapes suivant lesquelles : préalablement à toute communication entre les calculateurs, on attribue (200) un numéro distinct à chacun desdits calculateurs (101, 102, ..., 10N) et on mémorise ledit numéro dans la mémoire (1001, 1002, ..., 100N) de ce calculateur, ce numéro étant utilisé par les calculateurs pour calculer un identifiant à inclure dans des données émises par le calculateur auquel est attribué le numéro correspondant ; chaque calculateur (101, 102, ..., 10N), avant d'émettre ou de recevoir des données, effectue (202) une procédure d'initialisation ; si, lors de ladite procédure d'initialisation, un calculateur détecte (204) 20 que sa mémoire est corrompue, il recherche (210) sur le bus de communication (12), pendant une durée prédéterminée (208), les identifiants inclus dans les données qui circulent sur le bus (12) ; et si, après écoulement (212) de ladite durée prédéterminée, le calculateur ayant une mémoire corrompue a trouvé les identifiants de tous 25 les calculateurs sauf un, il détermine (214) l'identifiant manquant, en déduit le numéro correspondant et se l'attribue (216), de façon à pouvoir communiquer avec les autres calculateurs. 2. Procédé selon la revendication 1, caractérisé en ce que ladite procédure d'initialisation comporte des étapes suivant lesquelles : 30 le calculateur consulte sa mémoire de façon à détecter, soit que ses données sont valides, soit que sa mémoire est corrompue ; et si ses données sont valides, le calculateur calcule ledit identifiant. 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que la mémoire (1001, 1002, ..., 100N) de chaque calculateur (101, 102, ..., 10N) est 35 une mémoire non volatile programmable effaçable électriquement EEPROM. 4. Procédé selon la revendication 1, 2 ou 3, caractérisé en ce que les données sont organisées sous forme de trames et ledit identifiant est inclus dans chaque trame. 5. Calculateur électronique, caractérisé en ce qu'il est adapté à mettre en oeuvre un procédé selon l'une quelconque des revendications précédentes. 6. Véhicule automobile comportant une pluralité de calculateurs électroniques (101, 102, ..., 10N) ayant tous la même structure et le même fonctionnement, ayant chacun une mémoire (1001, 1002, ..., 100N) et communiquant entre eux via un bus de communication (12), caractérisé en ce que lesdits calculateurs (101, 102, ..., 10N) sont adaptés à mettre en oeuvre des étapes d'un procédé selon l'une quelconque des revendications 1 à 4.