Quel language pour l’informatique embarquée ?
Qu’est-ce que l’informatique embarquée ?
L’informatique embarquée comprend l’ensemble des éléments logiciels d’un système embarqué.
L’informatique embarquée est présente partout : électroménager, téléphones portables, automobile, appareils de mesure, caisses enregistreuses, télévision, etc. Le domaine des transports incluant les véhicules, les bateaux, les avions, les trains et l’aérospatiale peut être vu comme un domaine important de l’informatique embarqué. Nous retrouvons aussi des systèmes embarqués dans le pilotage d’installations industrielles ou répartis qui peuvent travailler en réseau. Le domaine médical dispose aussi de systèmes embarqués.
L’évolution des smartphones et tablettes sort aujourd’hui du cadre de l’informatique embarquée pour se spécialisé et devenir un domaine spécifique.
Principales caractéristiques
L’informatique embarquée diffère de l’informatique sur les systèmes informatiques (ordinateurs, serveurs et smartphones) par des critères fonctionnels comme :
-
la criticité : les systèmes embarqués agissent sur un système physique, les actions sont irrémédiables et causales. Le degré de criticité dépend des déviations par rapport aux états nominaux. Celles-ci peuvent entrainer des conséquences plus ou moins graves pour des installations, des personnes, la sécurité, l’objectif de la mission ou la rentabilité.
-
la réactivité : les systèmes embarqués doivent interagir à la vitesse imposée par le processus piloté. Ceci induit des impératifs de temps réel et de durée d’exécution déterminée en fonction du problème à traiter. Les systèmes embarqués sont souvent basé sur un noyau temps réel à cet effet.
-
l’autonomie : les systèmes embarqués s’enclenchent automatiquement avec le processus sans intervention humaine et doivent fonctionner sans interruption et de manière autonome pendant toute la vie du processus contrôlé.
-
la robustesse, la sécurité et la fiabilité : Les programmes des systèmes embarqués doivent répondre à une très grande robustesse algorithmique, ne pas se retrouver dans un problème d’effet de bord sur la gestion de la mémoire, des variables, de la pile, etc. ou dans une situation de boucle sans fin ou de données dépassant la capacité de calcul. Il faut y ajouter les problèmes de malveillance humaine, d’attaque informatique ainsi que la continuité du service algorithmique et matériel dans tous les cas.
et des critères non fonctionnels au sens informatique comme :
-
la taille : le volume et le poids sont souvent limités
-
le coût : le prix est particulièrement critique pour des productions de masse.
-
la consommation énergétique : sur les systèmes embarqués à pile ou sans capacité de recharge.
-
la robustesse physique : l’environnement thermique, mécanique, l’humidité, la corrosion, etc. sont des éléments auxquels les systèmes embarqués sont soumis.
-
sa durée de vie : Celle-ci est en général comprise au delà de 10 ans voir bien plus même (onduleur de panneaux solaires, équipements de véhicules, etc.).
Languages de programmation
Dans le top trois des languages utilisés dans les systèmes embarqués nous trouvons :
- C
- C++
- Ada
Le language assembleur reste aussi encore et toujours utilisé mais plutôt pour la maintenance d’anciens systèmes, des parties critiques spécifiques ou des développements bas-niveaux proche du matériel et inclu dans u ensemble C ou C++.
Des languages sémantiques formels ont aussi été développés pour des applications à haut niveau de criticité, comme l’avionique.
Des languages comme Java, Python, Node.js nécessitent une système d’exploitation qu’il n’est pas nécessaire ou trop coûteux d’installer sur un système embarqué. Sa fiabilité est aussi moins bonne qu’un système temps réel en général.
Dans notre cours, nous désirons illustrer l’utilisation d’un noyau temps réel. La plupart de ces noyaux nécessitent l’utilisation de C++ qui ajoute la vison orientée objet et une plus grande fiabilité que le C. Nous découvrirons ceci dans le rappel et l’introduction à C++ au chapitre suivant.