• Aucun résultat trouvé

Préservation de preuve lors de la compilation sur microcontrôleur

N/A
N/A
Protected

Academic year: 2021

Partager "Préservation de preuve lors de la compilation sur microcontrôleur"

Copied!
2
0
0

Texte intégral

(1)

HAL Id: hal-01006648

https://hal-mines-paristech.archives-ouvertes.fr/hal-01006648

Submitted on 11 Dec 2014

HAL is a multi-disciplinary open access

archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Préservation de preuve lors de la compilation sur microcontrôleur

Vivien Maisonneuve

To cite this version:

Vivien Maisonneuve. Préservation de preuve lors de la compilation sur microcontrôleur. Journées nationsles GDR-GPL, Jun 2014, Paris, France. 2014. �hal-01006648�

(2)

Préservation de preuve lors de la compilation sur microcontrôleur

Vivien Maisonneuve

, thèse encadrée par

François Irigoin

et

Olivier Hermant

Centre de recherche en informatique, Mathématiques et systèmes, MINES ParisTech, Fontainebleau

Conception d’un système embarqué

Un système embarqué est un système informatique autonome

spécialisé.

Contraintes d’autonomie, de temps d’exécution, de sécurité & sûreté. Utilise un microprocesseur basse consommation ou un microcontrôleur. Systèmes embarqués dans les moteurs, les télécommandes, les appareils de bureau, l’électroménager, les jouets, les téléphones, etc.

Travail de conception sur deux niveaux :

Formalisation :

• Conception du système ;

• Modélisation physique de

l’environnement ;

Preuve mathématique que

le système se comporte correctement.

MATLAB, Simulink

Réalisation : programme C de très bas niveau

• Plusieurs milliers de LOC ;

• Calculs décomposés en

opérations élémentaires ;

• Gestion des moteurs et des

capteurs. GCC, Clang

Transformations graduelles

Objectifs

Comment être sûr que le programme exécuté est correct ?

Preuves de stabilité numérique : montrer que les paramètres d’un

système restent dans une certaine enveloppe durant son exécution (stabilité de Lyapunov).

Primordiales pour la sécurité du système.

Modélisation en boucle ouverte ou en boucle fermée (en tenant

compte de la rétroaction).

Comment adapter la preuve sur le modèle physique en une preuve équivalente sur le programme ?

Nombres à virgule flottante (norme IEEE 754)

Dans le programme, les valeurs numériques du modèle sont approximées

par des valeurs binaires de précision limitée, p. ex. nombres flottants.

31 23 0

(−1)s × 2e−127 × m

Les preuves de stabilité ne s’appliquent plus :

• Altération des constantes numériques du système ;

Erreurs d’arrondi lors des calculs, qui se cumulent.

Approche pour prouver la stabilité en flottants :

Transposition des arguments de preuve en tenant compte de ces

effets ;

• Vérification de la validité de la preuve : si oui, le programme est stable.

Bibliographie

[1] E. Feron. From Control Systems to Control Software. IEEE Control

Systems Magazine 30(6):50–71, Dec. 2010.

[2] J. Feret. Static Analysis of Digital Filters. ESOP 2004, LNCS 2986,

Springer (2004) 33–48.

Pour en savoir plus :

http://www.cri.ensmp.fr/classement/doc/A-556.pdf

Exemple : système masse-ressort [1]

Système mécanique à 1 degré de liberté : masse accrochée à un ressort, contrainte de se déplacer dans une seule direction.

Le contrôleur exerce une action u afin que la position y de la masse

atteigne la consigne yd. y yd u E G xc1 xc2 Ac = [0.4990, -0.0500; 0.0100, 1.00]; Bc = [1; 0]; Cc = [564.48, 0]; Dc = -1280; xc = zeros(2, 1); receive(y, 2); receive(yd, 3); while (1) % xc ∈ E yc = max(min(y - yd, 1), -1); u = Cc*xc + Dc*yc; xc = Ac*xc + Bc*yc; send(u, 1); receive(y, 2); receive(yd, 3); % xc ∈ G ⊂ E end

Condition de stabilité (Lyapunov) : la variable d’état xc reste dans une certaine ellipse E durant l’exécution.

Preuve de stabilité dans R : fournie sous forme d’invariants

• À l’entrée de la boucle, xc appartient à E ; • En sortie, xc appartient à une ellipse G ⊂ E ;

En flottants ?

Altération des constantes numériques Ac, Bc, Cc, Dc ; • Erreurs d’arrondi lors du calcul de xc.

=⇒ Preuve inutilisable en flottants.

Passage aux flottants – cadre théorique

Transposition code + invariants en 2 étapes :

% d i % d0 = θ(d , i ) Réels % ¯d ˜ı % ˜d 0 = θ(¯d , ˜ı) % ¯d ¯ı % ¯d 0 ⊃ θ(¯d , ˜ı) ⊕ ε Flottants

Code : constantes converties en

flottants

Invariants recalculés en utilisant les mêmes théorèmes θ, appliqués aux nouvelles constantes

Code : fonctions (+, *, . . . )

remplacées par leurs équivalents flottants

Invariants « élargis » pour inclure l’erreur d’arrondi

Conservation de la forme

ellipsoïdale pour propagation Cadre prouvé en Coq.

Passage aux flottants – automatisation

LyaFloat : implémentation pour systèmes linéaires à invariants de Lyapunov

• Traduction du programme en flottants ;

Transposition automatique des invariants ;

• Vérification de la condition de stabilité.

Possibilité de jouer sur la précision.

Programmé en Python (~ 500 LOC) avec la bibliothèque SymPy.

Application au système masse-ressort

Calcul d’une ellipse F (en pointillés rouges ci-dessus) déduite de G telle qu’en sortie de boucle xc ∈ F, puis vérification de l’inclusion F ⊂ E.

Résultats :

Boucle ouverte : système stable avec des flottants 32 bits. • Boucle fermée : échec de l’analyse avec 32 bits,

Références

Documents relatifs

Dans cet article nous nous int´eressons au routage en Boucle ouverte dans deux files d’attente en parall`ele lorsque les services et les inter arriv´ees avant routage

Abstract: Le filtrage et la pr´ e-compensation sont des cas particuliers d’une classe plus g´ en´ erale de probl` emes: les probl` emes de contrˆ ole en boucle ouverte.. Ce

´ Etant donn´e un programme et une preuve de sa stabilit´e par la th´eorie de Lyapunov, le programme LyaFloat que nous introduisons permet de v´erifier automatiquement, si cela

RÉSUMÉ : Après avoir analysé le comportement dynamique d’une machine synchrone alimentée en courant, fonctionnant en vitesse variable et en boucle ouverte de position, nous

On dispose pour cela d’un système de régulation de débit et de température d’air.. Ce système est

De plus, les instructions, simples par nature, sont exécutées en un seul cycle d'horloge, ce qui rend l'exécution des programmes plus rapide qu'avec des processeurs basés sur

Elle créée donc un trou dans le circuit et empèche la circulation du courant dans la boucle concernée. Copyright © Cours de Physique et de Chimie

Elle créée donc un trou dans le circuit et empèche la circulation du courant dans la boucle concernée. Copyright © Cours de Physique et de Chimie