Qu'est-ce qu'un système temps-réel et leur sûreté de fonctionnement ?

Introduction

Le but de ce cours est de comprendre comment fonctionne un système temps réel et comment s’assurer qu’il va fonctionner correctement. On verra quels sont les différentes manières de le protéger des bugs logiciel ou bien d’électronique qui ne fonctionne plus.

Le cours se découpe en deux parties :

  1. Une explication de ce qui fait un bon système embarqué
  2. Comment protéger votre système embarqué des bugs logiciel et des problèmes électroniques

Commençons d’abord par quelques définitions importantes :

  • Système temps réel : C’est un système qui doit répondre dans un temps donné. Il ne doit pas dépasser ce temps sinon ce n’est plus un système à temps réel.

 

  • Sûreté de fonctionnement : La sûreté de foncitonnement d’un système c’est évaluer si le système ne réponds pas à sa mission, qu’est-ce qui se passe ?

Attention au terme : "système à temps réels"

Cela peut-être assez contre intuitf car certain système que l’on utilise tous les jours nous semble à temps réels notamment une messagerie électronique comme messenger par exemple n’est pas un système à temsp réel car il n’y a pas de contrainte de temps come sur un système d’exploitation par exemple.

Définition d'un système Embarqué

Définition d'un Système

Un système de traitement de l’information est appelé à remplir une mission :

  • Une mise en oeuvre d’un certain nombre de fonctions
  • suites d’instructions codées (programme)
  • des informations codées et organisées

Il y a deux façons de de contrôler un système embarqué :

  • Système de transmission : Le système est contrôlé par une personne humaine. Ceci peut-être à temps réel, néanmoins l’humain eput toujours attendre un peu.
  • Système de contrôle commande : Le système est en boucle fermée, les entrées et sorties se font en temp réel. On peut donner l’exemple d’un radiateur avec thermostat qui mesure la temperature et adapte en fonction de la température indiquée.

Pour le réaliser il y a deux différentes parties :

  • Carte électronique
  • Logiciel

On va voir cette deux différentes parties.

Les logiciels

Les logiciels sont responsables d’une grande partie des bugs d’un système embarqué. C’est pour cela qu’il est nécessaire d’avoir certaines règles qui différencient un bon logiciel d’un mauvais.

Définition des règles

  1. Un logiciel doit être efficace : il doit réaliser les fonctions pour lequel on l’a conçu et réaliser les actions dans le temps demandé.
  2. Fiables : Le logiciel doit faire ce que on lui demande et ne doit faillir dans l’action qu’il doit réaliser.
  3. Compréhensible : le logiciel doit pouvoir être relu facilement par un autre développeur qui pourra le reprendre et ajouter des fonctionnalités ou l’améliorer.
  4. Transportable : Pour certain logiciel, il faut qu’il soit transportable d’une machine à une autre de façon pour faire plusieurs générations de machine ou de machine de plusieurs type.
  5. Maintenable : Il faut que le logiciel puisse être corrigé, notamment s’il y a des bugs afin de l’améliorer.
  6. Réutilisable : Il faut que le logiciel puisse être utilisé pour de nouvelles machines afin de ne pas repartir de 0 et d’avoir une base pour un nouveau logiciel.

Les différentes programmations

Il y a deux façons d’écrire un programme :

La programmation multitâches : Permet d’éxécuter une fonction et de l’interrompre pour une autre fonction qui serait plus importante. L’avantage de cette solution c’est une grande souplesse avec plusieurs d’optimisations possible.L’inconvénient est être sur que les ressources ne soit pas utilisé par les mêmes fonctions en même temps. 

Programmation en boucle : On écrit le programme fonction après fonction. Pas d’interruption possible d’une fonction à une autre. L’avantage de  ce type de programmation, c’est que c’est très simple, limite les problèmes d’interruptions. L’inconvénient de ce type de programmation est qu’il est rigide et peu perfomant.

Point d'interrogation

Savez-vous quand est-ce qu'un logiciel à le plus de bug ?

Il y a deux moment dans la durée de vie d’un logiciel ou les bugs sont souvent présents : lors de la conception du logiciel ou l’on a des bugs de réalisation et après chaque mise à jour du logiciel qui ajoute des bugs en plus.

Système critique

Un système critique est un système à temps réel qui risque de disfonctionner si les contraintes temporelles ne sont pas respectées. On peut notamment citer comme exemple un système d’alarme qui doit prévenir d’un problème : il est essentiel qu’elle previenne le plus tôt du risque plutôt que trop tard.

On va voir quelles sont les règles

  1. Tolérance aux fautes et robustesses : détection des anomalies, et fonctionnement en dégradé
  2. Déterminisme comportemental : La réalisation des mêmes tests produisent les mêmes résultats.
  3. Application du principe de diversification : Faire de la redondance ( plusieurs unités différente faisant le même calcul pour avoir le bon résultat).
  4. Défense en profondeur : Ici on ne cherche plus plus pourquoi le système de protection ne marche pas mais on fait en sorte que même si les systèmes de secours ne fonctionnent pas on a d’autre sécurité pour contenir l’incident et limiter les dégats.

Si un système critique à temps réel dépasse le temps auquel il aurait du réponde on a une faille de sécurité avec un incident avec un impact sur la vie humaine.