FR 2905487 A1 20080307 FR 0757235 A 20070829 1 Domaine de l'invention La présente invention concerne un procédé de correction d'un microprocesseur reprogrammable. L'invention concerne également un dispositif de correc- tion pour effectuer un procédé de correction. Etat de la technique De nombreux appareils de commande utilisent un micro-processeur qui exécute une routine d'application pré déterminée de manière fixe. Ces routines d'application sont mémorisées de manière caractéristique dans le microprocesseur. Le microprocesseur comporte à cet effet une zone de mémoire inscriptible une seule fois ou réinscriptible. Le microprocesseur charge les différentes instructions de la zone de mémoire directement de cette zone dans son registre d'exécution. La zone de mémoire est réalisée de façon caractéristique comme mémoire EEPROM. Des appareils de programmation externes permettent d'enregistrer de nouvelles routines d'application par blocs dans la mémoire EEPROM. Dans les mémoires réinscriptibles, les bits séparés peu-vent être modifiées isolément par des influences parasites. Ces erreurs de bits, isolées, peuvent bloquer l'exécution ou n'assurer qu'une exécution erronée des routines de commande. Dans les appareils de commande concernant tout particulièrement la sécurité, tels que par exemple un système de coussins gonflables, on ne peut accepter un tel comportement erroné ou défectueux. De tels appareils de commande sont ainsi vérifiés pour déterminer si les routines de commande et les données associées sont enregistrées sans erreur avant que ces appareils ne soient fournis. Si cela est le cas, on bloque l'appareil de commande. Exposé et avantage de l'invention A cet effet, l'invention concerne un procédé du type défini ci-dessus comprenant les étapes suivantes : a) fournir le microprocesseur avec une mémoire semi conductrice non volatile reprogrammable, b) mémoriser au moins une routine d'application dans la mémoire semi-conductrice non volatile réinscriptible, c) fournir un code de correction au moins pour la routine d'application, 2905487 2 d) fournir un code de vérification au moins pour la routine d'application, e) vérifier l'intégrité au moins de la routine d'application en mémoire à l'aide du code de vérification, 5 f) effectuer une correction à l'aide du code de correction s'il n'y a pas intégrité de la routine d'application, la correction se faisant dans la mémoire semi conductrice non volatile réinscriptible, g) vérification de l'intégrité de la routine d'application corrigée à l'aide du code de vérification, 10 h) et accepter une correction réussie si l'intégrité de la routine d'application corrigée est confirmée. Ainsi le procédé selon l'invention permet de corriger avantageusement les routines d'application mémorisées avant que les microprocesseurs ne soient fournis. 15 Un moyen du procédé selon l'invention consiste à corriger une routine d'application du microprocesseur reprogrammable si cette routine est reconnue comme défectueuse. Cela permet une très grande sécurité quant à l'intégrité de la routine d'application du fait que l'on utilise différents procédés de contrôle et pour la correction de la routine 20 d'application. Les moyens à mettre en oeuvre pour un microprocesseur ou une installation de traitement de données d'un appareil de commande sont réduits du fait que la correction n'est faite que si préalablement on a constaté un défaut d'intégrité. De plus, la correction ne se 25 fait pas dans la mémoire non volatile réinscriptible. Si la routine d'application est chargée une fois suivante, elle aura son intégrité et ne nécessitera pas une nouvelle fois une correction. La vérification et la correction se font sans éléments ex-ternes. Cela permet d'effectuer la correction pendant le fonctionnement. 30 Le microprocesseur peut charger les instructions des routines d'application chaque fois directement de la mémoire semiconductrice non volatile, réinscriptible pour leur exécution. A la correction on réinscrit un bloc de la mémoire semi conductrice non volatile réinscriptible qui comporte la routine 35 d'application à corriger. 2905487 3 Une routine de correction pour l'exécution de la correction est mémorisée dans un bloc séparé. Cela garantit qu'à la correction on ne remplace pas la routine de protection par suscription accidentelle. De manière préférentielle, il n'est pas possible de modifier le bloc 5 avec la routine de correction. La vérification de l'intégrité peut se faire toujours avant l'exécution de la routine d'application. Une routine de correction pour l'exécution de la correction peut être la routine d'application elle-même. De façon avantageuse, 10 on n'accepte pas une correction comme réussie si la routine de correction enregistrée en mémoire n'a pas d'intégrité. La mémoire non volatile réinscriptible peut être une mémoire flash. La fourniture de la routine d'application peut se faire par 15 une routine de chargement qui enregistre en mémoire la routine d'application dans la mémoire non volatile réinscriptible. De façon avantageuse, la routine de chargement vérifie l'intégrité de la routine d'application enregistrée en mémoire immédiatement après l'enregistrement en mémoire à l'aide du code de vérification. De plus, la 20 routine de chargement peut être elle-même une routine d'application. Le rechargement ou la modification des routines d'application seront assurés dans ce cas par la routine de chargement. Dans ces conditions, il n'est pas nécessaire de fournir cette routine de chargement de l'extérieur. En même temps, la routine de chargement elle-même peut 25 être modifiée. Le code de correction peut être un code Reed-Solomon. Dessins La présente invention sera décrite ci-après de manière plus détaillée à l'aide des dessins annexés dans lesquels : 30 - la figure 1 montre un mode de réalisation d'un dispositif pour exécuter un procédé de correction, - la figure 2 montre un ordinogramme d'un mode de réalisation du procédé de correction selon l'invention, - la figure 3 montre un ordinogramme d'une application du mode de 35 réalisation de la figure 2, 2905487 4 - la figure 4 montre une autre application du mode de réalisation de la figure 2. Description de modes de réalisation La figure 1 est un schéma par blocs d'un appareil de 5 commande 1 qui peut effectuer un procédé de correction. L'appareil de commande 1 comporte un microprocesseur 2. Le microprocesseur 2 est couplé à une mémoire-flash ou à une autre mémoire non volatile réinscriptible 4. Le microprocesseur 2 commence par charger ou exécuter 10 une première instruction à une adresse fixe prédéfinie de la mémoire flash 4 de façon caractéristique à l'adresse 0. Puis le microprocesseur 1 charge une instruction après l'autre de la mémoire flash 4 selon un compteur d'adresses incrémenté ou des ordres de sauts qui l'exécutent. On n'implémente pas de mémoire principale ni autre 15 mémoire à accès direct, de grandes dimensions. Il n'y a pas non plus de copie de la routine d'exécution à effectuer. Un système de diagnostic 5 ou une installation de fourniture de nouvelles routines d'applications peut être couplée à une interface 6 du microprocesseur 2. 20 Un mode de réalisation d'un procédé de correction sera décrit ci-après en se fondant sur l'ordinogramme de la figure 2. Dans la mémoire non volatile réinscriptible 4 on a enregistré 10 une routine de déclenchement d'un coussin gonflable. La routine de déclenchement est un exemple de multiples routines d'applications différentes. 25 On intègre un code de correction 11 dans la routine de déclenchement. De façon avantageuse on utilise un code Reed-Solomon. Le code Reed-Solomon permet la correction d'erreurs de bits, isolées, dans la routine de déclenchement. Le nombre de bits supplémentaires introduit pour le code Reed-Solomon sera choisi ensuite selon le nom- 30 bre d'erreurs de bits qui reste à corriger. Les bits supplémentaires pour la correction par le code Reed-Solomon peuvent également être enregistrés dans une zone distincte de la mémoire au lieu d'être intégrés à la routine de déclenchement. En outre, on calcule (12) un code de vérification pour la 35 routine de déclenchement et on l'enregistre dans la mémoire flash. Le 2905487 5 code de vérification peut être par exemple une somme de contrôle, générée de manière cyclique. Si les exigences de sécurité sont réduites, on ne peut utiliser le simple bit de contrôle de parité. Avant de démarrer la routine de déclenchement, on véri- 5 fie 13 son intégrité. Cela se fait à l'aide du code de vérification. La routine de vérification responsable est de préférence également enregistrée dans la mémoire-flash. Cette routine de vérification est exécutée par le microprocesseur et elle charge les différentes instructions de la routine de déclenchement pour lire le contenu de la mémoire sans avoir à exécuter ses instructions. Pas à pas, de façon connue, le code de vérification recalcule la routine d'application mémorisée et la compare au code de vérification fourni pour déterminer l'identité. En cas d'absence d'intégrité, c'est-à-dire d'absence d'identité entre le code de vérification nouvellement calculé et le code de 15 vérification fourni, on corrige la routine de déclenchement (14). Une routine de correction appropriée qui peut être enregistrée elle-même dans la mémoire flash, exécute le procédé Reed-Solomon. La routine de correction est exécutée pas à pas par le microprocesseur. Ensuite on surscrit le bloc dans lequel est mémorisée la routine de déclenchement 20 par le contenu corrigé. Pour la surscription par bloc, on peut utiliser une mémoire tampon 3. Celle-ci peut contenir une copie du bloc et la routine d'application, corrigée, peut être mémorisée de façon intermédiaire avant d'inscrire le contenu dans la mémoire flash. 25 En général, on élimine de cette manière toutes les erreurs de bits de la routine de déclenchement. Toutefois, il peut arriver isolé-ment que la routine de déclenchement contienne trop d'erreurs de bits. Cela nécessite la vérification de l'intégrité 15 de la routine de déclenchement corrigée à l'aide du code de vérification. 30 Les corrections sont exécutées directement dans la mémoire non volatile réinscriptible. Ainsi, la routine d'application, c'est-à-dire la routine de déclenchement se trouve alors dans sa version corrigée dans la mémoire non volatile. La routine de correction est enregistrée de préférence 35 dans un unique bloc de la mémoire flash 4. Comme pour l'exécution de 2905487 6 la routine de correction, on ne dispose d'aucune copie, la routine de correction ne doit pas être remplacée par surscription au cours de la correction d'un bloc. Le procédé décrit selon le mode de réalisation ne néces- 5 site pas de routines externes. Il est ainsi totalement autonome et peut être exécuté par exemple localement dans l'appareil de commande 1. La forme de réalisation peut être utilisée dans de nombreuses applications dans un appareil de commande. Une première application consiste à utiliser le procédé de correction lors de la 10 reprogrammation 20 d'un appareil de commande. Les nouvelles routines d'application sont fournies 21 par un système externe. De la même manière, on fournit 22, 23 de façon externe le code de correction et le code de vérification des nouvelles routines d'application. Une routine de chargement qui fait partie des routines d'application dans la mémoire 15 non volatile, réinscriptible, charge 24 les nouvelles routines d'application fournies avec les codes de correction et les codes de vérification. Après enregistrement de la nouvelle routine d'application dans la mémoire non volatile réinscriptible, on vérifie 25 son intégrité à 20 l'aide du code de vérification et on fait le cas échéant 26 une correction à l'aide du code de correction. Un autre domaine d'application du mode de réalisation du procédé de correction consiste à vérifier le cas échéant corriger de façon cyclique ou à la demande, l'appareil de commande pendant son 25 fonctionnement pour les routines d'application qu'il contient. C'est ainsi que par exemple chaque routine d'application peut être vérifiée quant à son intégrité avant son démarrage et le cas nécessaire, on pourra la corriger et revérifier son intégrité. Cela permet également d'assurer qu'un appareil de corn- 30 mande puisse de nouveau démarrer dans la majorité des cas, même si une routine de démarrage d'un appareil de commande est devenue entre temps défectueuse. Normalement un défaut de la routine de démarrage ferait que l'unité de processeur, les autres unités de mémoire et les interfaces ne pourraient pas être installées correctement et qu'aucune 35 autre routine d'application ne pourrait plus démarrer. 2905487 7 Pendant le fonctionnement de l'appareil, on surveille cycliquement l'intégrité de la routine de démarrage. Si une erreur de bit ou autre perturbation ne permet plus d'avoir l'intégrité, on effectue une correction de la routine de démarrage. Pour la sécurité on vérifie une 5 nouvelle fois l'intégrité de la routine de démarrage Au démarrage d'un appareil de commande (30) on peut exécuter les étapes données ci-après (figure4). Tout d'abord, on vérifie les routines de contrôle et les routines de correction (31, 32). Si un dé-faut existe dans ces routines, par exemple une erreur de bit (33), alors 10 pour des raisons de sécurité on suppose que l'appareil de commande peut être remis (34) dans un état apte à fonctionner. Si les routines ci-dessus sont en ordre, on vérifie les autres routines d'application (35). La vérification et le cas échéant la correction se font selon le mode de réalisation qui a été notamment décrit en liaison avec la figure 2. 15 30 REVENDICATIONS 1 ) Procédé de correction d'un microprocesseur reprogrammable comprenant les étapes suivantes : a) fournir le microprocesseur avec une mémoire semi conductrice non volatile reprogrammable, b) mémoriser au moins une routine d'application dans la mémoire semi-conductrice non volatile réinscriptible, c) fournir un code de correction au moins pour la routine d'application, d) fournir un code de vérification au moins pour la routine d'application, e) vérifier l'intégrité au moins de la routine d'application en mémoire à l'aide du code de vérification, f) effectuer une correction à l'aide du code de correction s'il n'y a pas intégrité de la routine d'application, la correction se faisant dans la mémoire semi conductrice non volatile réinscriptible, g) vérification de l'intégrité de la routine d'application corrigée à l'aide du code de vérification, h) et accepter une correction réussie si l'intégrité de la routine d'application corrigée est confirmée. 2 ) Procédé de correction selon la revendication 1 dans lequel le micro-processeur charge des instructions de la routine d'application chaque fois directement à partir de la mémoire semi conductrice non volatile réinscriptible pour l'exécution. 3 ) Procédé de correction selon la revendication 1 selon lequel lors de la correction on réinscrit un bloc de la mémoire semi conductrice volatile réinscriptible. 4 ) Procédé de correction selon la revendication 1 dans lequel on mémorise une routine de correction pour exécuter la correction dans un bloc propre. 10 2905487 9 5 ) Procédé de correction selon la revendication 4 selon lequel une cor-rection est considérée comme non réussie si la routine de correction n'a pas d'intégrité. 5 6 ) Procédé de correction selon la revendication 1 selon lequel la mémoire non volatile réinscriptible est une mémoire flash. 7 ) Procédé de correction selon la revendication 1 selon lequel le code de correction est un code Reed Solomon. 8 ) Procédé de correction selon la revendication 1 selon lequel l'intégrité de la routine d'application en mémoire est vérifiée avant d'exécuter cette routine d'application. 15 9 ) Dispositif de correction notamment pour la mise en oeuvre du procé- dé de correction selon l'une des revendications 1 à 8 comprenant : - une mémoire non volatile réinscriptible (4) pour enregistrer au moins une routine d'application, chaque fois un code de vérification et chaque fois un code de correction pour au moins une routine 20 d'application - une installation de traitement de données pour exécuter un contrôle de l'intégrité de la routine d'application à l'aide du code de vérification et pour exécuter une correction en utilisant le code de correction. 25