Présentation de ESBMC-Arduino

ESBMC-Arduino est une solution de vérification formelle pour les systèmes de contrôle industriels (ICS) basés sur des microcontrôleurs à faible coût, tels que les Arduino. Les systèmes ICS utilisent des langages de programmation tels que IEC 61131-3 pour contrôler les processus industriels.

Problème de l'écart de déploiement

L'écart de déploiement se réfère à la différence entre le modèle de vérification formelle et la réalité matérielle du système. Les vérificateurs existants, tels que ESBMC-PLC, utilisent des modèles de scan-cycle abstraits avec des entiers non bornés, ce qui ne reflète pas la réalité des microcontrôleurs à faible coût.

Résolution avec ESBMC-Arduino

ESBMC-Arduino utilise une couche d'abstraction matérielle (HAL) déclarative pour modéliser les caractéristiques matérielles du système, telles que la largeur des mots (16 bits), la résolution de l'ADC et la liaison des entrées/sorties. Cette approche permet une vérification formelle plus précise et élimine les faux positifs.

Résultats et implications

Les résultats montrent que ESBMC-Arduino élimine tous les 54 faux positifs sur un corpus de 123 programmes, tout en préservant les preuves de robustesse. Cette approche permet également de détecter les défauts dépendants de la largeur avec des témoins réalistes.

int16_t valeur = ADC.read();

Cet exemple de code montre comment la valeur lue par l'ADC est stockée dans une variable entière 16 bits, ce qui reflète la réalité matérielle du système.