FR 3003051 A1 20140912 FR 1352085 A 20130308 METHODE DE VERIFICATION DE L'INTEGRITE DES DONNEES D'UN CALCULATEUR EMBARQUE La présente invention concerne de manière générale une méthode de vérification de l'intégrité des données d'un calculateur embarqué pour véhicule, plus particulièrement des données critiques pour des applications de commande du véhicule ayant un impact potentiel sur la qualité et/ou la sécurité des usagers. La capacité de vérification de l'intégrité des données est rendue de plus en plus difficile, voire est devenue impossible à mettre en oeuvre de façon exhaustive en raison du volume croissant de ces données, en particulier au vu des ressources limitées de tels calculateurs embarqués. Cependant, une telle vérification reste absolument nécessaire dans la mesure où des erreurs sur les données peuvent se produire en raison de facteurs environnementaux, de défaillances matérielles ou encore d'autres causes. Le brevet US 7 533 322 décrit un procédé pour effectuer des vérifications mémoire de fonctions spécifiques d'un système de contrôle pour véhicule, telles que moteur, transmission, freins, suspension, etc. Comme les véhicules traitent de nos jours des quantités relativement importantes de données numériques en cours de fonctionnement, il est nécessaire de s'assurer que les données traitées sont exactes et fiables. Pour cela, l'espace mémoire associé à un ou des processeurs est généralement vérifié pendant leur fonctionnement pour garantir l'absence d'erreurs de bits ou indiquer la présence de données non fiables. A cet effet, il est prévu une technique de détection d'erreur à l'aide de sommes de contrôle, adaptée pour une utilisation dans un système de 25 commande de véhicule qui est capable d'identifier les erreurs dans un module de traitement de données ou un sous-module. Plus particulièrement, il est prévu un système de commande pour véhicule comprenant des sous-modules configurés pour exécuter à l'intérieur d'une partie d'un espace de mémoire associé au système de commande, des contrôles de l'intégrité des données contenues. Un telle méthode de vérification de l'intégrité des données permet de vérifier les données liées à un sous-module à la fois mais ne permet de couvrir rapidement l'ensemble de l'espace mémoire à vérifier. Un but de la présente invention est de répondre aux inconvénients mentionnés ci-dessus et, en particulier, de proposer une méthode de vérification de l'intégrité de données critiques permettant une surveillance progressive et exhaustive de l'espace mémoire à vérifier tout en optimisant la rapidité de détection des erreurs à l'intérieur de l'espace mémoire. Pour cela un premier aspect de l'invention concerne une méthode de vérification de l'intégrité de données critiques stockées dans au moins un espace mémoire associé à un calculateur embarqué à bord d'un véhicule, la méthode comprenant les étapes consistant à: a) échantillonner les données critiques suivant un schéma d'adressage pseudo-aléatoire réparti dans ledit au moins un espace mémoire définissant un ensemble d'échantillons de données critiques à contrôler ; b) protéger chaque échantillon de données critiques à contrôler par un code de détection d'erreur ; c) contrôler à une cadence déterminée l'intégrité des données critiques d'au moins un échantillon suivant ledit schéma d'adressage pseudo-aléatoire avec le code de détection d'erreur correspondant, jusqu'à ce que l'ensemble des échantillons de l'espace mémoire aient été contrôlés ; le nombre d'échantillons contrôlés à chaque opération de contrôle étant déterminé par la capacité du code de détection d'erreur à détecter des erreurs ; d) détecter la présence ou non d'une erreur dans l'espace mémoire contrôlé. Une telle méthode de vérification permet non seulement d'optimiser les chances de détection d'erreurs dans l'espace mémoire à vérifier grâce à 30 l'utilisation d'un échantillonnage avec schéma d'adressage pseudo-aléatoire réparti dans l'espace mémoire, mais également d'assurer une vérification exhaustive de l'espace mémoire à vérifier grâce à un contrôle cadencé de l'ensemble des échantillons, dont la cadence est optimisée en fonction de la capacité de détection des erreurs. De préférence, le schéma d'adressage est réparti uniformément pour augmenter encore les chances de détection d'erreurs dans l'ensemble de l'espace mémoire à vérifier. Selon un mode de réalisation particulier, lors de l'étape c), le nombre d'échantillons contrôlés à chaque opération de contrôle ou alternativement la cadence de contrôle, est déterminé par la capacité de calcul disponible du calculateur embarqué. Lorsque la capacité de calcul disponible augmente, une telle méthode de vérification permet soit d'augmenter la quantité des données vérifiées lors d'une étape de contrôle, soit d'augmenter la cadence de contrôle, et par conséquent, de réduire le temps total pour vérifier l'ensemble de l'espace mémoire sans pour autant pénaliser la capacité de fonctionnement du calculateur embarqué, ni donc de dégrader la sécurité à bord du véhicule. Selon un autre mode de réalisation particulier, la cadence de contrôle est supérieure au temps maximal de détection d'une erreur de données. Une telle limite permet d'assurer une détection exhaustive des erreurs. Selon un autre mode de réalisation particulier, dans lequel au moins une partie des données critiques sont stockées dans un espace mémoire volatile ou dans un espace mémoire non volatile réinscriptible, l'étape b) de protection des échantillons de données critiques stockées dans l'espace mémoire volatile ou non volatile réinscriptible est effectuée au fur à mesure des opérations de contrôle des échantillons prévues à l'étape c). Une telle mesure permet de s'assurer que les données contrôlées sont celles actuellement stockées dans l'espace mémoire considérée et susceptibles d'influencer le fonctionnement des applications faisant appel à ces données. Selon un autre mode de réalisation particulier, dans lequel au moins 30 une partie des données critiques sont stockées de manière permanente dans un espace mémoire non volatile, l'étape b) de protection des échantillons de données critiques stockées de manière permanente dans l'espace mémoire non volatile est effectuée hors-ligne au moment de la programmation de l'espace mémoire non volatile. Une telle mesure permet d'anticiper les étapes de contrôle de ces données permanentes et donc de réduire le temps de vérification. Selon un autre mode de réalisation particulier, le code de détection d'erreur défini à l'étape b) de protection de chaque échantillon est obtenu au moyen d'une des techniques suivantes : calcul de signature, calcul de parité, CRC ou fonction de hachage, et l'étape a) d'échantillonnage des données critiques est effectuée au moyen d'un registre à décalage avec rétroaction linéaire (LFSR). Selon un autre mode de réalisation particulier, les données critiques comprennent des données d'affichage des témoins et l'espace mémoire à contrôler est limité à un espace mémoire statique dans lequel sont stockées les données d'affichage des témoins. Une telle méthode permet de s'assurer de l'intégrité des témoins affichés en particulier ceux liés aux informations de sécurité utiles pour l'utilisateur du véhicule. Selon un autre mode de réalisation particulier, la méthode comprend 20 une étape supplémentaire consistant à corriger les données critiques erronées. Selon un autre mode de réalisation particulier, les données critiques comprennent des données d'image à afficher sur un écran du véhicule à une cadence de trames déterminée, l'étape c) de contrôle étant réalisée à la 25 cadence de trames pour afficher l'image. Une telle méthode permet d'optimiser la détection d'erreurs des données pour une grande zone d'affichage tout en réduisant le temps de détection grâce au schéma d'adressage pseudo-aléatoire. Avantageusement, il est prévu une étape supplémentaire consistant à activer un mode de correction choisi parmi l'un 30 des modes suivants : affichage de l'image dans un mode dégradé, remise à zéro des données d'image, affichage d'un message d'erreur, demande de mise à jour graphique ou effacement de l'écran. Selon un deuxième aspect, la présente invention concerne un programme d'ordinateur exécuté par un calculateur embarqué à bord d'un véhicule pour la mise en oeuvre d'une méthode vérification de l'intégrité de données critiques stockées dans au moins un espace mémoire associé au calculateur embarqué selon le premier aspect. Selon un troisième aspect, la présente invention concerne un support informatique pour stocker un programme d'ordinateur selon le deuxième 10 aspect. Selon un quatrième aspect, la présente invention concerne un véhicule automobile équipé d'un support informatique selon le troisième aspect. D'autres caractéristiques et avantages de la présente invention apparaîtront plus clairement à la lecture de la description détaillée qui suit 15 d'un mode de réalisation de l'invention donné à titre d'exemple nullement limitatif et illustré par les dessins annexés, dans lesquels : - la Figure 1 illustre une méthode de vérification de l'intégrité de données critiques selon un mode de réalisation de l'invention ; - la Figure 2 illustre un code de programmation pour la mise en oeuvre 20 de la méthode de vérification selon un premier mode de réalisation ; - la Figure 3 illustre un code de programmation pour la mise en oeuvre de la méthode de vérification selon un deuxième mode de réalisation ; La Figure 1 illustre une méthode de vérification de l'intégrité de données critiques stockées dans au moins un espace mémoire associé à un 25 calculateur embarqué à bord d'un véhicule. La vérification de l'intégrité de données en mémoire est nécessaire pour garantir la bonne exécution des programmes du calculateur embarqué et des fonctions basées sur des variables stockées en mémoire. Le ou les espaces mémoires à vérifier peuvent être dans une mémoire volatile, par exemple de type RAM, et/ou dans une mémoire non volatile réinscriptible ou non, par exemple Flash EEPROM ou disque dur. Dans le contexte de ressources processeurs limitées à bord d'un 5 véhicule, avec des applications utilisant un volume de données critiques de plus en plus important et ayant des impacts sur la sécurité et la qualité pour l'utilisateur final, il n'est pas aisé d'effectuer une vérification exhaustive des données en temps réel. C'est pourquoi, il est proposé de définir une méthode de surveillance des données critiques permettant en tache de fond (logiciel 10 ou même matériel) de vérifier l'intégrité des données critiques (programme, paramètres et variables). Pour cela, une première étape a) consiste à échantillonner les données critiques suivant un schéma d'adressage pseudo-aléatoire parfaitement prédictif. En effet, pour une taille de données importantes (par 15 exemple plusieurs centaines de kilo octets) le calcul d'un code d'erreur comme par exemple un calcul de signature ne peut être réalisé à 100% de charge processeur du calculateur embarqué afin de garantir les autres activités/applications à bord du véhicule en temps réel. Il est donc proposé de se baser sur un échantillonnage pseudo aléatoire répartit uniformément sur 20 l'espace mémoire contenant les données à diagnostiquer et progressif dans le temps. Une seconde étape b) consiste à protéger chaque échantillon de données critiques à contrôler par un code de détection d'erreur. L'espace mémoire contenant les données à surveiller peut être protégé par un code de 25 détection et/ou correction d'erreurs par exemple de type calcul de signature, bit de parité, redondance de données ou contrôle de redondance cyclique (CRC), fonction de hachage. Une troisième étape c) consiste à contrôler à une cadence déterminée l'intégrité des données critiques d'au moins un échantillon suivant ledit 30 schéma d'adressage pseudo-aléatoire avec le code de détection d'erreur correspondant, jusqu'à ce que l'ensemble des échantillons de l'espace mémoire aient été contrôlés ; le nombre d'échantillons contrôlés à chaque opération de contrôle étant déterminé par la capacité du code de détection d'erreur à détecter des erreurs. La tâche de contrôle, également appelée tâche de surveillance, peut être activée par l'exécutif temps réel à une cadence définie par le temps maximal de détection d'une erreur de données. Une quatrième étape d) consiste à détecter la présence ou non d'une erreur dans l'espace mémoire contrôlé. Dans le cas d'une implémentation matérielle, l'espace mémoire est accédé de façon entrelacée avec le processeur du calculateur embarqué par exemple. Cette unité autonome provoque alors en cas détection d'une erreur (avec ou sans correction) la montée d'un drapeau dans un registre accessible par le processeur du composant ou en plaçant une demande d'interruption par exemple. Avantageusement, on pourra prévoir une cinquième étape e) 15 consistant à corriger les données critiques erronées. Pour illustration du principe, un code de programmation (exemple de code en C) pour la mise en oeuvre de la méthode de vérification selon un premier mode de réalisation a été reproduit à la figure 2. Ainsi qu'il a été mentionné précédemment, pour une taille de données 20 importantes (plusieurs centaines de kilo octets) le calcul de code de détection d'erreur ne peut être réalisé à 100% de charge processeur pour garantir un bon fonctionnement des autres applications en temps réel. Il est donc proposé de se baser sur un échantillonnage pseudo aléatoire répartit uniformément sur l'espace mémoire ou zone de données à diagnostiquer et 25 progressif dans le temps. La signature est alors élaboré par exemple sur la base d'un calcul de type CRC (CRC32/8 par exemple) pour un bloc de N mots. Le choix de N dépend de la capacité de calcul disponible mais aussi de la capacité du code de protection à détecter des erreurs. Certaines variantes de CRC32 (CRC32/8) peuvent détecter 5 bits erronés sur un ensemble de 30 32768 bits soit 8Ko. Tous ces CRC32 permettent la détection de salves d'erreurs (burst) entre 2 et 31 bits de long. Il est éventuellement possible d'ajouter une stratégie de correction. Pour obtenir l'échantillonnage pseudo aléatoire des données, il est proposé d'utiliser un registre à décalage avec rétroaction linéaire ou LFSR 5 (Linear Feedback Shift Register) à longueur maximal comme source d'adresse de l'espace mémoire. Ce type de registre permet de générer une séquence 2a-1 mots différents sur la base d'un registre de a bits de long (pas de configuration tous les bits à 0 et tous les bits à 1). Cette méthode d'adressage consomme peu de charge processeur ou de logique 10 programmable. Le registre d'adressage est initialisé avec une valeur non nulle. Le choix du polynôme générateur n'est pas critique, car il existe beaucoup de possibilité (voir par exemple l'adresse internet : http://www.ece.cmu.eduhkoopman/Ifsr/index.html). Le registre LFSR est alors utilisé comme source d'adressage de 15 l'espace mémoire ou zone de données à vérifier. Des opérations de troncature ou saturation sont nécessaires car le registre doit être choisi pour permettre l'adressage de toutes les données de l'espace mémoire dont la taille n'est pas forcément une puissance de 2. Considérant une zone de données total à surveiller de 128ko par 20 exemple, on peut donc à chaque tic de la tâche de vérification (cadence de contrôle) procéder à l'analyse de 8Ko selon l'adressage du registre pseudo aléatoire. Cette approche permet donc une meilleure efficacité de détection des erreurs car les 8192 échantillons sont répartis de façon pseudo aléatoire sur l'ensemble de la zone de 128Ko. Au bout de 16 tics, l'ensemble de la 25 zone de données a été vérifiée. Cette tâche peut consommer la puissance de calcul résiduel en étant programmé avec la plus faible priorité d'exécution, juste au-dessus de la priorité de la tache de fond. Cette approche permet d'obtenir une vérification progressive à répartition pseudo aléatoire mais exhaustive. Cette méthode permet donc d'optimiser le temps de détection d'une erreur aléatoire dans la zone à surveiller pour une charge de contrôle donnée. Bien entendu, cet algorithme peut être exécuté par le processeur principal de l'application, c'est-à-dire celui du calculateur embarqué, mais aussi alternativement par un processeur auxiliaire, un processeur de signal annexe ou même un module de logique programmable, comme par exemple un réseau programmable de portes logiques ou Field Programmable Gate Array (FPGA). Le processus se décompose en deux étapes. Une étape consiste dans le calcul de la signature des données. Suivant le type de données, ce calcul est réalisé hors ligne au moment de la compilation du logiciel pour l'application (données programmes et paramètres flash permanents) ou pendant l'exécution pour les paramètres RAM ou flash mise à jour par l'application. La tache de calcul de signature est alors exécutée quand les données changent. L'autre étape consiste dans l'activation du mécanisme de surveillance. Ce mécanisme tourne en boucle pour permettre une vérification périodique de l'intégrité des données. Pour détecter une erreur, il suffit de comparer la valeur de signature obtenue lors de la surveillance à la valeur pré calculée. Toujours pour illustration du principe, un autre code de programmation (exemple de code en C) pour la mise en oeuvre de la méthode de vérification selon un deuxième mode de réalisation a été reproduit à la figure 3. Dans le cas d'un organe de restitution graphique, il peut être nécessaire de vérifier l'intégrité des symboles ou témoins affichés sur l'écran 25 en particulier si ceux-ci sont relatifs à une réglementation. Il est donc proposé de transposer le même principe que celui exposé dans le cadre du premier mode de réalisation présenté ci-dessus, à la mémoire volatile d'affichage (par exemple RAM) afin de vérifier l'intégrité de la mémoire d'affichage et donc l'intégrité graphique de l'ensemble des - 10 - informations affichées. Ceci s'applique par exemple à l'implémentation d'un combiné d'instrumentation automobile avec un écran LCD. La zone de détection peut se limiter à une zone statique d'affichage de témoins. Une surveillance globale de l'image est aussi possible, en particulier par un processeur ou composant auxiliaire qui pourra détecter un dysfonctionnement de l'équipement qui génère l'image et permettre la mise en place d'une stratégie de repli conforme à des règles de sécurité (mode dégradé, reset, affichage de messages, demande de mise à jour graphique, effacement de l'écran). La valeur initiale courante est stockée dans l'image pour permettre le calcul de la signature par le calculateur dans l'écran. Cela permet une synchronisation automatique des calculs entre les deux calculateurs. La vérification se fait alors à la cadence trame, sur un échantillon de l'image. L'algorithme proposé, coté calculateur, génère l'image variante avec un accès mémoire vidéo en coordonnées (à chaque trame par exemple). Cette algorithme peut être réalisé par du logiciel, de la logique programmable ou même par un contrôleur graphique FPGA qui pourrait y inclure cette fonction. On comprendra que diverses modifications et / ou améliorations 20 évidentes pour l'homme du métier peuvent être apportées aux différents modes de réalisation de l'invention décrits dans la présente description sans sortir du cadre de l'invention défini par les revendications annexées. REVENDICATIONS1. Méthode de vérification de l'intégrité de données critiques stockées dans au moins un espace mémoire associé à un calculateur 5 embarqué à bord d'un véhicule, la méthode comprenant les étapes consistant à: a) échantillonner les données critiques suivant un schéma d'adressage pseudo-aléatoire réparti dans ledit au moins un espace mémoire définissant un ensemble d'échantillons de 10 données critiques à contrôler ; b) protéger chaque échantillon de données critiques à contrôler par un code de détection d'erreur ; c) contrôler à une cadence déterminée l'intégrité des données critiques d'au moins un échantillon suivant ledit schéma 15 d'adressage pseudo-aléatoire avec le code de détection d'erreur correspondant, jusqu'à ce que l'ensemble des échantillons de l'espace mémoire aient été contrôlés ; le nombre d'échantillons contrôlés à chaque opération de contrôle étant déterminé par la capacité du code de détection d'erreur à 20 détecter des erreurs ; d) détecter la présence ou non d'une erreur dans l'espace mémoire contrôlé. 2. Méthode de vérification de l'intégrité de données critiques selon 25 la revendication 1, pour laquelle lors de l'étape c), le nombre d'échantillons contrôlés à chaque opération de contrôle ou alternativement la cadence de contrôle, est déterminé par la capacité de calcul disponible du calculateur embarqué.-12- 3. Méthode de vérification de l'intégrité de données critiques selon la revendication 1 ou 2, pour laquelle la cadence de contrôle est supérieure au temps maximal de détection d'une erreur de données. 4. Méthode de vérification de l'intégrité de données critiques selon l'une des revendications 1 à 3, pour laquelle au moins une partie des données critiques est stockée dans un espace mémoire volatile ou dans un espace mémoire non volatile réinscriptible, l'étape b) de protection des échantillons de données critiques stockées dans l'espace mémoire volatile ou non volatile réinscriptible est effectuée au fur à mesure des opérations de contrôle des échantillons prévues à l'étape c) et pour laquelle au moins une autre partie des données critiques est stockée de manière permanente dans un espace mémoire non volatile, l'étape b) de protection des échantillons de données critiques stockées de manière permanente dans l'espace mémoire non volatile est effectuée hors-ligne au moment de la programmation de l'espace mémoire non volatile. 5. Méthode de vérification de l'intégrité de données critiques selon l'une des revendications 1 à 4, pour laquelle le code de détection d'erreur défini à l'étape b) de protection de chaque échantillon est obtenu au moyen d'une des techniques suivantes : calcul de signature, calcul de parité, CRC ou fonction de hachage, et pour laquelle l'étape a) d'échantillonnage des données critiques est effectuée au moyen d'un registre à décalage avec rétroaction linéaire (LFSR). 6. Méthode de vérification de l'intégrité de données critiques selon l'une des revendications 1 à 5, pour laquelle les données critiques comprennent des données d'affichage des témoins et pour laquelle l'espace- 13 - mémoire à contrôler est limité à un espace mémoire statique dans lequel sont stockées les données d'affichage des témoins. 7. Méthode de vérification de l'intégrité de données critiques selon 5 l'une des revendications 1 à 6, comprenant une étape supplémentaire consistant à: e) corriger les données critiques erronées. 8. Méthode de vérification de l'intégrité de données critiques selon 10 l'une des revendications 1 à 6, pour laquelle les données critiques comprennent des données d'image à afficher sur un écran du véhicule à une cadence de trames déterminée, l'étape c) de contrôle étant réalisée à la cadence de trames pour afficher l'image. 15 9. Méthode de vérification de l'intégrité de données critiques selon la revendication 8, comprenant une étape supplémentaire consistant à: e) activer un mode de correction choisi parmi l'un des modes suivants : affichage de l'image dans un mode dégradé, remise à zéro des données d'image, affichage d'un message d'erreur, demande de mise 20 à jour graphique ou effacement de l'écran. 10. Programme d'ordinateur exécuté par un calculateur embarqué à bord d'un véhicule pour la mise en oeuvre d'une méthode vérification de l'intégrité de données critiques stockées dans au moins un espace mémoire 25 associé au calculateur embarqué selon l'une des revendications 1 à 9.