Brevet FR3083888A1 — publié le 20200117

L'invention a pour domaine technique les calculateurs embarqués, notamment dans un véhicule automobile, et plus particulièrement, la gestion de la corruption des données de tels calculateurs. De par les effets entropiques sur la structure d'une mémoire, il existe des risques de défaut ou de corruption des données enregistrées sur une mémoire. Une erreur d'écriture lors de la modification d'une mémoire reprogrammable peut également mener à une corruption de données. Une corruption de données peut rendre le calculateur dangereux voire inutilisable selon les données affectées. Afin d'éviter de tels scénarios, la norme IS026262 a été développée afin de proposer un mécanisme de protection contre de telles corruptions pour des mémoires non volatiles reprogrammables de type Flash. En particulier, cette norme introduit une fonction de protection contre les erreurs « SafetyECC » qui génère un redémarrage (« reset » en langue anglaise) du calculateur lors d'un accès à une donnée corrompue de la mémoire programmable flash. Une donnée corrompue est une donnée illisible ou plus généralement, qui ne comprend pas le formatage attendu par le calculateur. Une telle corruption peut être détectée par la comparaison du formatage des données obtenues en réponse à une requête d'accès avec le formatage attendu pour ces données. Elle peut également être détectée par des méthodes classiques de détection d'erreur, tels que les sommes de contrôle (« checksum » en langue anglaise), et plus particulièrement, les contrôles de redondance cyclique CRC (acronyme anglophone pour «Cyclic Redundancy Check »). En parallèle de cette fonction de protection, les calculateurs embarqués comprennent une fonction de sécurité (« safety » en langue anglaise) permettant de vérifier l'intégrité et la cohérence des données en mémoire afin d'éviter d'exécuter ou de lire des données corrompues, et permettant d'interrompre le fonctionnement d'un calculateur comprenant des données corrompues. Cependant, cette fonction de sécurité, ne couvre pas tous les cas de corruption. Elle ne couvre notamment pas les cas de corruption des données non critiques, telles que la version et la date de mise à jour du calculateur ou d'une fonction, le type de véhicule ou des informations spécifiées par le constructeur qui ne sont pas utilisées dans des stratégies de commande. Toutefois, ces mêmes données sont supervisées par la fonction de protection contre les erreurs « SafetyECC ». Comme les données ne sont pas supervisées par la fonction de sécurité « safety », le fonctionnement du calculateur n'est pas interrompu pour 35 corruption. Par contre, le redémarrage du calculateur est requis par la fonction de 2 protection contre les erreurs « SafetyECC ». En l'absence d'action corrective, les données du calculateur corrompues avant le redémarrage et mémorisées dans une mémoire non volatile demeurent corrompues. La fonction « SafetyECC » rentre alors à nouveau en action et requiert un nouveau redémarrage. La succession de redémarrages se poursuit 5 du fait de la persistance des données corrompues dans une mémoire non volatile jusqu'à ce qu'une action corrective extérieure soit apportée. Une telle situation entraîne un blocage du calculateur par un cycle de redémarrages sans fin (« boot loop lock » en langue anglaise). De façon plus générale, tout redémarrage requis par une fonction logicielle 10 suite à la détection de la corruption d'une donnée non critique en mémoire non volatile, hors de portée de la fonction de sécurité « Safety » peut mener à un cycle de redémarrages sans fin. Dans le cas de livraisons de matériels pour un assembleur final de type OEM (acronyme en langue anglaise pour « Original Equipement Manufacturer », 15 fabriquant d'équipement original), certaines plages mémoires sont livrées vierges de sorte que l'assembleur final puisse y incorporer ses propres valeurs. Lorsqu'une valeur est écrite dans une plage mémoire vierge, en dehors d'une écriture de données validée par l'assembleur final OEM, les adresses mémoire de la plage mémoire sont considérées comme corrompues. Ces plages mémoires sont alors 20 également concernées par la situation de « boot loop lock » décrite plus haut. Il existe donc un besoin pour un procédé de surveillance des données dans une mémoire reprogrammable capable d'empêcher une situation de redémarrage sans fin lorsqu'une zone mémoire vierge ou comprenant des données non critique est corrompue. L'invention a pour objet un procédé de surveillance de la corruption des 25 données dans au moins une mémoire non volatile d'un calculateur muni d'au moins un moyen de protection contre les erreurs configuré pour commander le redémarrage du calculateur lorsqu'une donnée lue est corrompue, la au moins une mémoire non volatile du calculateur comprenant un premier type de données et un deuxième type de données. Le procédé comprend les étapes suivantes : 30 - on détecte l'accès à au moins une adresse mémoire d'une mémoire non volatile comprenant des données corrompues, - si tel est le cas, on commande le redémarrage du calculateur suite à la détection des données corrompues et on enregistre la au moins une adresse mémoire comprenant les données corrompues, - après le redémarrage, on compare la au moins une adresse mémoire enregistrée à une liste des données du deuxième type en fonction de leur adresse mémoire 3 afin de déterminer si la au moins une adresse mémoire enregistrée est du deuxième type, - si tel est le cas, on enregistre la au moins une adresse mémoire dans une liste d'adresses mémoires corrompues auxquelles l'accès est interdit, 5 - lors des requêtes ultérieures d'accès à au moins une adresse mémoire d'une mémoire non volatile du calculateur, on détermine si la au moins une adresse mémoire est présente dans la liste d'adresses mémoires corrompues, - si tel est le cas, on en interdit l'accès, et, - si tel n'est pas le cas on en autorise l'accès. 10 Une adresse mémoire peut être considérée comme corrompue si elle n'est pas vierge de données et est comprise dans une liste d'adresses mémoire vierges. Le premier type de données peut être critique pour le fonctionnement du calculateur, tandis que le deuxième type de données peut ne pas être critique pour le fonctionnement du calculateur. 15 L'invention a également pour objet un calculateur embarqué comprenant des moyens de traitement des données, au moins une mémoire non volatile comprenant un premier type de données et un deuxième type de données, au moins un moyen de protection contre les erreurs configuré pour commander le redémarrage du calculateur lorsqu'une donnée lue est corrompue, au moins une fonction tierce, et une couche 20 d'abstraction des données recevant des requêtes d'accès de la au moins une fonction tierce et émettant en retour des données correspondant aux informations stockées dans la au moins une mémoire non volatile visées par la requête d'accès, la couche d'abstraction des données étant apte à interagir avec la mémoire de sorte à lire tout ou partie du contenu de la mémoire afin de former les réponses aux requêtes d'accès. 25 Le calculateur comprend en outre des moyens de surveillance configurés pour réaliser le procédé selon l'invention et compris dans la couche d'abstraction de sorte à être capable d'interdire ou d'autoriser au moins une requête d'accès à au moins une adresse mémoire d'une mémoire non volatile par une fonction tierce du calculateur, sans modification de ladite fonction tierce. 30 D'autres buts, caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée uniquement à titre d'exemple non limitatif et faite en référence au dessin annexé sur lequel la figure unique illustre les principales étapes du procédé de surveillance selon l'invention. Les calculateurs embarqués comprennent des données en mémoire volatile et 35 des données en mémoire non volatile. Les premières sont réinitialisées lors d'un redémarrage du calculateur tandis que les secondes sont conservées. 4 La mémoire non volatile peut par ailleurs être une mémoire reprogrammable de type mémoire flash. Les données mémorisées dans une telle mémoire peuvent être réécrites. Comme présenté en introduction, certains calculateurs embarqués 5 comprennent des données critiques et des données non critiques mémorisées dans une mémoire non volatile reprogrammable. Les calculateurs visés par la présente invention comprennent également une fonction de protection contre les erreurs REVENDICATIONS1. Procédé de surveillance de la corruption des données dans au moins une mémoire non volatile d'un calculateur muni d'au moins un moyen de protection contre les erreurs configuré pour commander le redémarrage du calculateur lorsqu'une donnée lue est corrompue, la au moins une mémoire non volatile du calculateur comprenant un premier type de données et un deuxième type de données, caractérisé par le fait qu'il comprend les étapes suivantes : - on détecte l'accès à au moins une adresse mémoire d'une mémoire non volatile comprenant des données corrompues, - si tel est le cas, on commande le redémarrage du calculateur suite à la détection des données corrompues et on enregistre la au moins une adresse mémoire comprenant les données corrompues, - après le redémarrage, on compare la au moins une adresse mémoire enregistrée à une liste des données du deuxième type en fonction de leur adresse mémoire afin de déterminer si la au moins une adresse mémoire enregistrée est du deuxième type, - si tel est le cas, on enregistre la au moins une adresse mémoire dans une liste d'adresses mémoires corrompues auxquelles l'accès est interdit, - lors des requêtes ultérieures d'accès à au moins une adresse mémoire d'une mémoire non volatile du calculateur, on détermine si la au moins une adresse mémoire est présente dans la liste d'adresses mémoires corrompues, - si tel est le cas, on en interdit l'accès, et, - si tel n'est pas le cas on en autorise l'accès. 2. Procédé selon la revendication précédente, dans lequel une adresse mémoire est considérée comme corrompue si elle n'est pas vierge de données et est comprise 25 dans une liste d'adresses mémoire vierges. 3. Procédé selon l'une quelconque des revendications précédentes, dans lequel le premier type de données est critique pour le fonctionnement du calculateur, tandis que le deuxième type de données n'est pas critique pour le fonctionnement du calculateur. 4. Calculateur embarqué comprenant des moyens de traitement des données, 30 au moins une mémoire non volatile comprenant un premier type de données et un deuxième type de données, au moins un moyen de protection contre les erreurs configuré pour commander le redémarrage du calculateur lorsqu'une donnée lue est corrompue, au 7 moins une fonction tierce, et une couche d'abstraction des données recevant des requêtes d'accès de la au moins une fonction tierce et émettant en retour des données correspondant aux informations stockées dans la au moins une mémoire non volatile visées par la requête d'accès, la couche d'abstraction des données étant apte à interagir 5 avec la mémoire de sorte à lire tout ou partie du contenu de la mémoire afin de former les réponses aux requêtes d'accès, caractérisé par le fait qu'il comprend en outre des moyens de surveillance configurés pour réaliser le procédé selon l'une quelconque des revendications précédentes, compris dans la couche d'abstraction de sorte à être capable d'interdire ou d'autoriser au moins une requête d'accès à au moins une adresse mémoire 10 d'une mémoire non volatile par une fonction tierce du calculateur, sans modification de ladite fonction tierce.