FR3040523A1 - Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur - Google Patents

Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur Download PDF

Info

Publication number
FR3040523A1
FR3040523A1 FR1558019A FR1558019A FR3040523A1 FR 3040523 A1 FR3040523 A1 FR 3040523A1 FR 1558019 A FR1558019 A FR 1558019A FR 1558019 A FR1558019 A FR 1558019A FR 3040523 A1 FR3040523 A1 FR 3040523A1
Authority
FR
France
Prior art keywords
microcontroller
exception
volatile memory
data
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1558019A
Other languages
English (en)
Other versions
FR3040523B1 (fr
Inventor
Vincent Deligeon
Pierre Boucher
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Continental Automotive GmbH
Continental Automotive France SAS
Original Assignee
Continental Automotive GmbH
Continental Automotive France SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Continental Automotive GmbH, Continental Automotive France SAS filed Critical Continental Automotive GmbH
Priority to FR1558019A priority Critical patent/FR3040523B1/fr
Priority to PCT/EP2016/001443 priority patent/WO2017036584A1/fr
Priority to CN201680049935.6A priority patent/CN107924352B/zh
Priority to US15/754,125 priority patent/US10628269B2/en
Publication of FR3040523A1 publication Critical patent/FR3040523A1/fr
Application granted granted Critical
Publication of FR3040523B1 publication Critical patent/FR3040523B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

La présente invention a pour objet un procédé de détection et de gestion d'une erreur non corrigible dans une mémoire non volatile d'un microcontrôleur, ledit microcontrôleur présentant une interface de lecture (E), un gestionnaire d'exceptions (X), et un ensemble de registres internes et de paramètres d'exécution constitutifs d'un contexte bas niveau dudit microcontrôleur. Le procédé prévoit la sauvegarde (X1) du contexte bas niveau du microcontrôleur, ainsi que sa restauration (X2) dans le cas où une exception (HW_X) serait levée lors d'une tentative de lecture (E2) d'une donnée en mémoire non volatile, sous réserve d'activation (E1) d'une stratégie spécifique de détection et de gestion d'erreur non corrigible.

Description

L’invention concerne le domaine des microcontrôleurs embarqués. Les microcontrôleurs récents présentent une mémoire non volatile, également appelée mémoire morte, telle que de la mémoire Flash, sur laquelle sont stockées des données. Ces données sont associées à un code correcteur d’erreur, désigné sous l’acronyme anglais ECC, pour Error Correction Code, afin de prémunir lesdits microcontrôleurs de toute corruption des données stockées dans leur mémoire non volatile.
Cependant, il peut survenir des erreurs non corrigibles, et les microcontrôleurs génèrent alors une exception lors de la lecture d’une telle erreur non corrigible.
Dans ce contexte, la présente invention concerne un procédé permettant de détecter, de localiser, et de gérer la survenance d’une erreur non corrigible dans une mémoire non volatile de tout type de microcontrôleur.
Comme cela est connu, les véhicules automobiles, comme tout autre type de véhicule, comprennent des calculateurs comportant des microcontrôleurs aptes à exécuter un logiciel embarqué. A cette fin, lesdits microcontrôleurs présentent des moyens de stockage de données, volatile ou non. De tels microcontrôleurs présentent ainsi une mémoire volatile, également appelée mémoire vive, typiquement de la mémoire de type RAM, pour Random Access Memory selon l’acronyme anglais bien connu de l’homme du métier. Par ailleurs, pour le stockage pérenne de données, les microcontrôleurs présentent également une mémoire non volatile, typiquement de la mémoire de type Flash, bien connue de l’homme du métier. La mémoire Flash est notamment utilisée pour la sauvegarde du logiciel du microcontrôleur, le « firmware >> selon l’appellation en anglais bien connue de l’homme du métier, et pour la sauvegarde de données relative aux cycles de vie du microcontrôleur et de son logiciel embarqué.
En pratique, quand le logiciel embarqué sur le microcontrôleur est exécuté, celui-ci lit la mémoire Flash pour permettre ensuite la mise en œuvre d’un logiciel applicatif « haut niveau >> et la bonne exécution des fonctions décisionnelles qu’il comporte.
En tant que mémoire non volatile, il est bien connu que la mémoire Flash est très utilisée, en raison de sa compétitivité économique et de son faible encombrement.
Un problème connu lié à l’utilisation de mémoire Flash réside cependant dans la difficulté à assurer la consistance des données qui y sont stockées. Selon l’état de la technique, comme évoqué brièvement ci-dessus, il existe des microcontrôleurs à mémoire Flash, dans laquelle les données sauvegardées sont associées à un code correcteur d’erreur, connu sous l’acronyme anglais d’ECC, pour Error Correction Code.
Grâce à l’association des données sauvegardées dans la mémoire Flash à un code de correction d’erreur, l’état de la technique permet de détecter et de traiter une grande partie des erreurs relatives à une inconsistance des données lues en mémoire Flash.
Cependant, parmi les erreurs qui peuvent survenir lors de la lecture de données en mémoire Flash, certaines ne sont pas corrigibles. Dans ce cas, lorsqu’en cours d’exécution, un microcontrôleur tente de lire une donnée correspondant à une erreur non corrigible, ce dernier lève une exception qui, selon l’état de la technique, entraîne généralement le redémarrage du microcontrôleur. En effet, selon l’état de la technique, lorsqu’une exception est levée lors d’une lecture de données en mémoire Flash, consécutivement à la survenance d’une erreur non corrigible, il n’est pas possible de restaurer un état stable du microcontrôleur, préalable à la survenance de l’erreur non corrigible, les paramètres constitutifs du contexte bas niveau dudit microcontrôleur stable, l’état des registres internes, du pointeur de pile, des registres d’adresses, ...etc.., étant perdus.
Ainsi, plus précisément, selon l’état de la technique, lorsqu’un microcontrôleur reçoit l’instruction de lire une donnée en mémoire Flash, il met en oeuvre une interface de lecture apte à exécuter l’instruction de lecture. Ladite interface de lecture est en pratique une fonction du « driver >>, c’est-à-dire du pilote, du microcontrôleur. Le « driver >> gère, notamment, toutes les demandes de lecture et d’écriture de données issues des logiciels applicatifs mis en œuvre par le calculateur comprenant le microcontrôleur concerné. Lorsque ledit microcontrôleur, en pratique ladite interface de lecture, se trouve confronté à une erreur non corrigible, telle qu’une instruction inexistante ou une donnée irrémédiablement corrompue, ledit microcontrôleur lève une exception via un gestionnaire d’exceptions. Ladite exception, en général, entraîne le redémarrage du microcontrôleur et du microcontrôleur.
Le problème technique qui découle de ce comportement de l’interface de lecture coopérant avec le gestionnaire d’exceptions, dans les microcontrôleurs connus, réside dans le fait que, dans le cas où une erreur non corrigible est due à une corruption d’une zone mémoire de la mémoire Flash, l’exception est levée en boucle et cela entraîne un redémarrage en boucle du microcontrôleur et du calculateur concerné. En pratique, après plusieurs redémarrages consécutifs d’un calculateur critique, un véhicule automobile sur lequel surviendrait ce type de dysfonctionnement se verrait stoppé par le contrôle moteur et non redémarrable sans l’intervention d’un technicien.
Selon une technique connue, certains microcontrôleurs spécifiques, présentant nécessairement des contextes d’appel de fonctions de taille fixe stockés dans une pile dédiée, présentent un gestionnaire d’exceptions capable, sur demande préalable, de retourner le logiciel du microcontrôleur à une fonction supérieure à l’appel de l’interface de lecture ayant suscité une exception en raison d’une erreur identifiée comme non corrigible, sans engendrer de redémarrage du microcontrôleur. Cette solution connue n’est cependant pas applicable à nombre de microcontrôleurs, en particulier ne comprenant pas de contextes d’appel de fonctions de taille fixe stockés dans une pile dédiée.
Il existe donc un besoin pour un procédé de gestion des erreurs non corrigibles survenant dans une mémoire non volatile, de type Flash, d’un microcontrôleur intégré à un calculateur embarqué, en particulier dans le contexte d’un véhicule automobile.
La présente invention concerne par conséquent un procédé améliorant l’interface de lecture configurée pour lire la mémoire Flash d’un microcontrôleur embarqué et coopérant avec un gestionnaire d’exceptions. En particulier, le procédé selon l’invention rend possible la gestion d’erreurs non corrigibles présentes en mémoire Flash, sans engendrer de redémarrage, tout en permettant l’identification d’une zone mémoire corrompue correspondante, et en étant de plus compatible de tout type de microcontrôleur.
Le procédé de détection et de gestion d’une erreur non corrigible dans une mémoire non volatile d’un microcontrôleur embarqué, selon l’invention, repose en effet sur le fait que le gestionnaire d’exceptions d’un microcontrôleur est apte à lever les exceptions lorsque cela est effectivement nécessaire, et uniquement lorsque cela est effectivement nécessaire, conformément aux contraintes particulièrement exigeantes qui s’appliquent aux fabricants de microcontrôleurs.
Plus précisément, le procédé selon l’invention prévoit la réalisation d’une sauvegarde du contexte bas niveau du microcontrôleur, avant toute lecture de données en mémoire Flash, de façon à permettre la restauration dudit contexte bas niveau en cas de levée d’exception lors de la lecture d’une donnée dans une zone mémoire corrompue, évitant ainsi, dans les cas où ce n’est pas absolument nécessaire, le redémarrage du microcontrôleur. A cet effet, l’invention concerne un procédé de détection et de gestion d’une erreur non corrigible dans une mémoire non volatile d’un microcontrôleur, ledit microcontrôleur présentant une interface de lecture, un gestionnaire d’exceptions, et un ensemble de registres internes et de paramètres d’exécution constitutifs d’un contexte bas niveau dudit microcontrôleur, ledit procédé comprenant les étapes suivantes : i. à chaque commande d’une opération de lecture, à réaliser par l’interface de lecture, d’une donnée dans une zone mémoire de la mémoire non volatile, l’activation systématique d’une stratégie spécifique de détection et de gestion d’erreur non corrigible dans la mémoire non volatile, ladite stratégie comprenant les étapes suivantes : ii. l’enregistrement dans une mémoire volatile du microcontrôleur de l’état des registres internes et des paramètres d’exécution constitutifs du contexte bas niveau dudit microcontrôleur ; iii. la lecture de la donnée dans la mémoire non volatile ; iv. si une exception est levée par le gestionnaire d’exceptions lors de la lecture de ladite donnée, la restauration par ledit gestionnaire d’exceptions de l’état des registres internes et des paramètres d’exécution constitutifs du contexte bas niveau du microcontrôleur, tels qu’enregistrés en mémoire à l’étape ii., l’invalidation de la zone mémoire et la désactivation de la stratégie spécifique de détection et de gestion d’erreur non corrigible ; v. si aucune exception n’est levée par le gestionnaire d’exceptions lors de la lecture de la donnée, la désactivation de la stratégie spécifique de détection et de gestion d’erreur non corrigible, après lecture de ladite donnée.
Les registres internes comprennent par exemple un registre de données et un registre d’adresses.
Les paramètres d’exécution comprennent par exemple un pointeur de pile du microcontrôleur.
Selon un mode de réalisation préféré, ladite mémoire non volatile est une mémoire Flash.
Selon un mode de réalisation préféré, ladite mémoire volatile est une mémoire RAM.
De façon préférée, si une exception est levée par le gestionnaire d’exceptions lors de la lecture de la donnée dans la mémoire non volatile, l’étape iv. comporte une sous étape initiale comprenant : • la réalisation d’un test de vérification par le gestionnaire d’exceptions que la stratégie spécifique de détection et de gestion d’erreur non corrigible est active et que ladite exception est exclusivement due à la détection d’une erreur non corrigible ; et • si ladite stratégie n’est pas active, le redémarrage du microcontrôleur.
Grâce à ce mode de réalisation, le procédé selon l’invention est apte à gérer le cas où une exception survient indépendamment d’un appel à l’interface de lecture ; dans ce cas, un redémarrage immédiat du microcontrôleur est prévu, sans restauration du contexte bas niveau du microcontrôleur.
Avantageusement, le procédé selon l’invention comprend, au terme de l’étape iv., la réalisation d’un retour, sous la forme d’un saut absolu, pour revenir à la sortie de l’étape ii.
Selon un mode de réalisation préféré, préalablement à l’étape iii. de lecture de la donnée dans la mémoire non volatile dans une zone déterminable de ladite mémoire non volatile, le procédé selon l’invention prévoit : • la réalisation d’un test pour vérifier si une exception a été levée par le gestionnaire d’exceptions, ayant entraîné la réalisation d’un retour, sous la forme d’un saut absolu, pour revenir à la sortie de l’étape ii. ; • si une exception ayant entraîné la réalisation d’un retour, sous la forme d’un saut absolu, pour revenir à la sortie de l’étape ii. a bien été levée, l’invalidation de ladite zone de la mémoire non volatile, de façon à ce que l’interface de lecture ne tente plus d’accéder à ladite zone de la mémoire non volatile ; • si aucune exception ayant entraîné la réalisation d’un retour, sous la forme d’un saut absolu, pour revenir à la sortie de l’étape ii. n’a été levée, la poursuite du procédé par l’étape iii.
Avantageusement, l’étape iv. comprend en outre la transmission d’une information à l’interface de lecture par le gestionnaire d’exception selon laquelle une erreur non corrigible est survenue.
Avantageusement, ladite information comprend une identification de la zone de la mémoire non volatile présentant l’erreur non corrigible et présumée corrompue. L’invention concerne par ailleurs un dispositif de microcontrôleur embarqué, destiné à un calculateur de véhicule automobile, ledit microcontrôleur comprenant un microprocesseur et une mémoire non volatile, et ledit microcontrôleur étant remarquable en ce qu’il est configuré pour mettre en œuvre le procédé de détection et de gestion d’une erreur non corrigible dans la mémoire non volatile du microcontrôleur tel que brièvement décrit ci-dessus. L’invention sera mieux comprise à la lecture de la description qui va suivre, donnée uniquement à titre d’exemple, et se référant au dessin annexé qui représente un logigramme montrant les étapes du procédé selon l’invention, d’après un mode de réalisation préféré. L'invention est présentée principalement en vue d’une application à des microcontrôleurs mis en œuvre dans des calculateurs embarqués sur des véhicules automobiles. Cependant, d’autres applications sont également visées par la présente invention, notamment en vue d’une application à des microcontrôleurs mis en œuvre dans des calculateurs embarqués sur tout type de véhicule, terrestre ou non.
En outre, il est généralement fait mention, dans la suite de la description, à une application du procédé selon l’invention à la gestion d’erreurs non corrigibles dans une mémoire Flash ; cependant, le procédé selon l’invention peut être mis en oeuvre pour tout type de mémoire non volatile.
Dans le contexte déjà présenté précédemment, dans lequel un microcontrôleur embarqué dispose d’une mémoire non volatile, typiquement de type Flash, la présente invention vise à détecter et gérer de façon optimale les erreurs non corrigibles qui peuvent survenir à la lecture de données dans ladite mémoire non volatile.
La mémoire Flash d’un microcontrôleur embarqué comprend en effet des données critiques, dont le logiciel bas niveau permettant l’opérabilité du microcontrôleur, à savoir le firmware selon le terme anglais couramment utilisé et bien connu de l’homme du métier, ainsi que des données de sauvegarde, enregistrées durant les cycles de vie du microcontrôleur, et utilisées par le logiciel dudit microcontrôleur.
Selon l’état de la technique, comme expliqué en préambule, les données enregistrées en mémoire Flash sont associées à un code de correction d’erreur et l’interface de lecture assurant la lecture des données en mémoire Flash est apte à détecter et corriger automatiquement une grande majorité des erreurs.
Cependant, certaines erreurs ne sont pas corrigibles et entraînent la levée d’exceptions par un gestionnaire d’exceptions. Dans le cas général, la survenance d’une exception entraîne le redémarrage du microcontrôleur, et donc du calculateur qui l’héberge.
Lorsqu’une zone de la mémoire Flash est corrompue, le microcontrôleur peut alors se trouver dans un état de redémarrage en boucle. Dans le contexte d’un véhicule automobile, après plusieurs redémarrages successifs d’un calculateur, l’arrêt du véhicule est imposé.
La présente invention propose un procédé permettant la détection d’erreurs non corrigibles, leur gestion sans redémarrage du microcontrôleur, ainsi que la localisation de la zone mémoire corrompue, le cas échéant. A cette fin, le procédé selon l’invention vise à améliorer l’interface de lecture assurant la lecture des données en mémoire Flash, ainsi que le gestionnaire d’exceptions avec lequel il coopère.
Sur la figure 1, les étapes et condition situées à gauche sont mises en oeuvre ou vérifiées par l’interface de lecture E du microcontrôleur, tandis que les étapes et condition situées à droite sont mises en oeuvre ou vérifiées par le gestionnaire d’exceptions X du microcontrôleur.
Ainsi, en référence à la figure 1, le procédé de détection et de gestion d’erreurs non corrigibles en mémoire non volatile d’un microcontrôleur, conformément à l’invention, présente en premier lieu une étape E1 correspondant à l’activation d’une stratégie spécifique destinée à permettre la détection et la gestion d’une erreur non corrigible dans la mémoire non volatile du microcontrôleur. Cette étape E1 d’activation de la stratégie spécifique est systématiquement activée lors de tout appel à l’interface de lecture, en d’autres termes lors de tout engagement d’une opération de lecture de données en mémoire Flash.
Au terme de l’opération de lecture, le procédé selon l’invention prévoit une étape E3 de désactivation de la stratégie spécifique. L’intérêt de cette activation systématique en première étape E1 d’une opération de lecture de donnée en mémoire Flash et de cette désactivation systématique en dernière étape E3 de ladite opération de lecture de donnée en mémoire Flash réside dans le fait que cela permet de conserver la capacité à forcer un redémarrage du microcontrôleur lorsqu’une exception survient hors de toute opération de lecture de données en mémoire, par exemple parce qu’une fonction indépendante, n’ayant pas appelé l’interface de lecture du « driver >> du microcontrôleur, est venue lire une donnée corrompue. Dès que l’activation de la stratégie spécifique de détection et de gestion d’erreur non corrigible dans la mémoire Flash du microcontrôleur, à l’étape E1, est accomplie, le procédé selon l’invention prévoit la sauvegarde du contexte bas niveau du microcontrôleur. Selon le mode de réalisation préféré, cette sauvegarde est réalisée par le gestionnaire d’exceptions, à l’étape X1 sur la figure 1, avant toute lecture effective d’une donnée en mémoire Flash, et immédiatement après activation de la stratégie spécifique.
Par « contexte bas niveau >>, on entend l’ensemble des registres internes dudit microcontrôleur, tels que les registres de données, les registres d’adresses, le registre listant les adresses de retour de fonction, et tout paramètre tel que l’état du pointeur de pile, c’est-à-dire, en résumé, l’ensemble des registres internes et des paramètres constitutifs du contexte d’exécution du microcontrôleur. L’état de l’ensemble des registres internes et paramètres constitutifs du contexte bas niveau du microcontrôleur est sauvegardé par le gestionnaire d’exceptions dans une mémoire distincte de la mémoire non volatile concernée, par exemple une mémoire volatile, typiquement la mémoire vive, de type RAM, du microcontrôleur. Ladite mémoire sur laquelle est sauvegardée le contexte bas niveau du microcontrôleur à l’étape X1 doit de préférence être modifiable facilement, de manière à pouvoir y écrire sans avoir à modifier ledit contexte bas niveau du microcontrôleur. Cette mémoire destinée à recevoir la sauvegarde du contexte bas niveau doit également, de façon préférée, être différente de celle ciblée par l’interface de lecture, afin d’éviter les conflits d’erreurs dans le cas extrême où l’écriture de la sauvegarde du contexte bas niveau du microcontrôleur entraînerait des erreurs non corrigibles. En pratique, de préférence, la mémoire vive du microcontrôleur, de type RAM, est ainsi utilisée pour l’écriture de la sauvegarde du contexte bas niveau du microcontrôleur.
Il est à noter qu’une attention toute particulière doit être portée à l’implémentation de la fonction de sauvegarde du contexte bas niveau du microcontrôleur par le gestionnaire d’exceptions, de manière à ce que ladite sauvegarde n’entraine pas une modification, par son appel et son exécution, dudit contexte bas niveau du microcontrôleur, c'est-à-dire de la plupart des registres d’adresses et de données, du pointeurs de pile, des paramètres constitutifs du contexte d’exécution du microcontrôleur ...etc. En outre, à travers son implémentation adéquate, la fonction de sauvegarde utilise de préférence exclusivement une partie dédiée du contexte bas niveau du microcontrôleur, dépendant de l’architecture dudit microcontrôleur et en particulier de la procédure d’appel des fonctions mises en oeuvre par ledit microcontrôleur, tel que les registres de passage d’arguments.
En effet, si la fonction de sauvegarde changeait le contexte bas niveau du fait de son appel, la sauvegarde du contexte bas niveau du microcontrôleur ne serait pas fidèle. En revanche, une partie dudit contexte bas niveau peut être réservée à une utilisation « locale >> par une fonction, et peut donc ainsi être utilisée pour la fonction de sauvegarde du contexte bas niveau du microcontrôleur.
Le procédé selon l’invention met ensuite en oeuvre la condition C1. La condition C1 correspond à la vérification, ou pas, qu’une exception vient d’être levée par le générateur d’exceptions lors d’une tentative précédente de lecture d’une donnée dans la mémoire Flash, ledit gestionnaire d’exceptions ayant alors provoqué un saut absolu dans l’exécution de l’opération de lecture par l’interface de lecture jusqu’à l’état dans lequel ladite opération se trouvait avant la tentative de lecture d’une donnée en mémoire Flash, ledit saut absolu étant prévu à l’étape X3, décrite ci-après.
Si aucune exception n’a été levée à ce stade, l’interface de lecture lit les données visées en mémoire Flash, correspondant à l’étape E2 sur la figure 1. Dès lors, selon l’invention, si une exception matérielle FIW X survient lors de la tentative de lecture de donnée en mémoire Flash, ladite donnée étant frappée d’une erreur non corrigible, alors la condition C2, relative à la vérification par le gestionnaire d’exceptions que la stratégie spécifique de détection et de gestion d’erreur non corrigible dans la mémoire Flash est active ou non, est testée.
Si le gestionnaire d’exceptions constate que ladite stratégie n’est pas active, alors le microcontrôleur est redémarré (étape X4 sur le logigramme de la figure 1) car l’exception matérielle est due à une erreur indépendante de l’appel à l’opération de lecture en cours. Si le gestionnaire d’exceptions constate que ladite stratégie est bien active, alors le gestionnaire d’exceptions restaure le contexte bas niveau préalablement sauvegardé (étape X2 sur la figure 1) et engendre un saut absolu (étape X3 sur la figure 1) de l’opération de lecture pour remettre l’interface de lecture et le microcontrôleur dans l’état où ils se trouvaient en sortie de l’étape E1, c’est-à-dire après activation de la stratégie spécifique et avant la tentative de lecture effective de données en mémoire Flash.
La condition C1 est alors (re)vérifiée. Si une exception a bien été générée par le générateur d’exceptions, le procédé selon l’invention prévoit que la zone mémoire qui était visée par l’opération de lecture, étant identifiée, soit « invalidée >>, de sorte que l’interface de lecture ne tente plus d’accéder à ladite zone mémoire, correspondant à l’étape E4 sur le logigramme de la figure 1.
De cette façon, l’exception matérielle survenue en raison d’une zone mémoire corrompue ayant induit une erreur non corrigible a été interprétée et gérée sans entraîner de redémarrage du microcontrôleur, grâce au procédé selon l’invention.
En outre, par l’intermédiaire du test C2, le procédé selon l’invention prévoit la possibilité qu’une exception provoquée par une fonction indépendante d’une opération de lecture mise en oeuvre par l’interface de lecture idoine puisse engendrer un redémarrage du microcontrôleur, lorsque la stratégie spécifique de détection et de gestion d’erreur non corrigible en mémoire n’est pas activée. En effet, si ladite stratégie n’est pas active, alors le contexte bas niveau du microcontrôleur n’a pas été sauvegardée et ne peut donc pas être restaurée. De ce fait, la seule action envisageable est le redémarrage du microcontrôleur.
Par ailleurs, le procédé selon l’invention peut prévoir, optionnellement, qu’en cas de mise en oeuvre dudit procédé dans le contexte d’un environnement préemptif, dans lequel l’interface de lecture est mise en oeuvre sur une zone critique, l’interdiction d’accès à la mémoire Flash, par interception de tout appel ne passant pas par l’interface de lecture idoine, dès lors que de tels appels surviendraient après activation, et avant désactivation, de la stratégie spécifique de détection et de gestion d’erreur non corrigible en mémoire Flash.
En résumé, la présente invention concerne un procédé apte à détecter et à gérer la survenance d’une exception provoquée par une erreur non corrigible présente en mémoire non volatile d’un microcontrôleur, sans provoquer de redémarrage dudit microcontrôleur.
Le procédé selon l’invention, pour l’exprimer de façon synthétique, prévoit de tester l’intégrité de la mémoire non volatile avant de tenter de la lire, puis, si une exception se produit de provoquer un « saut dans le passé >> pour permettre à l’interface de lecture d’éviter la zone mémoire corrompue. A cette fin, une stratégie spécifique doit être activée au lancement de toute opération de lecture, et désactivée au terme de ladite opération de lecture. Dès ladite stratégie activée, le gestionnaire d’exceptions réalise une « photographie >> (sauvegarde) du contexte bas niveau du microcontrôleur, qu’il sauvegarde, et restaure, le cas échéant, si une exception survient lors de la lecture d’une donnée en mémoire, en raison de la présence d’une erreur non corrigible dans une zone mémoire corrompue.
Il est à noter, en outre, que l’invention n’est pas limitée au mode de réalisation décrit à titre d’exemple et est susceptible de variantes à la portée de l’homme du métier.

Claims (10)

  1. REVENDICATIONS
    1. Procédé de détection et de gestion d’une erreur non corrigible dans une mémoire non volatile d’un microcontrôleur, ledit microcontrôleur présentant une interface de lecture (E), un gestionnaire d’exceptions (X), et un ensemble de registres internes et de paramètres d’exécution constitutifs d’un contexte bas niveau dudit microcontrôleur, ledit procédé comprenant les étapes suivantes : i. à chaque commande d’une opération de lecture, à réaliser par l’interface de lecture, d’une donnée dans une zone mémoire de la mémoire non volatile, l’activation (E1) systématique d’une stratégie spécifique de détection et de gestion d’erreur non corrigible dans la mémoire non volatile, ladite stratégie comprenant les étapes suivantes : ii. l’enregistrement (X1) dans une mémoire volatile du microcontrôleur de l’état des registres internes et des paramètres d’exécution constitutifs du contexte bas niveau dudit microcontrôleur ; iii. la lecture (E2) de la donnée dans la mémoire non volatile ; iv. si une exception (HW_X) est levée par le gestionnaire d’exceptions lors de la lecture de ladite donnée, la restauration (X2) par ledit gestionnaire d’exceptions de l’état des registres internes et des paramètres d’exécution constitutifs du contexte bas niveau du microcontrôleur, tels qu’enregistrés en mémoire à l’étape ii., l’invalidation de la zone mémoire et la désactivation (E3) de la stratégie spécifique de détection et de gestion d’erreur non corrigible ; v. si aucune exception n’est levée par le gestionnaire d’exceptions lors de la lecture de la donnée, la désactivation (E3) de la stratégie spécifique de détection et de gestion d’erreur non corrigible, après lecture de ladite donnée.
  2. 2. Procédé selon la revendication 1, caractérisé en ce que les registres internes comprennent des registres de données et des registres d’adresses.
  3. 3. Procédé selon l’une des revendications 1 à 2, caractérisé en ce que les paramètres d’exécution comprennent un pointeur de pile du microcontrôleur.
  4. 4. Procédé selon l’une quelconque des revendications 1 à 3, caractérisé en ce que ladite mémoire non volatile est une mémoire Flash.
  5. 5. Procédé selon l’une quelconque des revendications 1 à 4, caractérisé en ce que, si une exception (HW_X) est levée par le gestionnaire d’exceptions lors de la lecture de la donnée dans la mémoire non volatile, l’étape iv. comporte une sous étape initiale comprenant : • la réalisation d’un test (C2) de vérification par le gestionnaire d’exceptions que la stratégie spécifique de détection et de gestion d’erreur non corrigible est active et que ladite exception (HW_X) est exclusivement due à la détection d’une erreur non corrigible ; et • si ladite stratégie n’est pas active, le redémarrage (X4) du microcontrôleur.
  6. 6. Procédé selon l’une quelconque des revendications 1 à 5, caractérisé en ce qu’il comprend, au terme de de l’étape iv., la réalisation d’un retour, sous la forme d’un saut absolu (X3), pour revenir à la sortie de l’étape ii.
  7. 7. Procédé selon la revendication 6, caractérisé en ce qu’il comprend, préalablement à l’étape iii. de lecture de la donnée dans la mémoire non volatile dans une zone déterminable de ladite mémoire non volatile : • la réalisation d’un test (C1) pour vérifier si une exception (HW_X) a été levée par le gestionnaire d’exceptions, ayant entraîné la réalisation d’un retour, sous la forme d’un saut absolu (X3), pour revenir à la sortie de l’étape ii. ; • si une exception (HW_X) ayant entraîné la réalisation d’un retour, sous la forme d’un saut absolu (X3), pour revenir à la sortie de l’étape ii. a bien été levée, l’invalidation (E4) de ladite zone de la mémoire non volatile, de façon à ce que l’interface de lecture (E) ne tente plus d’accéder à ladite zone de la mémoire non volatile; • si aucune exception (HW_X) ayant entraîné la réalisation d’un retour, sous la forme d’un saut absolu (X3), pour revenir à la sortie de l’étape ii. n’a été levée, la poursuite du procédé par l’étape iii.
  8. 8. Procédé selon l’une des revendications précédentes, caractérisé en ce que l’étape iv. comprend en outre la transmission d’une information à l’interface de lecture par le gestionnaire d’exception selon laquelle une erreur non corrigible est survenue.
  9. 9. Procédé selon la revendication 8, caractérisé en ce que ladite information comprend une identification de la zone de la mémoire non volatile présentant l’erreur non corrigible et présumée corrompue.
  10. 10. Dispositif de microcontrôleur embarqué, destiné à un calculateur de véhicule automobile, ledit microcontrôleur comprenant un microprocesseur et une mémoire non volatile, et ledit microcontrôleur étant caractérisé en ce qu’il est configuré pour mettre en œuvre le procédé de détection et de gestion d’une erreur non corrigible dans la mémoire non volatile du microcontrôleur selon l’une quelconque des revendications 1 à 9.
FR1558019A 2015-08-28 2015-08-28 Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur Active FR3040523B1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR1558019A FR3040523B1 (fr) 2015-08-28 2015-08-28 Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur
PCT/EP2016/001443 WO2017036584A1 (fr) 2015-08-28 2016-08-26 Procédé de détection d'une erreur non corrigible dans une mémoire non volatile d'un microcontrôleur
CN201680049935.6A CN107924352B (zh) 2015-08-28 2016-08-26 微控制器的非易失性存储器中不可修正的错误的检测方法
US15/754,125 US10628269B2 (en) 2015-08-28 2016-08-26 Method for detecting an uncorrectable error in a non-volatile memory of a microcontroller

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1558019 2015-08-28
FR1558019A FR3040523B1 (fr) 2015-08-28 2015-08-28 Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur

Publications (2)

Publication Number Publication Date
FR3040523A1 true FR3040523A1 (fr) 2017-03-03
FR3040523B1 FR3040523B1 (fr) 2018-07-13

Family

ID=54329788

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1558019A Active FR3040523B1 (fr) 2015-08-28 2015-08-28 Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur

Country Status (4)

Country Link
US (1) US10628269B2 (fr)
CN (1) CN107924352B (fr)
FR (1) FR3040523B1 (fr)
WO (1) WO2017036584A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3083888A1 (fr) * 2018-07-10 2020-01-17 Continental Automotive France Procede de surveillance de la corruption des donnees dans au moins une memoire non volatile d'un calculateur

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761918B2 (en) 2018-04-18 2020-09-01 International Business Machines Corporation Method to handle corrected memory errors on kernel text
US11237891B2 (en) 2020-02-12 2022-02-01 International Business Machines Corporation Handling asynchronous memory errors on kernel text
CN111666184B (zh) * 2020-06-29 2024-07-09 腾讯科技(深圳)有限公司 固态驱动器ssd硬盘测试方法、装置及电子设备
CN117112292B (zh) * 2023-01-20 2024-05-14 荣耀终端有限公司 异常重启的处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020162050A1 (en) * 2001-04-30 2002-10-31 Milojicic Dejan S. System and method for recovering from memory failures in computer systems
US20040019835A1 (en) * 1999-12-30 2004-01-29 Intel Corporation System abstraction layer, processor abstraction layer, and operating system error handling
US20100205509A1 (en) * 2006-05-16 2010-08-12 Pitney Bowes Inc. Systems and methods for efficient uncorrectable error detection in flash memory
US20100318845A1 (en) * 2007-02-13 2010-12-16 Akihito Kohiga Memory failure recovery method, information processing apparatus, and program

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779129B2 (en) * 2000-12-01 2004-08-17 International Business Machines Corporation Method, article of manufacture and apparatus for copying information to a storage medium
US7409580B2 (en) * 2005-02-09 2008-08-05 International Business Machines Corporation System and method for recovering from errors in a data processing system
KR100731497B1 (ko) 2005-05-31 2007-06-21 지멘스 오토모티브 주식회사 마이컴의 고장 코드 제어 장치 및 방법
US20070088988A1 (en) * 2005-10-14 2007-04-19 Dell Products L.P. System and method for logging recoverable errors
FR2894693A1 (fr) * 2005-12-09 2007-06-15 St Microelectronics Sa Procede et dispositif de sauvegarde et de restauration d'une maniere interruptible d'un ensemble de registres d'un microprocesseur
CN100517244C (zh) * 2006-02-21 2009-07-22 中兴通讯股份有限公司 一种对异常复位进行系统保护的方法及装置
CN101377745B (zh) * 2007-08-28 2010-06-23 张玉昆 在各个域间实现数据共享的虚拟化计算机系统和方法
CN101452333A (zh) * 2007-12-03 2009-06-10 英业达股份有限公司 能够处理电源异常的方法及电脑装置
CN101271401B (zh) * 2008-04-23 2010-04-14 北京航空航天大学 一种具备单一系统映像的服务器机群系统
CN101430658A (zh) * 2008-12-11 2009-05-13 华为技术有限公司 异常复位信息的保存方法及装置
US8266454B2 (en) 2009-04-15 2012-09-11 GM Global Technology Operations LLC Secure flash memory using error correcting code circuitry
CN101527171B (zh) 2009-04-17 2012-05-23 成都市华为赛门铁克科技有限公司 一种多通道并行纠错的闪存控制方法和装置
EP2633409A4 (fr) 2010-10-27 2014-07-23 Lsi Corp Techniques ecc adaptatives destinées à une mémoire flash et basées sur un stockage de données
KR101300443B1 (ko) 2011-09-22 2013-08-27 서울대학교산학협력단 바이패스 경로를 이용하여 신뢰성 검증을 할 수 있는 플래시 메모리 저장 장치, 및 이를 이용한 플래시 메모리 저장 장치의 신뢰성 검증 시스템 및 방법
CN103092717B (zh) 2013-01-18 2016-03-02 深圳市硅格半导体有限公司 闪存的数据处理方法及装置
US9209835B2 (en) * 2013-11-27 2015-12-08 Seagate Technology Llc Read retry for non-volatile memories
US10387281B2 (en) * 2017-08-30 2019-08-20 Micron Technology, Inc. Flash memory block retirement policy

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040019835A1 (en) * 1999-12-30 2004-01-29 Intel Corporation System abstraction layer, processor abstraction layer, and operating system error handling
US20020162050A1 (en) * 2001-04-30 2002-10-31 Milojicic Dejan S. System and method for recovering from memory failures in computer systems
US20100205509A1 (en) * 2006-05-16 2010-08-12 Pitney Bowes Inc. Systems and methods for efficient uncorrectable error detection in flash memory
US20100318845A1 (en) * 2007-02-13 2010-12-16 Akihito Kohiga Memory failure recovery method, information processing apparatus, and program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3083888A1 (fr) * 2018-07-10 2020-01-17 Continental Automotive France Procede de surveillance de la corruption des donnees dans au moins une memoire non volatile d'un calculateur

Also Published As

Publication number Publication date
US20180246787A1 (en) 2018-08-30
US10628269B2 (en) 2020-04-21
CN107924352B (zh) 2022-03-01
WO2017036584A1 (fr) 2017-03-09
CN107924352A (zh) 2018-04-17
FR3040523B1 (fr) 2018-07-13

Similar Documents

Publication Publication Date Title
WO2017036584A1 (fr) Procédé de détection d'une erreur non corrigible dans une mémoire non volatile d'un microcontrôleur
US8677189B2 (en) Recovering from stack corruption faults in embedded software systems
US20200310821A1 (en) Information processing apparatus, control method therefor, and storage medium
FR2880963A1 (fr) Points d'arrets logiciels destines a etre utilises avec des dispositifs a memoire
EP1934947B1 (fr) Procede d'amelioration d'un diagnostic d'une eventuelle defaillance dans un vehicule
FR3072195B1 (fr) Procede de gestion d'un retour de produit pour analyse et produit correspondant
EP2498184A1 (fr) Dispositif pour l'amélioration de la tolérance aux fautes d'un processeur
EP3182286A1 (fr) Procede de verification de fonctionnalites d'un logiciel destine a etre embarque dans un composant cryptographique, systeme
WO2012107189A2 (fr) Procede de reprogrammation d'un calculateur, support de memorisation de donnees et calculateur de vehicule automobile
FR3055714A1 (fr) Procede de correction d'erreur dans une memoire flash
TWI499930B (zh) 一種檔案掃描裝置及其方法
WO2019016464A1 (fr) Procédé de détermination de l'intégrité de données de navigation d'une unité de contrôle d'un véhicule automobile
EP2860668B1 (fr) Procédé et dispositif de réalisation de fonction par un microcircuit
EP2229648B1 (fr) Methode de transfert securise de donnees
EP3131005B1 (fr) Equipement électronique ferroviaire comprenant un programme de démarrage comportant une ou plusieurs partitions de démarrage, véhicule ferroviaire et système ferroviaire associés
FR3083888A1 (fr) Procede de surveillance de la corruption des donnees dans au moins une memoire non volatile d'un calculateur
EP4131041B1 (fr) Procédé de vérification d'une exécution d'un programme logiciel
KR102298219B1 (ko) 악성 커널 모듈 탐지 장치 및 악성 커널 모듈 탐지 방법
JP2013065261A (ja) メモリ管理装置
WO2023083703A1 (fr) Procédé et dispositif de contrôle et commande d'un moteur de véhicule
FR3079946A1 (fr) Procede de perennisation des informations stockees dans une memoire non volatile-temporaire d’un un calculateur.
JPH06266573A (ja) 障害復旧情報管理システム
FR3100073A1 (fr) Procédé de sécurisation d’un calculateur de véhicule automobile
WO2021001168A1 (fr) Procede de test d'un dispositif de reinitialisation de calculateur
FR3075420A1 (fr) Systeme et procede de demarrage securise d'un processeur

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170303

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

TP Transmission of property

Owner name: CONTINENTAL AUTOMOTIVE FRANCE, FR

Effective date: 20210309

Owner name: CONTINENTAL AUTOMOTIVE GMBH, DE

Effective date: 20210309

PLFP Fee payment

Year of fee payment: 7

CA Change of address

Effective date: 20220103

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10