# Informatique embarquée

On désigne sous le terme informatique embarquée les aspects logiciels se trouvant à l'intérieur des équipements n'ayant pas une vocation purement informatique. L'ensemble logiciel, matériel intégré dans un équipement constitue un système embarqué.
Aujourd'hui, l'informatique embarquée est présente partout : appareils électroménager, téléphone portable, automobile, scanner ou lecteur de code-barres des caisses aux magasins, télévision, etc. Le domaine des transports incluant les véhicules, mais aussi les satellites et plus globalement l'aérospatiale, peut être considéré comme le domaine privilégié de l'informatique embarquée.

## Caractéristiques

L'informatique embarquée a des impératifs différents de l'informatique personnelle (les micro-ordinateurs). Ce sont principalement :
* la criticité : Les systèmes embarqués sont souvent critiques, et les systèmes critiques sont presque toujours embarqués. En effet, comme un tel système agit sur un environnement physique, les actions qu'il effectue sont irrémédiables. Le degré de criticité est fonction des conséquences des déviations par rapport à un comportement nominal, conséquences qui peuvent concerner la sûreté des personnes et des biens, la sécurité, l'accomplissement des missions, la rentabilité économique ;
* la réactivité : ces systèmes doivent interagir avec leur environnement à une juste vitesse qui est imposée par ce dernier. Ceci induit donc des impératifs de temps de réponse. C'est pour cette raison que l'informatique embarquée est souvent basée sur un système temps réel ;
* l'autonomie : Les systèmes embarqués doivent en général être autonomes, c'est-à-dire remplir leur mission pendant de longues périodes sans intervention humaine. Cette autonomie est nécessaire lorsque l'intervention humaine est impossible, mais aussi lorsque la réaction humaine est trop lente ou insuffisamment fiable ;
* la robustesse, la sécurité et la fiabilité : L'environnement est souvent hostile, pour des raisons physiques (chocs, variations de température, impact d'ions lourds dans les systèmes spatiaux, etc.) ou humaines (malveillance). C'est pour cela que la sécurité (au sens de résistance aux malveillances) et la fiabilité (au sens de continuité de service) sont souvent rattachées à la problématique des systèmes embarqués ;
* et enfin des contraintes non fonctionnelles, comme l'occupation mémoire, la consommation d'énergie, etc.

## Langages de programmation

Plusieurs langages de programmation se veulent destinés à cet usage parmi lesquels se trouve Ada. Des langages proches de la machine comme le C et dans une moindre mesure le C++ sont aussi utilisés. Le langage assembleur reste encore un choix approprié pour les systèmes soumis à des contraintes sévères de temps réel.
Pour la programmation des systèmes embarqués critiques, des langages construits différemment ont été proposés :
* les langages sur une sémantique formelle : synchrones Esterel, Lustre, Signal, Lucid Synchrone... Ces langages sont actuellement utilisés avec succès dans l'industrie avionique. Par exemple, EADS utilise l'atelier logiciel SCADE, basé sur le langage Lustre, pour programmer le logiciel embarqué de contrôle/commande de vol des Airbus (A340/600 et A380) ;
* les langages à base de méthode formelle : méthode B, Rocq, etc. Ces langages sont actuellement utilisés avec succès dans l'industrie des transports. Depuis 1995, de nombreux pilotes automatiques de métros ont été développés avec la méthode B, comme la ligne 14 du métro parisien (METEOR) réalisé en 1998.
Actuellement on assiste à l'émergence des systèmes embarqués basés sur des technologies logicielles et matérielles libres. Les processeurs libres sont de type LEON ou Open Risc. Pour le logiciel, on trouve Linux comme choix de référence. Les architectures MIPS sont très largement utilisées.
Le transfert des fichiers binaires s'effectue généralement dans des formats 'texte' standardisés tel que le format S-Record de Motorola ou le format HEX (Intel) de Intel.

## Langages de modélisation

Il existe plusieurs langages de spécification et de conception pour l'informatique embarquée :
* Modeling and Analysis of Real Time and Embedded systems (MARTE) : profil UML standardisé par l'Object Management Group (OMG) ;
* Specification and Description Language (SDL) pour les télécoms et plus généralement les systèmes communicants ;
* Architecture Analysis and Design Language (AADL) orienté sur les aspects d'architecture ;
* Structured Analysis for Real Time (SART) convient à la modélisation des systèmes embarqués temps réel ;
* Méthode formelle : permet de garantir des propriétés notamment celle de sureté (comme la Méthode B).