Brevet FR2854262A1 — publié le 20041029

La présente invention se rapporte aux calculateurs électroniques embarqués dans les véhicules automobiles, tels que notamment les calculateurs qui assurent le pilotage d'un système de direction assistée électrique équipant un véhicule automobile moderne. Cette invention concerne plus particulièrement un procédé de protection et correction des données effaçables d'un calculateur embarqué de véhicule automobile, ces données étant stockées en mémoire. Les calculateurs de ce genre, embarqués dans les véhicules, doivent sauvegarder des informations dans des mémoires de type effaçables et 10 programmables électriquement. Or la durée de rétention des informations dans ces mémoires n'est pas infinie, en particulier lorsque le nombre d'effacements et de réécritures augmente, et que la température de fonctionnement du calculateur s'élève. De telles situations sont de plus en plus fréquentes, pour les calculateurs placés 15 dans le compartiment moteur d'un véhicule, tels que les calculateurs de pilotage d'une direction assistée électrique. On se trouve donc dans l'obligation de trouver des palliatifs, de type logiciel, pour garantir de façon aussi sûre que possible une rétention des données mémorisées dans ces calculateurs, sur des durées importantes 20 dépassant dix ans, et dans des ambiances dont la température peut dépasser 1000C. L'exposition prolongée à des températures, etiou à des champs électro-magnétiques perturbateurs, peut occasionner une altération des données mémorisées. L'utilisation de plus en plus courante de composants 25 programmables dans les calculateurs en question augmente en outre les risques d'effacement de leurs mémoires. Les données stockées dans les calculateurs en question peuvent notamment comprendre des données de configuration, des lois de pilotage d'assistance, des enregistrements de défauts, etc..., voire même, de plus en 30 plus couramment, le code exécutable du programme lui-même. Afin de sécuriser de telles données, deux types de solutions sont actuellement utilisées. La première solution consiste en l'utilisation d'un code de redondance des informations écrites dans la mémoire, code qui est recalculé 35 lors de chaque modification de la mémoire, et vérifié lors de chaque écriture. Ce code, basé sur des opérations logiques sur les codes hexadécimaux des informations inscrites en mémoire, permet de vérifier facilement que les données sont exactes avant toute utilisation. Par contre, il est ici impossible, en cas d'anomalie, de localiser l'erreur, et il est encore moins possible de la corriger. La seconde solution connue consiste à réécrire plusieurs fois les données, en réalisant ainsi une redondance complète de l'information. Une comparaison entre ces données enregistrées séparément peut alors être effectuée facilement avant toute utilisation. Il est aussi possible, si la même information est stockée plusieurs fois, et avec certaines limitations, de localiser 10 et de corriger les erreurs. Toutefois, cette solution est très coûteuse en termes de taille de mémoire, de taille de code applicatif et de charge du processeur. De plus, la mise en oeuvre de cette solution est souvent difficile. La présente invention vise à éliminer les inconvénients des solutions actuelles, et elle a donc pour but de fournir un procédé de protection 15 des données, pour les calculateurs du genre ici concerné, qui soit capable de déterminer l'emplacement des erreurs et de les corriger automatiquement, dans la plupart des cas, sans augmentation excessive de la taille de mémoire nécessaire. A cet effet, l'invention a essentiellement pour objet un procédé de 20 protection des données effaçables stockées en mémoire d'un calculateur embarqué de véhicule automobile, caractérisé en ce qu'il met en oeuvre: * une redondance au moins partielle de la taille mémoire à sécuriser, * un code de correction d'erreur de Hamming et en ce qu'il comporte: * d'une part une étape de stockage des données sous forme codée comportant des bits de données utiles et des bits de correction, ladite forme codée étant obtenue par une multiplication des données utiles par une matrice correctrice issue d'une matrice génératrice, * d'autre part une tâche de fond périodique vérifiant l'exactitude des 30 données par une multiplication des données codées par la transposée de la matrice correctrice et, le cas échéant si le produit de la multiplication n'est pas nul donc en cas d'erreur sur au moins un bit, corrigeant tout ou partie des erreurs sur le contenu des données effaçables stockées en mémoire en utilisant les informations fournies 35 par le résultat de la multiplication donnant la position des bits erronés. Dans un mode de mise en oeuvre préféré du procédé de l'invention, le code correcteur de Hamming met en oeuvre une fonction involutive Avantageusement, les bits de données utiles d'une part et les bits de correction d'autre part sont stockés dans des zones de mémoires différentes. Le procédé de l'invention est utilisable également pour la protection du code exécutable stocké en mémoire d'un calculateur. L'invention sera mieux comprise à la lecture de la description qui suit d'un exemple de mise en oeuvre du procédé. Selon un mode de mise en oeuvre du procédé, le code de correction d'erreur se base sur un doublement de la taille mémoire à sécuriser. Pour chaque octet de donnée utile, 8 bits de corrections sont attribués. La table de correction, c'est-à-dire l'ensemble des bits de correction, est configurée de manière à permettre: a d'une part la correction de 1 bit faux par octet de données utiles * d'autre par la détection de 4 bits faux par octet de données utiles Ce mode de mise en oeuvre permet un bon compromis entre la performance et la fiabilité. La fonction de correction d'erreur est basée sur une opération 20 mathématique involutive. Une matrice de correction simple de dimension 8 est utilisée, telle que celle-ci et sa transposée soient identiques. Il existe 64 matrices ayant les propriétés requises, calculées à partir de la matrice génératrice M suivante: M ='((0 1 0 0 1 I O 1) (1 0 1 0 0 1 1 0) (O 1 0 1 0 0 I 1) (1 0 1 0 1 0 0 1) (1 1 0 1 0 1 0 O) (O 1 1 0 1 0 1 O) (0 0 1 1 0 1 0 1) (1 0 0 1 1 0 1 O)) Cette disposition particulière de la matrice permet de réaliser les calculs en parallèles et non bit à bit. Deux fonctions sont embarquées dans le calculateur correspondant 35 aux deux étapes du procédé: * une première fonction d'encodage des données avant stockage dans la mémoire prenant en entrée un octet de donnée utile et fournissant en sortie un mot de 16 bits contenant les bits de données utiles et les bits de correction. * une seconde fonction de lecture des données dans la mémoire permettant leur décodage et la vérification de leur exactitude. Cette fonction prend en entrée un mot de 16 bits contenant les bits de données utiles et les bits de correction ainsi qu'un pointeur sur une zone de mémoire d'un octet pour stocker les données utiles éventuellement 10 corrigées et fournit en sortie un code de retour booléen indiquant si les données ont pu ou non être corrigées. Dans le cas o le nombre d'erreurs détecté est supérieur au nombre d'erreurs pouvant être corrigé, plusieurs solutions sont utilisées. A titre d'exemple, il est possible de relancer une fonction de calibration ou de choisir 15 une valeur moyenne pour un paramètre afin de ne pas bloquer le système. Un mode de mise en oeuvre alternatif du procédé consiste à placer les bits de correction d'erreur dans une zone de la mémoire disjointe de la zone o sont stockées les données utiles. Cette approche permet de disposer d'une zone de mémoire classique comportant les données utiles et d'une zone 20 mémoire regroupant les bits de correction et ainsi d'utiliser le procédé de protection des informations sur du code exécutable, de façon transparente pour le processeur. Selon un autre mode de mise en oeuvre du procédé utilisant un doublement de la taille mémoire à sécuriser, les tables de correction sont 25 configurées pour permettre la correction de 2 ou 3 bits faux par octet en utilisant la même taille mémoire. Dans ce cas la fiabilité est réduite par rapport au premier mode de mise en oeuvre si la même consommation des ressources, taille mémoire et charge du processeur, est conservée. D'autres modes de mise en oeuvre du procédé utilisent une taille de 30 redondance différente des deux modes de mise en oeuvre décrits précédemment utilisant un doublement de la taille mémoire, c'est-à-dire un taux d'expansion égal à 2. A titre d'exemple, en utilisant un taux d'expansion de la taille mémoire supérieur à 2, il est possible de détecter et de corriger plus de bits en erreur dans les données utiles. A l'opposé, en utilisant un taux 35 d'expansion de 1,5, il sera possible de détecter certaines erreurs, mais pas de les corriger. Le choix d'un mode de mise en oeuvre du procédé dépend de la taille de redondance cherchée. REVENDICATIONS 1. Procédé de protection des données effaçables stockées en mémoire d'un calculateur embarqué de véhicule automobile, caractérisé en ce qu'il met en oeuvre: une redondance au moins partielle de la taille mémoire à sécuriser, * un code de correction d'erreur de Hamming et en ce qu'il comporte: * d'une part une étape de stockage des données sous forme codée 10 comportant des bits de données utiles et des bits de correction, ladite forme codée étant obtenue par une multiplication des données utiles par une matrice correctrice issue d'une matrice génératrice, * d'autre part une tâche de fond périodique vérifiant l'exactitude des données par une multiplication des données codées par la transposée 15 de la matrice correctrice et, le cas échéant si le produit de la multiplication n'est pas nul donc en cas d'erreur sur au moins un bit, corrigeant tout ou partie des erreurs sur le contenu des données effaçables stockées en mémoire en utilisant les informations fournies par le résultat de la multiplication donnant la position des bits erronés. 20 2. Procédé selon la revendication 1, caractérisé en ce que le code correcteur de Hamming met en oeuvre une fonction involutive. 3. Procédé selon l'une des revendications 1 à 2, caractérisé en ce 25 que bits de données utiles d'une part et les bits de correction d'autre part sont stockés dans des zones de mémoires différentes. 4. Procédé selon l'une des revendications 1 à 3, caractérisé en ce qu'il est utilisé également pour la protection du code exécutable stocké en 30 mémoire d'un calculateur. 5. Application du procédé selon l'une des revendications 1 à 4 à un calculateur assurant le pilotage d'un système de direction assistée électrique de véhicule automobile.